找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1205|回复: 0
打印 上一主题 下一主题
收起左侧

电子时钟程序

[复制链接]
跳转到指定楼层
楼主
ID:269769 发表于 2018-1-1 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        ORG 0000H
        AJMP MAIN
        ORG 000BH
        AJMP TIME
        ORG 0300H      
MAIN:
         mov 20H,#00H
         MOV 21H,#00H
         MOV 22H,#00H
         MOV 23H,#00H
         MOV IP,#02H            ;IP,IE初始化
         MOV IE,#82H
         MOV TMOD,#01H            ;设定定时器工作方式1
         MOV TL0,#0B0H
         MOV TH0,#3CH
         SETB TR0          ;启动定时T0
         MOV SP,#40H            ;重设堆栈指针
NEXT:        LCALL DISP                ;调用显示子程序
         LCALL KEY                  ;调用按键检测子程序
         JZ NEXT                     
         LCALL ANKEY            ;调用按键处理子程序
         SJMP NEXT                ;重新循环
         NOP
         NOP
         NOP
;定时中断处理程序:************************************************
TIME:       PUSH ACC                  ;保护现场
         PUSH PSW
         MOV TL0,#0B0H               ;赋定时初值
         MOV TH0,#3CH
         INC 20H                      ;
         MOV A,20H
         CJNE A,#20,RETI1
         MOV 20H,#00H                 ;一秒钟时间到
         MOV A,21H
         ADD A,#01H
         DA A
         MOV 21H,A
         CJNE A,#60H,RETI1
         MOV 21H,#00H                 ;一分钟时间到
         MOV A,22H
         ADD A,#01H
         DA A
         MOV 22H,A
         CJNE A,#60H,RETI1
         MOV 22H,#00H                 ;一小时时间到
         MOV A,23H
         ADD A,#01H
         DA A
         MOV 23H,A
         CJNE A,#24H,RETI1
         MOV 23H,#00H                 ;到时间达到24小时,清零.
RETI1:      POP PSW                    ;恢复现场
         POP ACC
         RETI                   ;中断返回
         NOP
         NOP
;****************************************************
;显示子程序
;****************************************************
DISP:         ANL 2FH,#10H          ;处理小数点
         MOV A,21H               ;处理秒21H-->2DH,2EH
         ANL A,#0FH
         ORL A,2FH
         MOV 2FH,A
         MOV A,21H
         ANL A,#0F0H
         SWAP A
         MOV 2EH,A
         ANL 2DH,#10H
         MOV A,22H               ;处理分钟22H-->2CH,2DH
         ANL A,#0FH
         ORL A,2DH
         MOV 2DH,A
         MOV A,22H
         ANL A,#0F0H
         SWAP A
         MOV 2CH,A
         ANL 2BH,#10H
         MOV A,23H               ;处理小时23H-->2AH,2BH
         ANL A,#0FH
         ORL A,2BH
         MOV 2BH,A
         MOV A,23H
         ANL A,#0F0H
         SWAP A
         MOV 2AH,A
         MOV R0,#2FH           ;显示偏移量
         MOV R3,#06H
         MOV DPTR,#TABLE
         MOV A,#0BFH
LOOP1:     
   MOV B,A
         MOV P2,A
         MOV A,@R0
         MOVC A,@A+DPTR
         MOV P0,A         ;送显示
         MOV R2,#80H          ;延时
         DJNZ R2,$
         DEC R0
         MOV A,B
         RR A
         DJNZ R3,LOOP1                 ;循环显示
         RET
TABLE:      DB 28h,7eh,0a2h,62h,74h,61h,21h                  ;不带小数点
         DB 7ah,20h,60h,00,00,00,00,00,00
         DB 8H,5eH,82H,42H,54H,41H,1H,5aH  ;带小数点
         DB 00H,40H,00,00,00,00,00,00
         NOP
         NOP
;*****************************************************
;按键判断程序
;*****************************************************
KEY: MOV P3,#0FFH
         MOV A,P3
         CPL A
         ANL A,#3CH
         JZ RETX                       ;无键按下则返回
         LCALL DISP
         LCALL DISP
         MOV A,P3
         CPL A
         ANL A,#3CH
         JZ RETX                       ;键盘去抖动。
         MOV R6,A                  ;将键值存入R6
LOOP2:     LCALL DISP
         MOV A,P3
         CPL A
         ANL A,#3CH
         JNZ LOOP2                 ;等待键释放
         MOV A,R6
RETX:        RET
         NOP
         NOP
;*****************************************************
;按键处理子程序
;*****************************************************
ANKEY:     CLR EA                        ;关中断
LX:    MOV A,R6
         JB ACC.2,L1               ;是功能键转L1
         JB ACC.3,L2               ;是确认键转L2
         JB ACC.4,L3               ;是减1键转L3
         JNB ACC.5,L12                   ;不是增1键,转L12
         JB 2BH.4,L6               ;判断使哪一位(时、分、秒)的值加1
         JB 2DH.4,L8
         JB 2FH.4,L9
L12: LCALL DISP
         LCALL DISP
         LCALL KEY                  ;判断有无键按下。
         JZ L12
         LJMP LX
L2:    MOV 25H,#00H                 ;确认键处理程序
         CLR 2BH.4
         CLR 2DH.4
         CLR 2FH.4
         SETB EA
         RET
L3:    JB 2BH.4,L61            ;增一键处理程序
         JB 2DH.4,L81
         JB 2FH.4,L91
         AJMP L12
L1:    MOV A,25H                   ;功能键处理程序
         JZ LB1
         JB ACC.0,LB2
         JB ACC.1,LB3
         JNB ACC.2,L12
LB1: MOV 25H,#01H                 ;25H单元是标志位,(25H=01H调节时单元的值
         SETB 2BH.4
         CLR 2DH.4
         CLR 2FH.4
         AJMP L12
LB3: MOV 25H,#04H                 ;25H单元是标志位,(25H=01H调节秒单元的值
         SETB 2FH.4
         CLR 2DH.4
         CLR 2BH.4
         AJMP L12
LB2: MOV 25H,#02H             ;25H单元是标志位,(25H=01H调节分单元的值
         SETB 2DH.4
         CLR 2BH.4
         CLR 2FH.4
         AJMP L12
L61: AJMP L611
L81: AJMP L811
L91: AJMP L911
L6:    MOV A,23H               ;时加一
         ADD A,#01H
         DA A
         MOV 23H,A
         CJNE A,#24H,L15
L15: JC L112
         MOV 23H,#00H
L112:        AJMP L12
L8:    MOV A,22H               ;分加一
         ADD A,#01H
         DA A
         MOV 22H,A
         CJNE A,#60H,L16
L16: JC L112
         MOV 22H,#00H
         AJMP L12
L9:    MOV A,21H               ;秒加一
         ADD A,#01H
         DA A
         MOV 21H,A
         CJNE A,#60H,L17
L17: JC L112
         MOV 21H,#00H
         AJMP L12
L611:        MOV A,23H               ;时减一
         ADD A,#99H
         DA A
         MOV 23H,A
         CJNE A,#99H,L112
         MOV 23H,#23H
         AJMP L12
L811:        MOV A,22H               ;分减一
         ADD A,#99H
         DA A
         MOV 22H,A
         CJNE A,#99H,L112
         MOV 22H,#59H
         AJMP L12
L911:        MOV A,21H               ;秒减一
         ADD A,#99H
         DA A
         MOV 21H,A
         CJNE A,#99H,L112
         MOV 21H,#59H
         AJMP L12
         NOP
         NOP
         END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表