??51??????????????
Posted by ~Ray @ 2007-10-23 17:22:56
ORG 0000h ajmp main ORG 000BH ;中断入口 AJMP IT0P ORG 0050hmain:MOV SP,#40H ;设定堆栈初值 MOV 79h,#00H MOV 7AH,#00H MOV 7BH,#00H MOV 7CH,#00H MOV 7DH,#00H MOV 7EH,#00H ;显示单元初始化L4: MOV R1,#7eH ;置显示缓冲指针初值L1: acall dir ;调显示子程序circle1:acall ks1 jz l1 ;查是否有键按下 acall keyi ;调键盘子程序 cjne a,#0dh,L2 ;是否d键 ajmp DO1 是跳到do1L2: MOV @R1,A DEC R1 CJNE R1,#78H,LOOP1 AJMP L4 ;显示方式DO1: MOV TMOD,#01H MOV TH0,#3ch MOV TL0,#0B0H ;定时器初始化 ACALL HB1 ;调合并 SETB ET0 SETB TR0 SETB EA ;开中断HERE:ACALL DIR 调显示 ACALL CF1 acall ks1 ;查是否有键按下 jz l1 acall keyi ;调键盘子程序 cjne a,#0eh,here ;是否是e 键 sjmp mian 是清显示,时间 SJMP HERE ORG 0300HIT0P:PUSH PSW displace ACC PUSH DPH PUSH DPL ;中断保护 MOV TH0,#3CH MOV TL0,#0B0H ;重置定时器初值 DJNZ 63H,go 是否1s MOV 63H,#0AH 重置中断次数 MOV A,#01H 秒加1 ADD A,62H DA A MOV 62H,A CJNE A,#60H,go MOV 62H,#00H ;比较是60s清秒单元 MOV A,#01H ;分加 1 ADD A,61H DA A MOV 61H,A CJNE A,#60H,RETURN MOV 61H,#00H ; 比较是60m清分单元 MOV A,#01H 时加1 ADD A,60H DA A MOV 60H,A CJNE A,#24H,go MOV 60H,#00H 比较是24h清时单元go:POP DPH POP DPL POP ACC POP PSW ;中断恢复 RETI ;中断返回CF1: MOV R5,62H MOV A,R5 ANL A,#0F0H change A MOV 7AH,A MOV A,R5 ANL A,#0FH MOV 79H,A MOV R5,61H MOV A,R5 ANL A,#0F0H SWAP A MOV 7CH,A MOV A,R5 ANL A,#0FH MOV 7BH,A MOV R5,60H MOV A,R5 ANL A,#0F0H SWAP A MOV 7EH,A MOV A,R5 ANL A,#0FH MOV 7DH,A RET ;单元合并HB1: MOV 63H,#0AH MOV A,7AH change A ADD A,79H MOV 62H,A MOV A,7CH change A ADD A,7BH MOV 61H,A MOV A,7EH SWAP A ADD A,7DH MOV 60H,A RET ;单元拆分 ORG 0400Hkeyi:mov R2,#0feh mov R4,#00hLk4:MOV dptr,#0ffddh mov A,R2 movx @dptr,a inc dptr movx A,@dptr jb acc.0,lone mov a,#00h ajmp lkplone:jb acc.1,ltw0 mov a,#08h AJMP lkpLTW0:jb acc.2,LTHR mov a,#10h AJMP LKPLTHR:JB ACC.3,next mov A,#18hlkp:add a,r4 push acclk3:acall dir acall ks1 jnz lk3 pop acc mov dptr,#tabel1 movc a,@a+dptr retnext:inc r4 mov a,r2 jnb acc.7,knd rl a mov r2,a ajmp lk4knd:retks1:mov dptr,#0ffddh mov a,#00h movx @dptr,a inc dptr movx a,@dptr cpl a anl a,#0fh rettabel1:db 7,4,8,5,9,6,0ah,0bh,1,0,2,0fh,3,0eh,0ch,0dh ;键盘子程序org 0500hdir: mov r0,#79h mov r3,#01h mov a,r3ld0: mov dptr,#0ffddh movx @dptr,a mov a,@r0 mov dptr,#TAB movc a,@a+dptr mov dptr,#0ffdchdir1:movx @dptr,a acall dl1ms inc r0 mov a,r3 jb acc.5,ld1 rl a mov r3,a ajmp ld0 ld1: retTAB:db 0c0h,0f9h,0a4h,0b0h,99h,92h db 82h,0f8h,80h,90h,88h,83h db 0c6h,0a1h,86h,8eh,8ch,0c1h db 0ceh,91h,89h,0c7h,0ffh ;显示子程序dl1ms:mov r7,#02hdl:mov r6,#0ffhdl6:djnz r6,dl6 djnz r7,dl RET ;延时子程序 END[ADVERTHERE]Related article:
http://chinabyx2008.bokee.com/viewdiary.18198053.html
0 Comments:
No comments have been posted yet!