ORG 0000H

AJMP MAIN

ORG 000BH

LJMP INTT0

ORG 0030H

MAIN:

MOV SP,#60H ;确立堆栈区

MOV PSW,#00H

MOV R0,#20H   ;RAM区首地址

MOV R7,#5FH ;RAM区单元个数

QL:

MOV @R0,#00H ;RAM清零

INC R0

DJNZ R7,QL

MOV IP,#02H ;IP初始化,优先定时器0

MOV IE,#82H ;IE初始化

MOV TMOD,#01H ;定时器0方式1工作

LCALL PP ;调P.子程序

NEXT:

LCALL KEY ;按键检测子程序

JB ACC.0,RUNF ;A键按下运行

LCALL DISP ;调用显示子程序

SJMP NEXT

RUNF:

LCALL OUTT ;调传送子程序

LCALL TIME ;开电子钟

JK:

LCALL DISP

LCALL KEY

JZ JK

LCALL ANKEY        ;调用键功能子程序

LCALL DISP

SJMP JK

;P点显示子程序

PP:

MOV 37H,#12 ;P点编码送寄存器

MOV R0,#30H ;P点编码送寄存器

MOV R7,#07H

PPP:

MOV @R0,#10  ;???

INC R0

DJNZ R7,PPP

RET

;键扫描子程序

KEY:

LCALL KEYS ;调用键值处理子程序

JZ EXIT ;没有键按下转到返回

LCALL DISP

LCALL DISP ;调用显示去抖动

LCALL KEYS

JZ EXIT

MOV B,20H ;保存键值

KEYSF:

LCALL KEYS

JZ KEYY ;键释放,转到恢复键值

LCALL DISP ;调显示子程序延时

AJMP KEYSF ;等到键释放

KEYY:

MOV A,B ;键值送20H单元保存??

EXIT:RET

KEYS:

MOV P1,#0FFH ;先向P1口写1

MOV A,P1 ;P1口值送A

CPL A

ANL A,#0FH ;保存P1口的低4位

MOV 20H,A ;A值送20H保存

RET

;键功能子程序

ANKEY:

CLR EA ;关中断

CHECK:

JB TR0,YXZ ;判断是否运行

K0:

CJNE A,#01H,K1

AJMP RUN ;转运行

K1:

CJNE A,#02H,K2

AJMP KEY1 ;转时调整

K2:

CJNE A,#40H,K3

AJMP KEY2 ;转分调整

K3:

CJNE A,#08H,OUT          ;转

AJMP KEY3 ;转秒调整

YXZ:

JB ACC.0,STOP

AJMP OUT

KEY1:

MOV R0,#45H ;时调整

LCALL ADD1 ;调加一子程序

CLR C

CJNE A,#24H,OUTT ;转传送显示数据子程序

ACALL CLR0 ;调时间清理子程序

AJMP OUTT

KEY2:

MOV R0,#43H ;分调整

LCALL ADD1

CLR C

CJNE A,#60H,OUTT

ACALL CLR0

AJMP OUTT

KEY3:

MOV R0,#41H ;秒调整

ACALL ADD1

CLR C

CJNE A,#60H,OUTT

ACALL CLR0

;传送显示数据子程序

OUTT:

MOV 30H,40H ;秒显示单元40H-41H

MOV 31H,41H

MOV 32H,#11 ;"-"

MOV 33H,42H ;分显示单元42H-43H

MOV 34H,43H

MOV 35H,#11 ;"-"

MOV 36H,44H ;时显示单元44H-45H

MOV 37H,45H

RET

STOP:

CLR TR0

RET

RUN:

LCALL TIME ;调运行电子钟子程序

OUT:

SETB EA ;无键按下或完成功能跳出

RET

;运行电子钟子程序

TIME:

SETB EA

MOV TL0,#0B0H  ;3CB0H

MOV TH0,#3CH

MOV R4,#20  ;50ms,20次循环

SETB TR0 ;启动定时器0

RET

;定时器0中断处理子程序

INTT0:

PUSH ACC

PUSH PSW

CLR ET0

CLR TR0

MOV TL0,#0B0H  ;重新设置定时初值

MOV TH0,#3CH

SETB TR0

DJNZ R4,OUTT0  ;1秒到

ADDSS:

MOV R4,#14H  ;20次计数

MOV R0,#41H  ;秒十位

ACALL ADD1

CLR C

CJNE A,#60H,ADDMM ;1分到

ADDMM:

JC OUTT0

ACALL CLR0

MOV R0,#43H

ACALL ADD1

CLR C

CJNE A,#60H,ADDHH ;1小时到

ADDHH:

JC OUTT0

ACALL CLR0

MOV R0,#45H

ACALL ADD1

CLR C

CJNE A,#24H,HOUR ;1天到

HOUR:

JC OUTT0

ACALL CLR0

OUTT0:

MOV 30H,40H ;秒显示单元40H-41H

MOV 31H,41H

MOV 32H,#11 ;"-"

MOV 33H,42H ;分显示单元42H-43H

MOV 34H,43H

MOV 35H,#11 ;"-"

MOV 36H,44H ;时显示单元44H-45H

MOV 37H,45H

POP PSW

POP ACC

SETB ET0

RETI

;时间清理子程序

CLR0:

CLR A

MOV @R0,A

DEC R0

MOV @R0,A

RET

;加一子程序

ADD1:

MOV A ,@R0  ;取十位

DEC R0

SWAP A

ORL A,@R0  ;组合十位与个位

ADD A,#01H  ;加1

DA A ;十进制调整

MOV R3,A  ;暂存

ANL A,#0FH  ;屏蔽十位

MOV @R0,A  ;放入个位单元

MOV A,R3  ;取值

INC R0

SWAP A

