athen2005
06-01-2013, 04:46 PM
Em có 1 đoạn code thế này, mong các a chỉ bảo làm sao để nó đếm tới 1 số nào đó do mình định thì dừng lại tại đó (VD: 2013 chẳng hạn).
; DUNG NGAT TIMER0 DE QUET LED (4 LED 7 DOAN), TIMER1 DELAY 1S
;-----------------------------
NGHIN EQU 127
TRAM EQU 126
CHUC EQU 125
DONVI EQU 124
MOV TMOD, #21H
;-----------------------------
; KHAI BAO CAC LOAI NGAT
;-----------------------------
ORG 0000H
LJMP BEGIN
ORG 000BH
LJMP TIMER0_ISR ; NGAT TIMER0
ORG 001BH
LJMP TIMER1_ISR ; NGAT TIMER1
;-----------------------------
BEGIN :
MOV CHUC, #0
MOV DONVI, #0
MOV NGHIN, #0
MOV TRAM, #0
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1
MOV TH1, #(-200) ; THOI GIAN QUET 1 LED 200US
MOV TL1, #(-200)
MOV TH0, #HIGH (-50000) ; DAT THOI GIAN TRE
MOV TL0, #LOW (-50000)
MOV R5, #20 ; 20 * 50000 *1US = 1S
MOV R0, #127
MOV R1, #0 ; DINH VI TRI CAC LED
SJMP $
;----------------------------
TIMER1_ISR :
PUSH ACC
MOV P1, #00H
MOV A, @R0 ;LAY DIA CHI GIAN TIEP NOI DUNG CUA O NHO 127
MOV DPTR, #MALED7
MOVC A, @A + DPTR
MOV P2, A
DEC R0 ; GIAM DIA CHI
MOV A, R1
MOV DPTR, #MACOT ; DINH VI TRI MO LED
MOVC A, @A + DPTR
MOV P1, A
INC R1
CJNE R1, #4, EXIT_TIMER1
MOV R0, #127
MOV R1, #0
EXIT_TIMER1:
POP ACC
RETI
;------------------------------
TIMER0_ISR:
MOV TH0, #HIGH (-50000)
MOV TL0, #LOW (-50000)
DJNZ R5, EXIT_TIMER0
MOV R5, #20 ; !!! GAN 200 THI MOI DUNG 1 S ????
;--------------
INC DONVI
MOV A, DONVI
CJNE A, #10, EXIT_TIMER0
MOV DONVI, #0
;--------------
INC CHUC
MOV A, CHUC
CJNE A, #10, EXIT_TIMER0
MOV CHUC, #0
;--------------
INC TRAM
MOV A, TRAM
CJNE A, #10, EXIT_TIMER0
MOV TRAM, #0
;--------------
INC NGHIN
MOV A, NGHIN
CJNE A, #2, EXIT_TIMER0
MOV NGHIN, #2
;--------------
EXIT_TIMER0:
RETI
;-----------------------------
MALED7 : DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
MACOT : DB 08H,04H,02H,01H
;-----------------------------
END
; DUNG NGAT TIMER0 DE QUET LED (4 LED 7 DOAN), TIMER1 DELAY 1S
;-----------------------------
NGHIN EQU 127
TRAM EQU 126
CHUC EQU 125
DONVI EQU 124
MOV TMOD, #21H
;-----------------------------
; KHAI BAO CAC LOAI NGAT
;-----------------------------
ORG 0000H
LJMP BEGIN
ORG 000BH
LJMP TIMER0_ISR ; NGAT TIMER0
ORG 001BH
LJMP TIMER1_ISR ; NGAT TIMER1
;-----------------------------
BEGIN :
MOV CHUC, #0
MOV DONVI, #0
MOV NGHIN, #0
MOV TRAM, #0
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1
MOV TH1, #(-200) ; THOI GIAN QUET 1 LED 200US
MOV TL1, #(-200)
MOV TH0, #HIGH (-50000) ; DAT THOI GIAN TRE
MOV TL0, #LOW (-50000)
MOV R5, #20 ; 20 * 50000 *1US = 1S
MOV R0, #127
MOV R1, #0 ; DINH VI TRI CAC LED
SJMP $
;----------------------------
TIMER1_ISR :
PUSH ACC
MOV P1, #00H
MOV A, @R0 ;LAY DIA CHI GIAN TIEP NOI DUNG CUA O NHO 127
MOV DPTR, #MALED7
MOVC A, @A + DPTR
MOV P2, A
DEC R0 ; GIAM DIA CHI
MOV A, R1
MOV DPTR, #MACOT ; DINH VI TRI MO LED
MOVC A, @A + DPTR
MOV P1, A
INC R1
CJNE R1, #4, EXIT_TIMER1
MOV R0, #127
MOV R1, #0
EXIT_TIMER1:
POP ACC
RETI
;------------------------------
TIMER0_ISR:
MOV TH0, #HIGH (-50000)
MOV TL0, #LOW (-50000)
DJNZ R5, EXIT_TIMER0
MOV R5, #20 ; !!! GAN 200 THI MOI DUNG 1 S ????
;--------------
INC DONVI
MOV A, DONVI
CJNE A, #10, EXIT_TIMER0
MOV DONVI, #0
;--------------
INC CHUC
MOV A, CHUC
CJNE A, #10, EXIT_TIMER0
MOV CHUC, #0
;--------------
INC TRAM
MOV A, TRAM
CJNE A, #10, EXIT_TIMER0
MOV TRAM, #0
;--------------
INC NGHIN
MOV A, NGHIN
CJNE A, #2, EXIT_TIMER0
MOV NGHIN, #2
;--------------
EXIT_TIMER0:
RETI
;-----------------------------
MALED7 : DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
MACOT : DB 08H,04H,02H,01H
;-----------------------------
END