51单片机计时器

上传人:daj****de2 文档编号:169548863 上传时间:2022-11-16 格式:DOCX 页数:6 大小:33.91KB
收藏 版权申诉 举报 下载
51单片机计时器_第1页
第1页 / 共6页
51单片机计时器_第2页
第2页 / 共6页
51单片机计时器_第3页
第3页 / 共6页
资源描述:

《51单片机计时器》由会员分享,可在线阅读,更多相关《51单片机计时器(6页珍藏版)》请在装配图网上搜索。

1、;程序执行开始地址;跳到标号START执行; 外中断 0 中断程序入口;外中断0中断返回淀时器T0中断程序入口RETIORG 001BHLJMP INTT1ORG 0023HRETI;清70H-7AH共11个内存单元START: MOVR0,#70HMOVR7,#0BHCLEARDISP: MOVR0,#00HINCR0DJNZ R7,CLEARDISP ;MOV20H,#00HMOV7AH,#0AHMOVTMOD,#11HMOVTL0,#0B0HMOVTH0,#3CHMOVTL1,#0B0HMOVTH1,#3CHSETBEASETBET0SETBTR0MOVR4,#14HSTART1: LC

2、ALL DISPLAYJNBP3.5,SETMM1SJMPSTART1主程序; 定时器 T0 、 T1 溢出周期为 50MS, T0 为秒计数用, T1 为调整时闪烁用,;P3.5为调整按钮,P0 口为字符输出口,P2 口为位选端,采用共阳显示管。;时间调整方法:按3。5未超过1s进入省电模式,数码管不亮,内部时钟计时;按3。5超过1s进入调整模式,要调整的时间会闪动,此时,按下P3。5超过0。5S,进 入下位调整;按下P3。5未超过0。5S,当前位加一中断入口程序ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP INTT0 ;跳至 INTTO 执行O

3、RG 0013H;外中断 1 中断程序入口;外中断1中断返回;定时器 T1 中断程序入口;跳至 INTT1 执行 ;串行中断程序入口地址;串行中断程序返回;清20H (标志用);放入熄灭符数据;设T0、T1为16位定时器;50MS定时初值(T0计时用);50MS 定时初值;50MS定时初值(T1闪烁定时用);50MS 定时初值;总中断开放;允许T0中断;开启 T0 定时器;1秒定时用初值(50MSX20) ;调用显示子程序;P3.5 口为 0 时转时间调整程序;P3.5 口为 1 时跳回 START1SETMM1:LJMP SETMM;转到时间调整程序 SETMM1 秒计时程序;T0 中断服务

4、程序INTT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV A,#0B7HADD A,TL0MOV TL0,AMOV A,#3CHADDC A,TH0 ;MOV TH0,ASETB TR0DJNZ R4, OUTT0ADDSS: MOV R4,#14HMOV R0,#71HACALL ADD1MOV A,R3CLR CCJNE A,#60H,ADDMM ;ADDMM: JC OUTT0ACALL CLR0MOV R0,#77HACALL ADD1MOV A,R3CLR CCJNE A,#60H,ADDHH ;ADDHH: JC OUTT0ACALL CLR0MOV R

5、0,#79HACALL ADD1MOV A,R3CLR CCJNE A,#24H,HOUR ;HOUR: JC OUTT0ACALL CLR0OUTT0: MOV 72H,76HMOV 73H,77HMOV 74H,78HMOV 75H,79HPOP PSW;累加器入栈保护;状态字入栈保护;关 T0 中断允许;关闭定时器 T0 ;中断响应时间同步修正;低 8 位初值修正 ;重装初值(低 8 位修正值);高 8 位初值修正;重装初值(高8 位修正值);开启定时器 T0;20 次中断未到中断退出;20 次中断到(1 秒)重赋初值;指向秒计时单元(71H-72H);调用加 1 程序(加1秒操作);秒

