找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机汇编语言3按键数码管时钟程序与仿真

[复制链接]
跳转到指定楼层
楼主
基于51单片机汇编语言3按键数码管时钟程序与仿真,能显示晨、分、秒,能实现设置功能。
全部资料51hei下载地址: 三按键8位数码管时钟.zip (44.08 KB, 下载次数: 63)



S_SET        BIT                P1.0                                                ;数字钟秒控制位
M_SET        BIT                P1.1                                                ;分钟控制位
H_SET        BIT                P1.2                                                ;小时控制位
SECOND        EQU                30H
MINUTE        EQU                31H
HOUR        EQU                32H
TCNT        EQU                34H
                ORG                00H
                SJMP        START
                ORG                0BH
                LJMP        INT_T0
START:        MOV                DPTR,#TABLE
                MOV                HOUR,#0                                                ;初始化
                MOV                MINUTE,#0
                MOV                SECOND,#0
                MOV                TCNT,#0
                MOV                TMOD,#01H
                MOV                TH0,#(65536-50000)/256                ;定时50毫秒
                MOV                TL0,#(65536-50000)MOD 256
                MOV                IE,#82H
                SETB        TR0
;****************************************************
;判断是否有控制键按下,是哪一个键按下
A1:                LCALL        DISPLAY               
                JNB                S_SET,S1
                JNB                M_SET,S2
                JNB                H_SET,S3                                
                LJMP        A1
        S1:        LCALL        DELAY                ;去抖动
                JB                S_SET,A1
               
                INC                SECOND                ;秒值加1
                MOV                A,SECOND
                CJNE        A,#60,J0        ;判断是否加到60秒
                MOV                SECOND,#0
                LJMP        K1
        S2:        LCALL        DELAY
                JB                M_SET,A1
               
        K1:        INC                MINUTE                ;分钟值加1
                MOV                A,MINUTE
                CJNE        A,#60,J1        ;判断是否加到60分
                MOV                MINUTE,#0
                LJMP        K2
        S3:        LCALL        DELAY
                JB                H_SET,A1
               
        K2:        INC                HOUR                ;小时值加1
                MOV                A,HOUR
                CJNE        A,#24,J2        ;判断是否加到24小时
                MOV                HOUR,#0
                MOV                MINUTE,#0
                MOV                SECOND,#0
                LJMP        A1
;****************************************************
;等待按键抬起
J0:                JB                S_SET,A1
                LCALL        DISPLAY
                SJMP        J0
J1:                JB                M_SET,A1
                LCALL        DISPLAY
                SJMP        J1
J2:                JB                H_SET,A1
                LCALL        DISPLAY
                SJMP        J2
;***********************************************
;定时器中断服务程序,对秒,分钟和小时的计数
INT_T0:        MOV                TH0,#(65536-50000)/256
                MOV                TL0,#(65536-50000)MOD 256               
                INC                TCNT
                MOV                A,TCNT
                CJNE        A,#20,RETUNE        ;计时1秒
                INC                SECOND
                MOV                TCNT,#0
                MOV                A,SECOND
                CJNE        A,#60,RETUNE
                INC                MINUTE
                MOV                SECOND,#0
                MOV                A,MINUTE
                CJNE        A,#60,RETUNE
                INC                HOUR
                MOV                MINUTE,#0
                MOV                A,HOUR
                CJNE        A,#24,RETUNE
                MOV                HOUR,#0
                MOV                MINUTE,#0
                MOV                SECOND,#0
                MOV                TCNT,#0
RETUNE:        RETI
;******************************************
;显示控制子程序
DISPLAY:MOV                A,SECOND        ;显示秒
                MOV                B,#10
                DIV                AB
                CLR                P3.6
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.6
                MOV                A,B
                CLR                P3.7
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.7

                CLR                P3.5
                MOV                P0,#40H                ;显示分隔符
                LCALL        DELAY
                SETB        P3.5

                MOV                A,MINUTE        ;显示分钟
                MOV                B,#10
                DIV                AB
                CLR                P3.3
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.3
                MOV                A,B
                CLR                P3.4
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.4

                CLR                P3.2
                MOV                P0,#40H                ;显示分隔符
                LCALL        DELAY
                SETB        P3.2

                   MOV                A,HOUR                ;显示小时
                MOV                B,#10
                DIV                AB
                CLR                P3.0
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.0
                MOV                A,B
                CLR                P3.1
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.1
                RET

TABLE:         DB                 3FH,06H,5BH,4FH,66H
                DB                6DH,7DH,07H,7FH,6FH
DELAY:        MOV                R6,#10
D1:                MOV                R7,#250
                DJNZ        R7,$
                DJNZ        R6,D1
                RET

                END


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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