Yêu cầu: khi cấp nguồn hiển thị số 0, khi chân INT0 bị tác động thì hiển thị số 1... cứ như vậy cho đến số 9. Khi LED 7 thanh hiển thị số 9 thì chân INT0 bị tác động thì không lặp lại mà vẫn hiển thị số 9, muốn lặp lại trừ khi ta RESET. Bạn nào biết thì giúp mình nha, thanks
Code vẫn chưa chạy:
DEM EQU R1
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EX0_ISR
ORG 0030H
MAIN: SETB TCON.2
MOV IE,#81H ;10000001B
SJMP $
MOV DEM,#00 ;NAP CHO DEM GIA TRI BAN DAU (DEM CHUA SO DEM)
EX0_ISR: MOV DPTR,#MA_LED7SEG ;CHI CON TRO DPTR VAO BANG MA_LED7SEG
LAP: MOV A,DEM
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
INC DEM
CJNE DEM,#10,EXIT ;SO SANH R1 VOI 10 NEU CHUA = 10 THI NHAY TOI EXIT CON NEU = 100 THI XOA NO VOI 0
SJMP LAP
EXIT: RETI
DELAY:
MOV R2,#5 ;NAP GIA TRI 5 VAO THANH GHI R0
LOOP: MOV TMOD,#01H ;CHON TIME 0 CHE DO 1
MOV TH0,HIGH(-50000) ;NAP GIA TRI -50000 VAO BYTE CAO CUA TIME 0
MOV TL0,LOW(-50000) ;NAP GIA TRI -50000 VAO BYTE THAP CUA TIME 0
SETB TR0 ;CHO BO DINH THOI 0 HOAT DONG
JNB TF0,$ ;NHAY TAI CHO DE CHO CO TRAN TF0
CLR TF0
CLR TR0
DJNZ R2,LOOP
RET
MA_LED7SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
Code vẫn chưa chạy:
DEM EQU R1
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EX0_ISR
ORG 0030H
MAIN: SETB TCON.2
MOV IE,#81H ;10000001B
SJMP $
MOV DEM,#00 ;NAP CHO DEM GIA TRI BAN DAU (DEM CHUA SO DEM)
EX0_ISR: MOV DPTR,#MA_LED7SEG ;CHI CON TRO DPTR VAO BANG MA_LED7SEG
LAP: MOV A,DEM
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
INC DEM
CJNE DEM,#10,EXIT ;SO SANH R1 VOI 10 NEU CHUA = 10 THI NHAY TOI EXIT CON NEU = 100 THI XOA NO VOI 0
SJMP LAP
EXIT: RETI
DELAY:
MOV R2,#5 ;NAP GIA TRI 5 VAO THANH GHI R0
LOOP: MOV TMOD,#01H ;CHON TIME 0 CHE DO 1
MOV TH0,HIGH(-50000) ;NAP GIA TRI -50000 VAO BYTE CAO CUA TIME 0
MOV TL0,LOW(-50000) ;NAP GIA TRI -50000 VAO BYTE THAP CUA TIME 0
SETB TR0 ;CHO BO DINH THOI 0 HOAT DONG
JNB TF0,$ ;NHAY TAI CHO DE CHO CO TRAN TF0
CLR TF0
CLR TR0
DJNZ R2,LOOP
RET
MA_LED7SEG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
Comment