i/o örneği

Başlatan taner89, 25 Nisan 2011, 11:59:16

taner89

arkadaşlar mikroişlemci programlamaya yeni başlıyorum..msp430g2231 in input/output portlarıın kullanımına çalıştım ve aşağıdaki programı yazdım..program işliyor.ancak uzun oldu galiba.kısaltmalar yapılabilirmi?ve bunun gibi yorumlarınızı almak istiyorum.


;*******************************************************************************
;//LDR devresi P1.1 e,tsop p1.2 ye bağlıdır.ortam karanlık olduğunda p1.6 daki
;//röle tetiklenip ışık yanacaktır.ayrıca ir led tsop u tetiklediğinde p1.7 deki
;//röle tetiklenip dc motor çalışacaktır..     
;
;   
;*******************************************************************************
#include  "msp430g2231.h"
;-------------------------------------------------------------------------------
            ORG     0F800h                  ; Program Reset
;-------------------------------------------------------------------------------
RESET          mov.w   #0280h,SP               ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop WDT
                    clrc                             ;elde sıfırla
                    clrz                             ;zero bayrağını sıfırla
                    clrn
                    clr.b  P1OUT                     ;p1out u sıfırla
                    clr.b  P1DIR                     ;P1DIr ı sıfırla
                    mov.b  #0C0h,&P1DIR              ;P1.6 ve P1.7 çıkış,diğerleri giriş

MAIN             bit.b  #04h,&P1IN                ;p1.2=1??
                     jnc    MOTOR_DUR                 ;elde 1 değilse atla

MAIN2            bit.b  #02h,&P1IN                ;P1.1=0??
                      jnc    ISIK_KAPAT                ;elde 0 ise atla
DEVAM            bit.b  #06h,&P1IN                ;P1.1 veya p1.0 1 mi??
                      jc     KARANLIK_VEYA_MOTOR_ON    ;elde 1 ise atla
           
                                         
KARANLIK_VEYA_MOTOR_ON             bit.b #02h,&P1IN    ;P1.1=1??
                                                          jc    KARANLIK      ;elde 1 ise atla
KARANLIK_VE_MOTOR_ON_2_BAS     bit.b #04h,P1IN     ;P1.2=1??
                                                          jc     MOTOR_ON     ;elde 1 ise atla                                               
                       
KARANLIK                                          bis.b #040h,&P1OUT                ;p1.6=1
                                                          jmp KARANLIK_VE_MOTOR_ON_2_BAS
 
MOTOR_ON                                        bis.b  #080h,&P1OUT        ;p1.7=1
                                                          jmp    MAIN
ISIK_KAPAT                                       bic.b  #040h,&P1OUT        ;p1.6=0
                                                          jmp    DEVAM
MOTOR_DUR                                       bic.b  #080h,P1OUT         ;p1.7=0
                                                         jmp    MAIN2
                       
                       
;-------------------------------------------------------------------------------
;           Interrupt Vectors
;-------------------------------------------------------------------------------
            ORG     0FFFEh                  ; MSP430 RESET Vector
            DW      RESET                   ;
            END

atioky_216

Şunu C de yapsak ne güzel olur.8086da asm den gına geldi zaten.

Ben de yeni başladım ilk çalışan programım ;

https://www.picproje.org/index.php/topic,33084.0.html