ANL A,#0FH  ;屏蔽个位

MOV @R0,A  ;放入十位单元

MOV A,R3  ;数值放入A中等待判断

RET

;显示子程序

DISP:

MOV R1,#30H  ;显示缓冲存储单元首地址

MOV R2,#80H  ;从右至左显示

DISP1:

MOV P2,R2  ;送位控

MOV A,@R1

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P0,A  ;送段控

ACALL DL  ;延时

MOV A,R2  ;???

JB ACC.0,DISP2          ;从右至左8位LED显示一遍

RR A

INC R1

MOV R2,A

AJMP DISP1

DISP2:RET

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0CH

;显示延时子程序

DL:

MOV R6,#14H

DL1:

MOV R7,#19H

DL2:

DJNZ R7,DL2

DJNZ R6,DL1

RET

END

c51单片机时钟程序汇编语言,单片机电子时钟课设汇编语言代码和proteus仿真相关推荐

  1. 用四位数码管和DS3231时钟模块做车载电子时钟

    用四位数码管和DS3231时钟模块做车载电子时钟 本来咱车上收音模块上是有一个时钟的,但换了导航以后,发现时钟不好用了:主界面上有时钟,但位置太靠左侧,俺的大手握方向盘刚好挡住视线,而且在播放音乐时, ...

  2. 51单片机数字电子钟设计(数电课设,含时间显示、校准、整点报时、闹钟功能)

    51单片机数字电子钟设计(数电课设,含时间显示.校准.整点报时.闹钟功能) 首先展示硬件设计部分,此处采用proteus仿真演示.其中液晶屏上面一行显示的是实际时间,下面一行显示的是设定闹钟时间.通过 ...

  3. 89c51单片机汇编语言,AT89C2051时钟程序——MCS51单片机汇编程序

    ;; AT89C2051时钟程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;定时器T0.T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁用, ...

  4. 4位数码管中间的冒号c语言,单片机4位数码管电子时钟(带闹钟,冒号为秒闪烁)...

    经过几天的努力,第一个51单片机电子时钟终于出炉了,通过4位数码管来显示时间,系统晶振11.0592MHZ,仿真图中用二极管代替时钟冒号闪烁,非门代替三极管,让仿真速度与真实速度达到一致,本设计用了6 ...

  5. 【单片机毕业设计】【mcuclub-312】数字时钟 | 万年历电子时钟 | 多功能时钟 | 智能闹钟 | 语音电子时钟

    设计简介: 项目名:基于单片机的数字时钟的设计-普通版.基于单片机的智能闹钟的设计.基于单片机的语音电子时钟的设计 单片机:STC89C52 功能简介: 1.通过DS18B20测量环境温度 2.通过D ...

  6. STC51单片机20——DS1302可调电子时钟1602显示proteus仿真

    #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint  unsigned ...

  7. c语言钟表程序,制作一个电子时钟C语言版

    平常我们常见的电子时钟,能够显示当下的时分秒信息,并且能够随时变化递增,记录着时间的流逝.今天,我要用c语言来制作这样一款电子时钟,看时间这把杀猪刀如何"一刀一刀"溜掉.我会一步一 ...

  8. 电子密码锁课设单片机c语言,基于51单片机的电子密码锁综合课程设计

    5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数10万次以上,擦写次数10万次以上 6.ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器 7.共8通道10位高速A ...

  9. 单片机中段程序_单片机外部中断详解及程序

    单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态.比如一个电子时钟,它会按时.分.秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来 ...

  10. c语言电子时钟课程设计报告,电子时钟嵌入式课程设计报告

    <电子时钟嵌入式课程设计报告>由会员分享,可在线阅读,更多相关<电子时钟嵌入式课程设计报告(19页珍藏版)>请在人人文库网上搜索. 1.合海大学计算机信息工程学院(常州)课程设 ...

最新文章

  1. 为什么企业选择年底裁员?如何选择一个正确的公司!
  2. mysql 的 前导零_将前导零添加到MySQL列?
  3. linux alias命令参数及用法详解--linux定义命令别名alias
  4. 10个CSS和jQuery的加载中(loading)动画效果实现
  5. Java 8 CompletableFuture 浅入
  6. SQL语句增加字段、修改字段、修改类型、修改默认值
  7. Tokyo Tyrant安装和配置
  8. 删除win10开始菜单中程序的目录
  9. Destoon数据库配置文件在哪_Mybatis 系列 2:Mybatis 的两种配置文件
  10. building a new horizon
  11. 解决从json文件中获取不到数据的问题
  12. Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
  13. java 水仙花数问题(java50道经典编程题)
  14. 海湾gst5000协议号_海湾GST5000主机操作说明
  15. 删掉wps后台烂进程
  16. 一元多项式加减法的C++实现
  17. idea本地项目上传至远程仓库及一些常见问题的解决办法
  18. Jmeter Springboot Redisson分布式锁并发订单操作(下单、取消单、完成单、加库存)
  19. 【21岁扶墙当CTO】之无人机篇(2/n)
  20. Bootstrap 响应式开发(2021.10.13)

热门文章

  1. cygwin安装wget
  2. matlab求方差、均方值和功率
  3. 自动控制理论(9)——奈奎斯特稳定判据
  4. 很多网友反映QQ被盗
  5. 图像处理一之-摄像头二值化处理-(什么是二值化)
  6. oppo r11s鸿蒙固件,OPPO R11s官方固件rom刷机包_OPPO R11s系统升级更新包下载
  7. 人工智能项目案例:AI+企业智能化管理
  8. 免费实用的录屏工具!支持全屏、特定窗口、选定区域录制,支持添加水印、嵌入摄像头!
  9. 网络地址与直接广播地址有关计算
  10. 让机器学习“如何学习”!从零开始读懂MAML!