c51单片机时钟程序汇编语言,单片机电子时钟课设汇编语言代码和proteus仿真
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仿真相关推荐
- 用四位数码管和DS3231时钟模块做车载电子时钟
用四位数码管和DS3231时钟模块做车载电子时钟 本来咱车上收音模块上是有一个时钟的,但换了导航以后,发现时钟不好用了:主界面上有时钟,但位置太靠左侧,俺的大手握方向盘刚好挡住视线,而且在播放音乐时, ...
- 51单片机数字电子钟设计(数电课设,含时间显示、校准、整点报时、闹钟功能)
51单片机数字电子钟设计(数电课设,含时间显示.校准.整点报时.闹钟功能) 首先展示硬件设计部分,此处采用proteus仿真演示.其中液晶屏上面一行显示的是实际时间,下面一行显示的是设定闹钟时间.通过 ...
- 89c51单片机汇编语言,AT89C2051时钟程序——MCS51单片机汇编程序
;; AT89C2051时钟程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;定时器T0.T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁用, ...
- 4位数码管中间的冒号c语言,单片机4位数码管电子时钟(带闹钟,冒号为秒闪烁)...
经过几天的努力,第一个51单片机电子时钟终于出炉了,通过4位数码管来显示时间,系统晶振11.0592MHZ,仿真图中用二极管代替时钟冒号闪烁,非门代替三极管,让仿真速度与真实速度达到一致,本设计用了6 ...
- 【单片机毕业设计】【mcuclub-312】数字时钟 | 万年历电子时钟 | 多功能时钟 | 智能闹钟 | 语音电子时钟
设计简介: 项目名:基于单片机的数字时钟的设计-普通版.基于单片机的智能闹钟的设计.基于单片机的语音电子时钟的设计 单片机:STC89C52 功能简介: 1.通过DS18B20测量环境温度 2.通过D ...
- STC51单片机20——DS1302可调电子时钟1602显示proteus仿真
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned ...
- c语言钟表程序,制作一个电子时钟C语言版
平常我们常见的电子时钟,能够显示当下的时分秒信息,并且能够随时变化递增,记录着时间的流逝.今天,我要用c语言来制作这样一款电子时钟,看时间这把杀猪刀如何"一刀一刀"溜掉.我会一步一 ...
- 电子密码锁课设单片机c语言,基于51单片机的电子密码锁综合课程设计
5.大容量片内EEPROM,擦写次数10万次以上 EEPROM,擦写次数10万次以上,擦写次数10万次以上 6.ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器 7.共8通道10位高速A ...
- 单片机中段程序_单片机外部中断详解及程序
单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态.比如一个电子时钟,它会按时.分.秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来 ...
- c语言电子时钟课程设计报告,电子时钟嵌入式课程设计报告
<电子时钟嵌入式课程设计报告>由会员分享,可在线阅读,更多相关<电子时钟嵌入式课程设计报告(19页珍藏版)>请在人人文库网上搜索. 1.合海大学计算机信息工程学院(常州)课程设 ...
最新文章
- 为什么企业选择年底裁员?如何选择一个正确的公司!
- mysql 的 前导零_将前导零添加到MySQL列?
- linux alias命令参数及用法详解--linux定义命令别名alias
- 10个CSS和jQuery的加载中(loading)动画效果实现
- Java 8 CompletableFuture 浅入
- SQL语句增加字段、修改字段、修改类型、修改默认值
- Tokyo Tyrant安装和配置
- 删除win10开始菜单中程序的目录
- Destoon数据库配置文件在哪_Mybatis 系列 2:Mybatis 的两种配置文件
- building a new horizon
- 解决从json文件中获取不到数据的问题
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- java 水仙花数问题(java50道经典编程题)
- 海湾gst5000协议号_海湾GST5000主机操作说明
- 删掉wps后台烂进程
- 一元多项式加减法的C++实现
- idea本地项目上传至远程仓库及一些常见问题的解决办法
- Jmeter Springboot Redisson分布式锁并发订单操作(下单、取消单、完成单、加库存)
- 【21岁扶墙当CTO】之无人机篇(2/n)
- Bootstrap 响应式开发(2021.10.13)