单片机电子钟汇编

单片机电子钟汇编

ID:12307057

大小:33.00 KB

页数:3页

时间:2018-07-16

单片机电子钟汇编_第1页
单片机电子钟汇编_第2页
单片机电子钟汇编_第3页
资源描述:

《单片机电子钟汇编》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ORG0000HAJMPSTART;中断入口ORG000BHAJMPT0INT;RAM区变量定义DISBUFEQU30H;显示参数传递POSITEQU38H;位选NUMEQU40H;秒循环次数SECEQU50H;秒MINEQU51H;分钟HOREQU52H;小时;程序开始部分(主函数)ORG0100HSTART:MOVSP,#60H;设置堆栈指针位置MOVTMOD,#01H;设置定时器T0的工作方式为定时器模式,方式一MOVTH0,#42H;给定时器赋初值MOVTL0,#0A0HMOVDISBUF+2,#16;给显示部分赋值"-"MO

2、VDISBUF+5,#16MOVSEC,#58;设置秒的初值MOVMIN,#59;设置分钟的初值MOVHOR,#09;设置小时的初值MOVNUM,#19;设置定时器循环的次数,也就是确定循环多少次为一秒SETBTR0;启动定时计数器T0SETBET0;开启定时计数器T0的中断SETBEA;开启单片机的总中断LOOP:LCALLCHANGE;调用小时,分秒处理子程序LCALLDISPLAY;调用显示程序AJMPLOOP;8路数码管驱动DISPLAY:MOVPOSIT,#80H;用于指示数码管位选,初始化为第一个数码管亮MOVR1,#08

3、H;用于指示程序循环,8个数码管每个送一次数后,本子程序结束MOVDPTR,#DISCODE;指向数码管的码表MOVR0,#DISBUF;指向显示数组;为方便起见,只将第一个数码管的执行过程讲明,其余依次类推DISLOOP:MOVA,@R0;当R0=#DISBUF时,通过间接寻址将DISBUF中的内容放入A中MOVCA,@A+DPTR;通过查表,A为地址偏移量,找出A中的数所对应的码值(即段码),还放在A中MOVP0,A;将A中的数送至P0端口,单此时并未送至数码管SETBP1.3;使能573锁存器,此时,段码才送至数码管的段选端CL

4、RP1.3;关闭573锁存器,此时,数据锁存在数码管的段选端MOVP0,POSIT;送位选至P0,以便指示哪一个数码管亮SETBP1.2;使能573锁存器,此时,位选信号才送至数码管的位选端,相应的数码管亮CLRP1.2;关闭573锁存器,此时,数据锁存在数码管的位选端CALLDELAY;使相应数码管亮一段时间MOVP0,#00H;送位选为00至P0口,即关闭所有的数码管,一产生消隐作用,避免数码管上产生重影现象SETBP1.2CLRP1.2MOVA,POSIT;当一个数码管完成显示后,对位选进行移位操作,以便为下一个数码管RRA;的

5、显示作好准备,此时,位选指向下一个数码管MOVPOSIT,AINCR0;使R0的数自加一,指向下一个要显示的数字,若上一次指向DISBUF,则DJNZR1,DISLOOP;本次指向DISBUF+1,并受R1控制,完成8个数在数码管上的显示RET;所以,在使用此显示程序时,只需将欲显示的数字放入对应的DISBUF即可;延时程序DELAY:MOVR3,#250L1:NOPNOPDJNZR3,L1RET;显存更新程序CHANGE:PUSHACC;保护现场,将累加器A入栈MOVA,SEC;将秒变量分十位和个位,分别存放在两个显存空间中MOVB

6、,#10DIVABMOVDISBUF+6,AMOVDISBUF+7,BMOVA,MIN;将分变量分十位和个位,分别存放在两个显存空间中MOVB,#10DIVABMOVDISBUF+3,AMOVDISBUF+4,BMOVA,HOR;将小时变量分十位和个位,分别存放在两个显存空间中MOVB,#10DIVABMOVDISBUF,AMOVDISBUF+1,BPOPACC;释放累加器ARET;定时器T0中断服务程序T0INT:PUSHACC;保护现场,将累加器A入栈MOVTL0,#0A0H;重新赋初值MOVTH0,#42HDJNZNUM,OUT

7、;判断1秒时间是否到达MOVNUM,#19INCSEC;如果1秒时间到达,对秒加一MOVA,SECCJNEA,#60,OUT;判断秒是否超过60MOVSEC,#0;如果超过60,将秒变量清零,同时将分变量加一INCMINMOVA,MINCJNEA,#60,OUT;判断分变量是否超过60MOVMIN,#0;如果超过60,将分变量清零,同时将小时变量加一INCHORMOVA,HORCJNEA,#24,OUT;判断小时变量是否超过23MOVHOR,#0;超过23,对小时变量清零OUT:POPACC;释放累加器ARETI;共阳数码管码表DIS

8、CODE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0123456789DB88H,83H,0C6H,0A1H,86H,08EH,0BFH,0FFH,0F7H;ABCD

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。