ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:30.83KB ,
资源ID:3425466      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3425466.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(6位LED时钟设计的源程序清单.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

6位LED时钟设计的源程序清单.docx

1、6位LED时钟设计的源程序清单6源程序清单(1)参考汇编程序;*; 课程设计程序:单片机时钟 ;;*;*设计说明*;以下程序能用于24小时计时,能作为秒表使用,能定时闹铃1min(也可关),;能整点报时,能倒计时定时。使用方法:开机后在00:00:00 起开始计时,;(1)长按P1.0进入调分状态:分单元闪烁,按P1.0加l,按P1.1减1。;再长按P1.0进入时调整状态,时单元闪烁,加减调整同调分,长按P1.0退出调整状态。;(2)按下P1.1进入秒表状态:按P1.2暂停,再按P1.2秒表清零,再按P1. 2秒表;又启动,按P1.1退出秒表回到时钟状态。;(3)按P1.3进入设定闹时状态:0

2、0:00:-,;可进行分设定,按P1.2分加l,再按P1.3为时调整00:00:-,按P1.2时加1,;按P1.1闹铃有效,显示为00:00:-,再按P1.1闹铃无效(显示00:00:-,),; 按P1. 3调闹钟结束。在闹铃时可按P1.3停闹,不按闹铃响1分钟。按P1.4进入倒计时;定时模式按P1.5进行分十位调整(加1),按P1.6进行分个位加l,按Pl.4倒计时;开始,当对间为0时停止倒计时,并发声提醒,倒计时过程中按P1.4可退回到;正常时钟状态,定时器T0、T1溢出周期为50ms,T0为秒计数用,T1为调整时闪烁;及秒表定时用。P1.0、P1.1、P1.2、P1.3为调整按钮,P0口

3、为字符输出口,;P2为扫描口.P3. 7为小喇叭口采用共阳显示管。50H55H为闹钟定时单元,;60H- 65H为秒表计时单元.70H75H为显示时间单元,76H79H为分时计时单元。;03H标志=0时钟状态,03H= ls;05H=0,不闹铃,05H=1要闹铃;07H每秒改变一次,用作间隔呜叫。08H为整点报时标志位,08H=l时为整点;09H为闹铃到点标志,09H=1时定时闹时时间到。;*; DISPFIRST EQU 30H ;显示首址存放单元 BELL EQU P3.7 ;小喇叭或蜂鸣器 CONBS EQU 2FH ;存放报时次数 SONGCON EQU 31H ;唱歌程序计数器 CO

4、NR2 EQU 32H ;以下唱歌程序用寄存器 CONR3 EQU 33H CONR4 EQU 34H CONR6 EQU 36H CONR7 EQU 37H CONR5 EQU 35H ;以上唱歌程序寄存器 DELAYR3 EQU 38H ;以下延时程序用寄存器 DELAYR5 EQU 39H ; DELAYR6 EQU 3AH ; DELAYR7 EQU 3BH ;*; 中断入口程序 ;*; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程

5、序入口 LJMP INTT0 ;跳至INTT0执行 ORG 0013H ;外中断l中断程序人口 RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTTI ;跳至INTTI执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回;*; 以下为程序开始 ;;*;;整点报时功能程序ZDBS: MOV A,#10 ;十位数乘10加上个位数为报时的次数 MOV B,79H MUL AB ADD A,78H MOV CONBS,A ;报时次数计算完成 JZ OUT00 ;如为午夜零点不报时BSLOOP:LCALL DS20ms ;以下按次数鸣叫

6、 MOV P3,#00H LCALL DLIS LCALL DLIS MOV P3,#0FFH LCALL DLIS DJNZ CONBS,BSLOOP ;报时完成OUT00: CLR 08H ;清整点报时标志 AJMP START1 ;返回主程序;以下为闹钟功能时的唱歌程序SPPP: ;LCALL MUSIC0 ;调用唱歌程序 MOV B,#10 ;闹钟叫10下BLOOP: LCALL DS20ms LCALL DLIS ; LCALL DLIS ; DJNZ B,BLOOP CLR 0AH ;清闹钟时的唱歌标志 CLR 05H ;清止闹标志 AJMP START1 ;返回主程序;倒计时程序

7、进入程序DJS: LCALL DS20mS JB P1.4, START1 WAITH111: JNB P1.4, WAITH111;等待键释放 LJMP DJSST;*; 主程序开始 ;;*;START: MOV SP, #80H ; 堆栈在80H以上 LCALL ST ; 上电显示年月日及班级学号 LCALL STFUN0 ; 流水灯 LCALL STMEN ; 时钟程序初始化子程序 SETB EA ;中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4, #14 ;1s定时用计数值(50ms20) MOV DISPFIRST,#70H ;显示单元为

8、70H75H LCALLL MUSIC0 ;唱歌测试程序;以下为主程宇循环START1:LCALL DISPLAY ;调用显示子程序 JNB P1.0,SETMM1 ;PI.0口为0时转时间调整程序 JNB Pl.1,FUNSS ;秒表功能,P1.1按键调时作减l功能 JNB Pl.2,FUNPT ;秒表STOP,PUSE,CLR JNB Pl.3,TSFUN ;定时闹铃设定 JNB Pl.4,DJS ;倒计时功能 JB 08H, ZDBS ;08H为l,整点到,进行整点报时 JB 0AH, SPPP ;0AH为1时,闹铃时间到,进行提醒 AJMP START1 ;P1.0口为l时跳回STAR

9、T1;FUNPT: LJMP FUNPTT;以下为闹铃时间设定程序,按P1.3进入设定TSFUN:LCALL DS20ms JB Pl.3,STARTI ;WAIT113:JNB Pl.3,WAIT113 ;等待键释放 JB 05H,CLOSESP ;闹铃已开的话,关闹铃 MOV DISPFIRST,#50H ;显示50H55H闹钟定时单元 MOV 50H,#0CH ;”-”闹铃设定时显示格式00:00:- MOV 5IH, #0AH ;”黑”DSWAIT: SETB EA LCALL DISPLAY JNB Pl.2,DSFINC ;分加l JNB Pl.0,DSDEC ;分减1 JNB P

10、l.3,DSSFU ;进入时调整 AJMP DSWAITCLOSESP:CLR 05H ;关闹铃标志 CLR BELL AJMP STARTIDSSFU: LCALL DS20ms ;消抖 JB Pl.3DSWAIT LJMP DSSFUNN ;进入时调整SETMM1:LJMP SETMM ;转到时间调整程序SETMMDSFINC: LCALL DS20ms ; 消抖 JB Pl.2DSWAITDSWAIT12: LCALL DISPLAY ; 等键释放 JNB Pl.2, DSWAIT12 CLR EA MOV R0, #53H LCALL ADD1 ;闹铃设定分加l MOV A, R3 ;

11、分数据放入A CLR C ;清进位标志 CJNE A,#60H, ADDHH22ADDHH22:JC DSWAIT ;小于60分时返回 ACALL CLR0 ;大于或等于60分时分计时单元清o AJMP DSWAITDSDEC:LCALL DS20ms ;消抖 JB Pl.0DSWAITDSWAITEE: LCALL DISPLAY ;等键释放 JNB Pl.0, DSWAITEE CLR EA MOV R0,#53H LCALL subl ;闹铃设定分减1 LJMP DSWAIT;以下为秒表功能时钟转换程序;按下P1.1可进行功能转换FUNSS: LCALL DS20ms JB Pl.1,S

12、TART11WAIT11: JNB Pl.1,WAIT11 CPL 03H JNB 03H, TIMFUN MOV DISPFIRST,#60H ;显示秒表数据单元 MOV 60H,#00H MOV 6IH,#00H MOV 62H,#00H MOV 63H,#00H MOV 64H,#00H MOV 65H,#00H MOV TL1,#0F0H ;l0ms定时初值 MOV THl,#0D8H ;l0ms定时初值 SETB TR1 SETB ET1START11: LJMP START1TIMFUN: MOV DISPFIRST, #70H ;显示时钟数据单元 CLR ET1 CLR TR1S

13、TART12:LJMP START1;以下为秒表暂停/清零功能程序;按下P1.2暂停或清0,按下P1.1退出秒表回到时钟计时FUNPTT: LCALL DS20ms JB Pl.2, START12WAIT22: JNB Pl.2, WAIT21 CLR ET1 CLR TR1WAIT33: JNB P1.1, FUNSS JB Pl.2 , WAIT31 LCALL DS20ms JB Pl.2, WAIT33WAIT66: JNB Pl.2,WAIT61 MOV 60H, #00H MOV 6IH, #00H MOV 62H, #00H MOV 63H,#00H MOV 64H,#00H

14、MOV 65H,#00HWAIT44: JNB Pl.1,FUNSS JB Pl.2WAIT41 LCALL DS20ms JB Pl.2,WAIT44WAIT55: JNB Pl.2,WAIT51 SETB ET1 SETB TR1 AJMP START1;以下为键等待释放时显示不会熄灭程序WAIT21: LCALL DISPLAY AJMP WAIT22WAIT31: LCALL DISPLAY AJMP WAIT33WAIT41: LCALL DISPLAY AJMP WAIT44WAIT51: LCALL DISPLAY AJMP WAIT55WAIT61: LCALL DISPLAY

15、 AJMP WAIT66;*; 1秒计时程序 ;;*;;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 SETB P3.6 SETB P3. 5 DJNZ R4,OUTT0 ;20次中断未到中断

16、退出ADDSS: MOV R4,#14H ;20次中断到(ls)重赋初值 CLR P3.6 CLR P3.5 CPL 07H ;闹铃时间隔呜叫用 MOV R0,#7IH ;指向秒计时单元(7IH72H) ACALL ADD1 ;调用加l程序(加1s操作) MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志 CJNE A,#60H,ADDMM;ADDMM: JC OUTT0 ;小于60s时中断退出 ACALL CLR0 ;大于或等于60s时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H77H) ACALL ADD1 ;分计时单元加1分钟 MO

17、V A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60min时中断退出 ACALL CLR0 ;大于或等于60min时分计时单元清0 LCALL DS20ms ;正点报时 SETB 08H MOV R0,#79H ;指向小时计时单元(78H79H) ACALL ADD1 ; 小时计时单元加l小时 MOV A, R3 ; 时数据放八A CLR C ; 清进位标志 CJNE A, #24H, HOURHOUR: JC OUTT0 ;小于24小时中断退出 ACALL CLR0 ;大于或等于24小时,计时单元清0OUTT

18、0: MOV 72H,76H ;中断退出时将分、时计时单元数据移入 MOV 73H,77H ; 对应显示单元 MOV 74H,78H ; MOV 75H.79H ; LCALL BAOJ POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回;*; 闪动调时程序/秒表功能程序 ;;*;;TI中断服务程序,用作时间调整时调整单元闪烁指示或秒表计时INTT1I: PUSH ACC ;中断现场保护 PUSH PSW ; JB 09H, SPCC JB 06H, DJSFUN JB 03H, MMFUN ;03H=1时秒表 MOV T

19、L1,#0B0H ;装定时器T1定时初值 MOV TH1,#3CH DJNZ R2,INTTlOUT ;0.3s未到退出中断(50ms中断6次 MOV R2,#06H ;重装0.3s定时用初值 CPL 02H ;0.3s定时到对闪烁标志取反 JB 02H,FLASH1 ;02H位为1时显示单元”熄灭” MOV 72H,76H ;02H位为0时正常显示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ;INTT1OUT:POP PSW ;恢复现场 POP ACC ; RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制

20、MOV 72H, 7AH ;01H位为0时,”熄灭符”数据放入分 MOV 73H, 7AH ;显示单元(72H73H),将不显示分数据 MOV 74H, 78H ; MOV 75H, 79H ; AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,“熄灭符”数据放入小时 MOV 73H,77H ; 显示单元(74H75H),小时数据将不显示 MOV 74H, 7AH ; MOV 75H, 7AH ; AJMP INTT1OUT ;转中断退出SPCC: INC SONGCON ;中断服务中断计数器加1 MOV TH1#0D8H MOV TL1,#0E

21、FH ;l0ms定时初值 AJMP INTT1OUT ;DJSFUN: LJMP DJSSMMFUN: CLR TR1 MOV A,#0F7H ;中断响应时间同步修正,重装初值(l0ms) ADD A,TL1 ;低8位初值修正 MOV TL1,A ;重装初值(低8位修正值) MOV A,#0D8H ;高8位初值修正 ADDC A,TH1 MOV TH1,A ;重装初值(高8位修正值) SETB TR1 ;开启定时器T0 MOV R0,#61H ;指向秒计时单元(7IH72H) ACALL ADD1 ;调用加1程序(加1s操作) CLR C MOV A, R3 JZ FSS1 ;加1后为00,C

22、=0 AJMP OUTT01 ;加l后不为00,C=1FSS1: ACALL CLR0 ;大于或等于60s时对秒计时单元清0 MOV R0#63H ;指向分计时单元(76H77H) ACALL ADD1 ;分计时单元加1分钟 MOV A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,60H, ADDHH1 ADDHH1:JC OUTT01 ;小于60min时中断退出 LCALL CLR0 ;大于或等于60min时,计时单元清0 MOV R0.#65H ;指向小时计时单元(78H79H) ACALL ADD1 ;小时计时单元加l小时OUTT01: POP PSW ;恢复状态字(出

23、栈) POP ACC ;恢复累加器 RETI ;中断返回 ;;*;; 加l子程序 ;;*;ADD1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高四位与低四位交换 ORL A,R0 ;前一地址中数据放入A中低四位 ADD A,#01H ;A加1操作 DA A ;十进制调整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高四位变0 MOV R0, A ;放回前一地址单元 MOV A,R3 ;取回R3中暂存数据 INC R0 ;指向当前地址单元 SWAP A ;A中数据高四位与低四位交换 ANL A,#0FH ;高四位变0 MO