6、数据放入A( R3为2位十进制数组合) ; 清进位标志;小于 60秒时中断退出 ;大于或等于60秒时对秒计时单元清 0;指向分计时单元(76H-77H) ;分计时单元加 1 分钟;分数据放入A; 清进位标志;小于 60分时中断退出;大于或等于 60分时分计时单元清 0;指向小时计时单元(78H-79H) ;小时计时单元加 1 小时;时数据放入A; 清进位标志;小于 24小时中断退出; 恢复状态字(出栈);大于或等于24小时小时计时单元清0 ;中断退出时将分、时计时单元数据移 ;入对应显示单元POP ACC;恢复累加器SETB ET0;开放 T0 中断RETI;中断返回闪动调时程序;T1 中断服

7、务程序,用作时间调整时调整单元闪烁指示INTT1:PUSHACC;中断现场保护PUSHPSW;MOVTL1, #OBOH;装定时器T1定时初值MOVTH1, #3CH;DJNZR2,INTT1OUT;0.3秒未到退出中断(50MS中断6次)MOVR2,#O6H;重装 O.3 秒定时用初值CPLO2H;0.3 秒定时到对闪烁标志取反JBO2H,FLASH1;02H 位为 1 时显示单元熄灭MOV72H,76H;02H 位为0时正常显示MOV73H,77H;MOV74H,78H;MOV75H,79H;INTT1OUT:POPPSW;恢复现场POPACC;RETI;中断退出FLASH1:JBO1H,

8、FLASH2;01H 位为 1 时,转小时熄灭控制MOV72H,7AH;01H 位为0时,熄灭符数据放入分MOV73H,7AH;显示单元( 72 H-73 H ),将不显示分数据MOV74H,78H;MOV75H,79H;AJMPINTT1OUT; 转中断退出FLASH2:MOV72H,76H;01H 位为 1 时,熄灭符数据放入小时MOV73H,77H;显示单元( 74 H-75 H ),小时数据将不显示MOV74H,7AH;MOV75H,7AH;AJMPINTT1OUT;转中断退出;加 1 子程序;ADD1: MOVA,RO; 取当前计时单元数据到 ADECRO;指向前一地址SWAP A;

9、A 中数据高四位与低四位交换ORLA,RO;前一地址中数据放入A中低四位ADDA,#O1H;A加1操作DAA;十进制调整MOVR3,A;移入R3寄存器ANLA,#0FH;高四位变 0MOVR0,A;放回前一地址单元MOVA,R3;取回R3中暂存数据INCR0;指向当前地址单元SWAPA;A 中数据高四位与低四位交换ANLA,#0FH;高四位变0MOVR0,A; 数据放入当削地址单元中RET;子程序返回清零程序;对计时单元复零用CLR0: CLRA;清累加器MOVR0,A;清当前地址单元DECR0;指向前一地址MOVR0,A; 前一地址单元清 0RET;子程序返回;时钟调整程序;当调时按键按下时

10、进入此程序SETMM:cLRET0;关定时器TO中断CLRTR0;关闭定时器 T0LCALLDL1S;调用 1秒延时程序JBP3.5,CLOSEDIS;键按下时间小于 1 秒,关闭显示(省电)MOVR2,#06H;进入调时状态,赋闪烁定时初值SETBET1;允许T1中断SETBTR1; 开启定时器 T1SET2:JNBP3.5,SET1;P3.5 口为0 (键未释放),等待SETB00H;键释放,分调整闪烁标志置 1SET4:JBP3.5,SET3;等待键按下LCALLDL05S;有键按下,延时 0.5 秒JNBP3.5,SETHH;按下时间大于0.5秒转调小时状态MOVR0,#77H;按下时

