Em dùng con PIC16F84A để thiết kế mạch. Em muốn kiểm tra xem nếu RA0, RA1 và RA2 high thì đợi 1 khoảng thờii gian sau sẽ check lại, nếu tiếp tục như vậy thì set RB0 high. Code của em như sau:
#include <P16F84A.INC>
org 00;
Initial MOVLW 00 ; use to clear port A and port B
MOVWF PORTA ; clear port A
MOVWF PORTB ; clear port B
BSF STATUS,5 ; switch to bank 1
MOVLW 07h ;
MOVWF TRISA ; set RA0,RA1,RA2 be input
BCF STATUS,5 ; switch to bank 0
MOVLW 64h ; COUNT value
MOVWF 01h ; COUNT Memory address
START CALL Check
CALL Delay
CALL Check
MOVLW 01h ; set 1 for RB0
MOVWF PORTB
Check BTFSS PORTA,0 ; check RA0
GOTO START
BTFSS PORTA,1 ; check RA1
GOTO START
BTFSS PORTA,2 ; check RA2
GOTO START
return
Delay decfsz COUNT,1 ; delay loop
GOTO Delay
return
End
Khi biên dịch trong MPLAB nó báo lỗi là :
ASM 8 : Register in operand not in bank 0. Ensure that bank bits are correct.
Rồi em thử mô phỏng trong Proteus, cung cấp nguồn 5V cho RA0,RA1,RA2 và nối 1 con LED vào RB0 nhưng nó không sáng. Code của em sai chỗ nào vậy các bác? Giúp em với.
#include <P16F84A.INC>
org 00;
Initial MOVLW 00 ; use to clear port A and port B
MOVWF PORTA ; clear port A
MOVWF PORTB ; clear port B
BSF STATUS,5 ; switch to bank 1
MOVLW 07h ;
MOVWF TRISA ; set RA0,RA1,RA2 be input
BCF STATUS,5 ; switch to bank 0
MOVLW 64h ; COUNT value
MOVWF 01h ; COUNT Memory address
START CALL Check
CALL Delay
CALL Check
MOVLW 01h ; set 1 for RB0
MOVWF PORTB
Check BTFSS PORTA,0 ; check RA0
GOTO START
BTFSS PORTA,1 ; check RA1
GOTO START
BTFSS PORTA,2 ; check RA2
GOTO START
return
Delay decfsz COUNT,1 ; delay loop
GOTO Delay
return
End
Khi biên dịch trong MPLAB nó báo lỗi là :
ASM 8 : Register in operand not in bank 0. Ensure that bank bits are correct.
Rồi em thử mô phỏng trong Proteus, cung cấp nguồn 5V cho RA0,RA1,RA2 và nối 1 con LED vào RB0 nhưng nó không sáng. Code của em sai chỗ nào vậy các bác? Giúp em với.
Comment