好简单的程序(实时时钟程序)
ORG 0000H ;程序执行开始地址
LJMP start ;跳至START执行
ORG 0003H ;外中断0中断入口地址
RETI ;中断返回(不开中断)
ORG 000BH ;定时器T0中断入口地址
RETI ;中断返回(不开中断)
ORG 0013H ;外中断1中断入口地址
RETI ;中断返回(不开中断)
ORG 001BH ;定时器T1中断入口地址
reti ;中断返回(不开中断)
ORG 0023H ;串行口中断入口地址
RETI
start:
mov a,#0ffh
mov p2,a
mov a,p2
anl a,#0fh
mov dptr,#tab
movc a,@a+dptr
mov p1,a
clr p3.0
jmp start
tab: db 48h,0deh,64h,0c4h,0d2h,0c1h,41h,0dch,40h,0c0h,10h,00h,29h,08h,21h,31h
end
;delay:
;mov r7,#0feh
;de1:mov r6,#32h
;de2:nop
;nop
;djnz r6,de2
;djnz r7,de1
;ret
;end
;;;修正版
ORG 0000H ;程序执行开始地址
LJMP start ;跳至START执行
ORG 0003H ;外中断0中断入口地址
RETI ;中断返回(不开中断)
ORG 000BH ;定时器T0中断入口地址
RETI ;中断返回(不开中断)
ORG 0013H ;外中断1中断入口地址
RETI ;中断返回(不开中断)
ORG 001BH ;定时器T1中断入口地址
ljmp continue ;中断返回(不开中断)
ORG 0023H ;串行口中断入口地址
RETI ;中断返回(不开中断)
start: mov r4,#08h
mov r0,#30h
clear: mov @r0,#00h
inc r0
djnz r4,clear
MOV SP,#68H
MOV R4,#14H
MOV TH1,#3cH
MOV TL1,#0B0H
MOV TMOD,#10H
SETB TR1
mov ip,#08h
mov ie,#88h
loop:lcall disp
jmp loop
CONTINUE:PUSH ACC ;实时时钟
PUSH PSW
CLR ET1
MOV TH1,#3cH
MOV TL1,#0B0H
DEC R4
mov a,r4
JNZ RETURN
MOV R4,#14H
INC 30H
MOV A,30H
CJNE A,#0AH,RETURN
MOV 30H,#00H
INC 31H
MOV A,31H
CJNE A,#09H,RETURN
MOV 31H,#00H
INC 32H
MOV A,32H
CJNE A,#0AH,RETURN
MOV 32H,#00H
INC 33H
MOV A,33H
CJNE A,#06H,RETURN
MOV 33H,#00H
RETURN:pop psw
pop acc
setb et1
reti
disp:
CLR TI
MOV A,30H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
SETB P1.0
LCALL DELAY
CLR P1.0
MOV A,31H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
SETB P1.1
LCALL DELAY
CLR P1.1
RET
TAB: DB 0EDH,24H,0CEH,6EH,27H,6BH,0EBH,2CH,0EFH,6FH
delay:
mov r7,#0eh
de1:mov r6,#32h
de2:nop
nop
djnz r6,de2
djnz r7,de1
ret
end
发表时间:2004年12月20日22:05:16