24、V R0,A ;数据放入当前地址单元中 RET ;子程序返回;*;; 分减1子程序 ;;*;SUB1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ; A中数据高4位与低4位交换 ORL AR0 ;前一地址中数据放入A中低4位 JZ SUB11 DEC A ;A减1操作SUB111: MOV R3,A ; 移入R3寄存器 ANL A,#0FH ;高4位变0 CLR C ;清进位标志 SUBB A,#0AHSUB1111:JC SUB1110 MOV R0,#09H ;大于等于0AH,为9SUB110: MOV A,R3 ;取回R3中暂存数据 INC

25、R0 ;指向当前地址单元 SWAP A ;A中数据高4位与低4位交换 ANL A,#0FH ;高4位变0 MOV R0,A ;数据放入当前地址单元中 RET ;子程序返回SUB11: MOV A, #59H AJMP SUB111SUB1110: MOV A,R3 ;移人R3寄存器 ANL A,#0FH ;高4位变0 MOV R0,A AJMP SUB110;* *;; 时减l子程序 ;*;SUBB1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高4位与低4位交换 ORL A,R0 ;前一地址中数据放入A中低4位 JZ SUBB11 ;0

26、0减l为23(小时) DEC A ;A减1操作SUBBl11:MOV R3,A ;移人R3寄存器 ANL A,#0FH ;高4位变0 CLR C ;清进位标志 SUBB A,#0AH ;时个位大于9,为9SUBB1111:JC SUBB1110 : MOV R0,#09H ;大于等于0AH,为9SUBB110:MOV A.R3 ;取回R3中暂存数据 INC R0 ;指向当前地址单元 SWAP A ;A中数据高4位与低4位交换 ANL A, #0FH ;高4位变0 MOV R0, A ;时十位数数据放入 RET ;子程序返回SUBB11:MOV A,#23H AJMP SUBB111SUBB1110:MOV A,R3 ;时个位小于0A不处理 ANL A, #0FH ;高4位变0 MOV R0, A ;个位移入 AJMP SUBB110;*;; 清零程序 ;*;对计时单元复零用CLR0:CLR A ;清累加器 MOV R0,A ;清当前地址单元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址单元清0 RET ;子程序返回;*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1