单片机汇编设计数字钟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ORG0000H

AJMP MAIN

ORG000BH

AJMP PTF0

ORG0033H

TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;不带小数点

TAB1:DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;带小数点

TAB2:DB01H,02H,04H,08H,10H,20H,40H,80H,00H;自检a--h

PTF0:PUSH PSW;保护现场PSW,ACC进栈PUSH ACC;选工作寄存器1区

MOV TH0,#0ECH;T0初始化

MOV TL0,#78H

DJNZ36H,PTFOR

MOV36H,#92;判断中断次数计数单元减1是否为0

XRL33H,#0FFH

DJNZ37H,PTFOR;中断次数计数单元36H,37H

MOV37H,#2

MOV A,32H;秒单元32H加1

ADD A,#1

DA A;十进制调整

MOV32H,A

CJNE A,#60H,PTFOR;判断单元是否计数到60

MOV32H,#0

MOV A,31H;分单元31H加1

ADD A,#1

DA A

MOV31H,A

CJNE A,#60H,PTFOR

MOV31H,#0

MOV32H,#0

MOV A,30H;时单元30H加1

ADD A,#1

DA A

MOV30H,A

CJNE A,#24H,PTFOR;判断计数单元是否到24

MOV30H,#0

MOV31H,#0

MOV32H,#0

PTFOR:POP ACC;恢复现场,ACC,PSW退栈POP PSW

RETI

MAIN:

MOV P2,#0FH;数码管自检

MOV DPTR,#TAB2

SS:MOV R2,#00H

SST:MOV A,R2

MOVC A,@A+DPTR

JZ SS

MOV P0,A

INC R2

ACALL DEL3

MOV A,P0

CJNE A,#80H,SST

MOV30H,#00H;状态数初始化

MOV31H,#00H

MOV32H,#00H

MOV33H,#00H

MOV36H,#92

MOV37H,#2

MOV SP,#0EFH;栈指针初始化

MOV TH0,#0ECH

MOV TL0,#78H

MOV TMOD,#1

MOV IP,#2

MOV IE,#82H;中断初始化

SETB TR0;允许T0计数

LOOP:ACALL LOP0

JB P1.0,XX;校时按键按下但未松开(低电平)转移到校时模块ACALL JS1

XX:JB P1.1,YY;校分按键按下但未松开(低电平)转移到校分模块ACALL JF1

ACALL LOP0

YY:AJMP LOOP

JS1:LCALL DEL

JS2:JB P1.0,JS3;校时按键松开(高电平)校时

ACALL LOP0

AJMP JS2

JS3:MOV A,30H

ADD A,#1

DA A

MOV30H,A

CJNE A,#24H,RT;校时到24时,采用24进制计时

MOV30H,#0

JF1:LCALL DEL

JF2:JB P1.1,JF3;校分按键松开(高电平)校分

ACALL LOP0

AJMP JF2

JF3:MOV A,31H

ADD A,#1

DA A

MOV31H,A

CJNE A,#60H,RT;分为60进制计时

MOV31H,#0

MOV A,30H

INC A,

MOV30H,A;分校时到60时,时自加一

RT:RET

LOP0:MOV R6,33H

CJNE R6,#00H,ZZ;保证秒的闪烁,采用小数点的闪烁

MOV DPTR,#TAB1

LJMP LOP1

ZZ:MOV DPTR,#TAB

LOP1:MOV A,31H

ANL A,#0FH;利用与0F从中取出分个位,显示分个位

MOVC A,@A+DPTR

MOV P0,A

MOV P2,#0FFH

MOV P2,#0EFH;保证数码管的显示不变,原理来源于任务5 ACALL DEL

MOV A,31H

ANL A,#0F0H;利用与F0相与取出分十位,显示分十位

SWAP A;交换高低半字节

MOVC A,@A+DPTR

MOV P0,A

MOV P2,#0FFH

MOV P2,#0DFH

ACALL DEL

MOV A,30H;时个位的显示(原理与分同)

ANL A,#00FH

MOVC A,@A+DPTR

MOV P0,A

MOV P2,#0FFH

MOV P2,#0BFH

ACALL DEL

MOV A,30H;时十位的显示

ANL A,#0F0H

SWAP A

MOVC A,@A+DPTR

MOV P0,A

MOV P2,#0FFH

MOV P2,#7FH

ACALL DEL

RET

DEL:MOV R4,#20;延时程序1

DEL1:MOV R5,#40

DEL2:DJNZ R5,DEL2

DJNZ R4,DEL1

RET

DEL3:MOV R7,#0FFH;延时程序2

DEL4:MOV R6,#0FFH

DEL5:DJNZ R6,DEL5

DJNZ R7,DEL4

RET

END

相关文档
最新文档