mình đã viết lại chương trình của bạn và test ok trên poteus 7.5 sp3, chưa có điều kiện test thực tế nhưng như vậy cũng tạm ok rùi, bạn tham khảo nhé
Code:
LIST P=16F877A ; LIST DIRECTIVE TO DEFINE PROCESSOR
#INCLUDE <P16F877A.INC> ; PROCESSOR SPECIFIC VARIABLE DEFINITIONS
DATA_LED EQU H'0B'
D_VAL1 EQU H'0C'
D_VAL2 EQU H'0D'
D_VAL3 EQU H'0E'
;================================================= =============
ORG 0x00
GOTO MAIN
;================================================= =============
ORG 0x04
;GOTO INTER_GLOBAL (NHAY DEN VUNG NGAT)
;================================================= =============
ORG 0x05 ;DIA CHI la`m VIEC BAN DAU CUA HAM MAIN
MAIN ;CHUONG TRINH CHINH
BANKSEL TRISB
CLRF TRISB
BANKSEL PORTB
ABC
MOVLW B'10000000'
MOVWF DATA_LED ; NAP GIA TRI W VAO DATA_LED
MOVWF PORTB ; LED 7 SANG (TUONG UNG PORTB.7 = 1)
CALL DELAY
LOOP
RRF DATA_LED,1 ; XOAY PHAI DATA_LED
MOVF DATA_LED,0 ; NAP GIA TRI DATA_LED NGUOC TRO LAI W
MOVWF PORTB ; LAY GIA TRI W XUAT RA PORTB
CALL DELAY
BTFSS DATA_LED,0 ; NEU PORTB.0 = 0 THÌ NHAY DEN LOOP,NEU = 1 THÌ NHAY DEN ABC
GOTO LOOP
GOTO ABC
;================================================= ===========
DELAY ; DELAY FUNCTION
BANKSEL D_VAL1
MOVLW D'255'
MOVWF D_VAL1 ;D_VAL1 = 255
MOVWF D_VAL2 ;D_VAL2 = 255
MOVLW D'20'
MOVWF D_VAL3
LOOP_DELAY
DECFSZ D_VAL1
GOTO LOOP_DELAY
NOP
DECFSZ D_VAL2
GOTO LOOP_DELAY
NOP
DECFSZ D_VAL3
GOTO LOOP_DELAY
RETURN ; EXIT DELAY FUNCTION
;================================================= =========================
END