11、间小于0.5秒加1分钟操作LCALLADD1;调用加1子程序MOVA,R3;取调整单元数据CLRC; 清进位标志CJNEA,#60H,HHH; 调整单元数据与 60 比较HHH: JC SET4;调整单兀数据小于60转SET4循环LCALLCLR0;调整单元数据大于或等于60时清0CLRC; 清进位标志AJMPSET4;跳转到SET4循环CLOSEDIS:SETBET0;省电(LED不显示)状态。开T0中断SETBTR0; 开启 T0 定时器(开时钟)CLOSE:JBP3.5,CLOSE;无按键按下,等待。LCALLDISPLAY;有键按下,调显示子程序延时削抖JBP3.5,CLOSE;是干扰

12、返回 CLOSE 等待WAITH:JNBP3.5,WAITH;等待键释放LJMPSTART1;返回主程序(LED数据显示亮)SETHH:CLR00H; 分闪烁标志清除(进入调小时状态)SETHH1:JNBP3.5,SET5;等待键释放SETB01H;小时调整标志置1SET6:JBP3.5,SET7;等待按键按下LCALLDL05S; 有键按下延时 0.5 秒JNBP3.5,SETOUT;按下时间大于 0.5秒退出时间调整MOVR0,#79H;按下时间小于 0.5秒加1小时操作LCALLADD1;调加 1 子程序MOVA,R3;CLRC;CJNEA,#24H,HOUU; 计时单元数据与 24 比

13、较HOUU:JCSET6;小于24转SET6循环LCALLCLR0;大于或等于 24时清0操作AJMPSET6;跳转到SET6循环SETOUT: JNBP3.5,SETOUT1;调时退出程序。等待键释放LCALLDISPLAY;延时削抖JNBP3.5,SETOUT;是抖动,返回SETOUT再等待CLR01H; 清调小时标志CLR00H; 清调分标志CLR02H;清闪烁标志CLRTR1;关闭定时器 T1CLRET1;关定时器T1中断SETBTR0;开启定时器 T0SETBET0;开定时器T0中断(计时开始)LJMPSTART1;跳回主程序SET1:LCALLDISPLAY;键释放等待时调用显示程

14、序(调分)AJMPSET2;防止键按下时无时钟显示SET3:LCALLDISPLAY; 等待调分按键时时钟显示用AJMPSET4SET5:LCALLDISPLAY;键释放等待时调用显示程序(调小时)AJMPSETHH1;防止键按下时无时钟显示SET7:LCALLDISPLAY;等待调小时按键时时钟显示用AJMPSET6SETOUT1:LCALLDISPLAY;退出时钟调整时键释放等待AJMP SETOUT;防止键按下时无时钟显示显示程序MOVR5,#0FEH;扫描控制字初值PLAY: MOVA,R5; 扫描字放入 AMOVP2,A;从P3 口输出MOVA,R1;取显示数据到AMOVDPTR,#

15、TAB;取段码表地址MOVCA,A+DPTR;查显示数据对应段码MOVP0,A;段码放入P1 口LCALLDL1MS;显示 1MSINCR1;指向下一地址MOVA,R5;扫描控制字放入 AJNBACC.5,ENDOUT;ACC.5=0 时一次显示结束RL A;A 中数据循环左移MOVR5,A;放回R5内AJMPPLAY;跳回 PLAY 循环ENDOUT: SETBP2.5;一次显示结束, P3 口复位MOVP0,#0FFH;P1 口复位R1,#70HRET; 显示数据在 70H-75H 单元内,用六位 LED 共阳数码管显示, P1 口输出段码数据, P3 口作 ; 扫描控制,每个 LED 数

16、码管亮 1MS 时间再逐位循环。;指向显示数据首址DISPLAY: MOV;子程序返回TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;共阳段码表012 34567 89不亮延时程序;1MS延时程序,LED显示程序用DL1MS: MOVR6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZ R6,DL1RET;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象DS20MS: ACALL DISPLAYACALL DISPLAYACALL DISPLAYRET;延时程序,用作按键时间的长短判断DL1S:LCALLDL05SLCALLDL05SRETDL05S:MOVR3,#20H;8 毫秒*32=0.196 秒DL05S1:LCALLDISPLAYDJNZR3,DL05S1RET;程序结束END

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!