简介:
全部proteus仿真文件及KEIL汇编文件打包成附件。

HOR DATA 30H
MIN DATA 31H
SEC DATA 32H
SECTIME DATA 33H
F1S BIT 00H
HOROUT  DATA P0
MINOUT  DATA P2
SECOUT  DATA P3
;32760晶振除12等于2730,定时中断用15*182实现(自动重装),要求中断程序小
;或者用定时器直接计数2730,但是加上自动修正,中断就直接执行显示程序,主程序空循环
ORG 0000H 
LJMP START 
ORG 0003H 
RETI 
ORG 000BH 
LJMP INTT0 
ORG 0013H 
RETI 
ORG 001BH 
RETI 
ORG 0023H 
RETI 
ORG 002BH 
RETI
ORG 0030H 
START:
MOV SP,#50H
mov  tl0,#04ah             
mov  th0,#04ah             
setb  tr0             
mov  tmod,#02h             
setb  et0             
setb  ea
ACALL CSH
LOP:
JNB F1S,LOP1
CLR F1S
ACALL ADDTIME
ACALL XS
LOP1:
SJMP LOP
ADDTIME: ;增秒
        inc SEC                 ;增秒
        mov a,SEC
        cjne a,#60,RET1  ;判断秒是否大于60
        mov SEC,#0      ;大于60,秒清零
        inc MIN                  ;增分
        mov a,MIN
        cjne a,#60,RET1  ;判断分是否大于60
        mov MIN,#0               ;大于60,分清零
        inc HOR                  ;增时
        mov a,HOR
        cjne a,#24,RET1  ;判断时是否大于24
        mov HOR,#0               ;时清零
RET1:RET
CSH:
MOV HOR, #00
MOV MIN ,#00
MOV SEC ,#00
RET
XS:
MOV A,HOR
ACALL HBCD
CPL A
MOV HOROUT,A
MOV A,MIN
ACALL HBCD
CPL A
MOV MINOUT,A
MOV A,SEC
ACALL HBCD
CPL A
MOV SECOUT,A
RET
INTT0:
PUSH ACC
INC SECTIME
MOV A,SECTIME
CJNE A,#15,T0REI
SETB F1S
MOV SECTIME,#0
CPL P1.0
T0REI:
POP ACC
RETI
YS: 
RET
;**********************************************************************
;HBCD: 单字节十六进制整数转换成单字节BCD码整数
;入口条件:待转换的单字节十六进制整数在累加器A中。
;出口信息:转换后的BCD码整数(十位和个位)仍在累加器A中,百位在R3中。
;影响资源:PSW、A、B、R3    堆栈需求:  2字节
HBCD:  MOV  B,#100  ;分离出百位,存放在R3中
   DIV   AB
   MOV  R3,A
   MOV  A,#10  ;余数继续分离十位和个位
   XCH  A,B
   DIV   AB
   SWAP  A
   ORL   A,B   ;将十位和个位拼装成BCD码
   RET
END