没有合适的资源?快使用搜索试试~ 我知道了~
51单片机汇编语言万年历完美版..pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 112 浏览量
2022-06-08
12:40:28
上传
评论
收藏 213KB PDF 举报
温馨提示
试读
11页
。。。
资源推荐
资源详情
资源评论
;**************万年历制作 BY----信工七
班 ;**************************** ;***************************** ;--------------
--------------------------------------------------------------------------- RCK BIT P0.5 SCK BIT
P0.4 DAT BIT P0.7 RST BIT P0.6 BUZZER BIT P1.3 ;蜂鸣器 BYTE EQU 40H ;用于
给锁存器送入数据 GEWEI EQU 41H ;用于存放数码管显示的第一位 SHIWEI EQU
42H ;用于存放数码管显示的第二位 BAIWEI EQU 43H ;用于存放数码管显示的第三
位 QIANWEI EQU 44H ;用于存放数码管显示的第四位 TEMP1 EQU 45H TEMP2
EQU 46H COUNT EQU 47H ;用于扩展定时器计数时间 KTIME EQU 49H TEMP
EQU 50H DMS EQU 51H ;用于存放运动秒表的最低位 DSECOND EQU 52H ;用于
存放运动秒表的秒 DMIN EQU 53H ;用于存放运动秒表的分钟 CLKMIN EQU 54H ;
用于存放闹钟分钟 CLKHOUR EQU 55H ;用于存放闹钟时 CLKF EQU 56H ;用于闹
钟开启的标志位 ;-------------------------------------------------------------------------------------
---- ORG 0000H AJMP MAIN ORG 000BH ;定时器 0 中断入口地址 AJMP T0_INT
ORG 001BH ;定时器 1 中断入口地址 AJMP
T1_INT ;********************************主程序
************************************************* ;--------------------------------
--------------------------------------------------------- MAIN: MOV R4,#00 ;计数秒 MOV
R5,#50 ;计数分 MOV R6,#15 ;计数时 MOV R0,#14H ;2013 年 MOV R1,#0DH MOV
R2,#6 ;6 月 MOV R3,#18 ;18 日 MOV COUNT,#0H MOV A,#5 ;开始使 A 不等于 0,
用于后面的判断 MOV CLKMIN,#0H MOV CLKHOUR,#0H MOV CLKF,#0H MOV
SP,#60H MOV TMOD,#11H ;设置定时器 0 为工作模式 1 MOV TH0, #03CH MOV
TL0, #0B0H ;定时 50000 us MOV TH1, #0D8H MOV TL1, #0F0H ;定时 1000us=1MS
SETB ET0 ;允许定时器中断 SETB ET1 SETB EA ;允许全局中断 SETB PT0 ;定时器
中断设为高优先级 SETB EX0 ;允许外部中断 SETB EX1 SETB IT0 ;外部中断设为下
降沿触发 SETB IT1 SETB TR0 ;启动定时器 ;--------------------------------------- START:
MOV DPTR,#TABLE LJMP KEYSCAN ;首先进入时间显示,由于地址相差太远所
以代码顺序有所改变 ;-------------------------------------- MARK2: LJMP KEYSCAN ;地
址差跳远无法跳转,此处进行中间跳转到时间显示界面 KEYCLK: MOV A,CLKF ;
此处为闹
钟设置刚进入时的程序,由按键 s12 进入 JNZ KEYCLKF ;进入后通过 CLKF
来判断闹钟功能是否启动,未启动时正常 ;显示为 SHOWCLKF,启动时显示
SHOWCLKF1,此两种显示差一个数码管最低位标志的点 KEYCLK1: LCALL
SHOWCLK ;此处判定未启动闹钟功能时的显示 LCALL S4 ;在闹钟界面查看有无切
换显示模式(此处也可认为是确定 ;按键)的按键 s4 按下, JZ MARK2 ;按下后跳
转到时间显示 LCALL S8 ;在闹钟显示界面下查看启动闹钟功能的键 s8 是否按下
MOV A,CLKF JNZ KEYCLKF ;按下后显示 SHOWCLKF1 的显示 LCALL S16 ;未按
下则显示没有闹钟标志的数码管显示,再查看有无进 ;入调节 s16 的键按下,
CJNE A,#7EH,KEYCLK1 ;未按下继续闹钟界面显示 KEYCLK2: LCALL SCLKMIN ;
按下进入调节 MOV A,CLKMIN ;显示设置分钟的调节 MOV TEMP,A LCALL
KEYSUB1 ;通过加减键 s8,s12 来设置闹钟 LCALL KEYADD1 MOV A,TEMP
SUBB A,#60 ;调节分钟不超过 59 JC REMAIN0 MOV TEMP,#0 REMAIN0: MOV
A,TEMP MOV CLKMIN,A LCALL S16 ;查看有无进入调节 s16 的键按下, CJNE
A,#7EH,KEYCLK2 ;未按下继续显示分钟调节 KEYCLK3: LCALL SCLKHOUR ;按
下进入显示时调节 MOV A,CLKHOUR MOV TEMP,A ;送入参数,通过加减键进行
调节设置 LCALL KEYSUB2 LCALL KEYADD2 MOV A,TEMP SUBB A,#24 ;时的
设置不超过 24 JC REMAIN1 MOV TEMP,#0 ;超过 24 置 0 REMAIN1: MOV
A,TEMP MOV CLKHOUR,A LCALL S16 CJNE A,#7EH,KEYCLK3 ;再次判断有无
调节的切换键(按 3 次为确定)按下 KEYCLK4: LCALL SHOWCLK ;按下后跳转
为闹钟的界面正常显示 LCALL S4 ;再判断有无切换显示模式的键按下,按下跳转
显示 JZ KEYSCAN LCALL S8 ;再判断有无启动(关闭)闹钟功能的键按下 MOV
A,CLKF ;根据 CLKF(闹钟功能启动)的标志位显示不同的闹钟界面 JNZ
KEYCLKF ;闹钟功能启动,跳转到 KEYCLKF 显示闹钟启动标记 GOON: LCALL
S16 ;未启动则又判断有无进入调节的键按下 CJNE A,#7EH,KEYCLK4 ;没有按下继
续正常显示 AJMP KEYCLK2 ;按下后重复 KEYCLK2 开始的内容 KEYCLKF:
LCALL SHOWCLK1 ;显示出闹钟功能启动后的标记(数码管最低位标记) LCALL
S4 ;查看有无切换显示模式(闹钟设置确定后)键按下 JZ KEYSCAN ;按下后跳转
到显示时间的界面 LCALL S8 ;未按则扫描开启(关闭)闹钟功能的键按下 MOV
A,CLKF JZ KEYCLK4 ;根据闹钟功能的标记位跳转显示,若判断闹钟功能关闭则 ;
跳转到 KEYCLK4 显示无标志的闹钟 LCALL S16 ;若判断闹钟功能开启则扫描有无
进入调节的按键 s16 按下
CJNE A,#7EH,KEYCLKF ;未按下则继续显示有标记的闹钟界面 AJMP
KEYCLK2 ;按下后则又进入调节界面 KEYCLK2 ;-------------------------------------------
------- MARK3: LJMP MARK1 ;地址差跳远无法跳转,此处进行中间跳转到闹钟界
面 ;---------------------------------------------------- KEYSCAN: LCALL HOURMINUTE ;
显示时间 PUSH ACC ;为 s12 的判断先把 A 入堆栈,否则 s12 出会出现判断错误
LCALL S4 ;查看有无切换键 s4 按下,按下跳转显示秒 JZ KEYSCAN1 MOV
A,CLKF ;在显示时间时判断闹钟功能是否开启,未开则跳转显示 JZ GO MOV
A,R6 ;判断是否与闹钟设置的时间相等,R6---时 CJNE A,CLKHOUR,GO MOV
A,R5 ;R5--分 CJNE A,CLKMIN,GO LCALL SOUND ;闹钟功能开启,时分相等,则
闹铃响 ;-------------------------------------------------- GO: POP ACC ; 如果不 pop,A=0
一直成立,此时出现错误跳转 LCALL S12 ;查看有无进入闹钟设置的键按下 JZ
MARK3 ; 按下则跳入显示闹钟设置界面 LCALL S16 ;查看有无进入调节键 s16 按
下,按下进入调节 CJNE A,#7EH,KEYSCAN ;未按下则 继续显示时间 SMINUTE:
LCALL MINUTE ;s16 按下后进入分调节显示 MOV TEMP,R5 ;将要调节的分钟送入
函数参数 LCALL KEYADD1 ;进入调节后查看是否按下加法键 s8,按下加一
LCALL KEYSUB1 ;进入调节后查看是否按下减法键 s8,按下减一 MOV A,TEMP
SUBB A,#60 ;调节不超过 60 JC REMAIN2 MOV TEMP,#0 REMAIN2: MOV
R5,TEMP ;把运算完后的分钟送出显示 LCALL S16 CJNE A,#7EH,SMINUTE ;没有
s16 按下,继续显示分调节 SHOUR: LCALL HOUR ;按下后进入显示时调节 MOV
TEMP,R6 ;R6 为 装时 的寄存器,送入参数进行调节 LCALL KEYADD2 LCALL
KEYSUB2 MOV A,TEMP SUBB A,#24 ;调节不超过 24 JC REMAIN3 MOV
TEMP,#0 REMAIN3: MOV R6,TEMP LCALL S16 ; 再次按下 s16 键可确定时间调节
完成 CJNE A,#7EH,SHOUR AJMP KEYSCAN ;调节完后重新正常显示时间 ;----------
剩余10页未读,继续阅读
资源评论
春哥111
- 粉丝: 1w+
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 在matlab中通过yalmip平台调用cplex求解器,可用于求解MILP问题,适合于综合能源系统优化求解(注释完全,可直接运
- MT8852B labview 驱动,MT8852B labview 代码,蓝牙测试仪MT8852B代码,蓝牙低功耗测试
- 导照片2.0(只适合索尼微单)
- KMP算法python代码实现与使用场景.docx
- 基于MATLABCPLEX 的机组最优组合,成功求解表格化,图示化的机组组合结果(注释完全,可直接运行)(文档加Matlab源码
- postgresql-9.5.3-1-windows-x64
- 基于大数据和产业互联网的企业数字化转型.rar
- MySQL5与PHP5开发的相册系统源码.zip
- 支持linux CentOS安装 jdk1.8的jenkins
- Clover四叶草引导中文版
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功