DeepTheorem
Üye
- Katılım
- 11 Ara 2011
- Mesajlar
- 4
- Puanları
- 1
Merhaba,
PIC16F84 assembly programlama ile ilgili problemim var.
A Portuna bağlı butonlarım var.3 tane
B Portunu çıkış olarak yapacağım.
Örneğin a0,a1,a2'ye
Sırayla 0,0,0 geldiğinde PORTB'deki 0 biti yakan programı yaptım.Giriş durumunu sürekli kontrol edecek.
Yine sırasıyla: 0,0,1 geldiğinde PortB'deki 1.biti yakacak.Ve diğer durumları...
Benim takıldığım nokta;
Assembly'de kodlar sırasıyla işletiliyor.
Eğer Buton 0,0,1 olduğu durumda ikinci programa geçsin.Mesala 0,1,0 olduğu durumda
üçüncü programa geçsin.Ve girişleri sürekli kontrol etsin.
Kısaca giriş durumları değiştiğinde ana program alt programlara yönlendirsin.
Umarım anlatmışımdır.
Teşekkürler
Yaptığım kadarı
LIST P=16F84
INCLUDE "P16F84.INC"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;INCLUDE "P16F84.INC"
;__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC
;Kod koruma var : _CP_ON
;Kod koruma yok : _CP_OFF
;Power-on-reset var : _PWRTE_ON
;Power-on-reset yok : _PWRTE_OFF
;Watchdog timer devrede : _WDT_ON
;Watchdog timer devrede yok : _WDT_OFF
;RC Osilatör : _RC_OSC
CLRF PORTB
BSF STATUS,5
CLRF TRISB
MOVLW h'FF'
MOVWF TRISA
BCF STATUS,5
ANA_PROGRAM
TEST_PORT0
BTFSC PORTA,0
BTFSC PORTA,1
BTFSC PORTA,2
GOTO TEST_PORT0
BSF PORTB,0
CALL GECIKME
MOVLW h'00'
MOVWF PORTB
GOTO TEST_PORT1
TEST_PORT1
BTFSS PORTA,0
BTFSC PORTA,1
BTFSC PORTA,2
GOTO TEST_PORT1
BSF PORTB,1
CALL GECIKME
MOVLW h'00'
MOVWF PORTB
TEST_PORT2
BTFSC PORTA,0
BTFSS PORTA,1
BTFSC PORTA,2
GOTO TEST_PORT2
BSF PORTB,2
CALL GECIKME
MOVLW h'00'
MOVWF PORTB
GOTO ANA_PROGRAM
GECIKME
MOVLW D'99'
MOVWF 0X4D
MOVLW D'167'
MOVWF 0X4E
DECFSZ 0X4E
GOTO $-1
DECFSZ 0X4D
GOTO $-5
RETURN
END
PIC16F84 assembly programlama ile ilgili problemim var.
A Portuna bağlı butonlarım var.3 tane
B Portunu çıkış olarak yapacağım.
Örneğin a0,a1,a2'ye
Sırayla 0,0,0 geldiğinde PORTB'deki 0 biti yakan programı yaptım.Giriş durumunu sürekli kontrol edecek.
Yine sırasıyla: 0,0,1 geldiğinde PortB'deki 1.biti yakacak.Ve diğer durumları...
Benim takıldığım nokta;
Assembly'de kodlar sırasıyla işletiliyor.
Eğer Buton 0,0,1 olduğu durumda ikinci programa geçsin.Mesala 0,1,0 olduğu durumda
üçüncü programa geçsin.Ve girişleri sürekli kontrol etsin.
Kısaca giriş durumları değiştiğinde ana program alt programlara yönlendirsin.
Umarım anlatmışımdır.
Teşekkürler
Yaptığım kadarı
LIST P=16F84
INCLUDE "P16F84.INC"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;INCLUDE "P16F84.INC"
;__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC
;Kod koruma var : _CP_ON
;Kod koruma yok : _CP_OFF
;Power-on-reset var : _PWRTE_ON
;Power-on-reset yok : _PWRTE_OFF
;Watchdog timer devrede : _WDT_ON
;Watchdog timer devrede yok : _WDT_OFF
;RC Osilatör : _RC_OSC
CLRF PORTB
BSF STATUS,5
CLRF TRISB
MOVLW h'FF'
MOVWF TRISA
BCF STATUS,5
ANA_PROGRAM
TEST_PORT0
BTFSC PORTA,0
BTFSC PORTA,1
BTFSC PORTA,2
GOTO TEST_PORT0
BSF PORTB,0
CALL GECIKME
MOVLW h'00'
MOVWF PORTB
GOTO TEST_PORT1
TEST_PORT1
BTFSS PORTA,0
BTFSC PORTA,1
BTFSC PORTA,2
GOTO TEST_PORT1
BSF PORTB,1
CALL GECIKME
MOVLW h'00'
MOVWF PORTB
TEST_PORT2
BTFSC PORTA,0
BTFSS PORTA,1
BTFSC PORTA,2
GOTO TEST_PORT2
BSF PORTB,2
CALL GECIKME
MOVLW h'00'
MOVWF PORTB
GOTO ANA_PROGRAM
GECIKME
MOVLW D'99'
MOVWF 0X4D
MOVLW D'167'
MOVWF 0X4E
DECFSZ 0X4E
GOTO $-1
DECFSZ 0X4D
GOTO $-5
RETURN
END
Son düzenleme: