LED数码管汇编程序

出处:中国电子网 发布于:2023-07-17 17:42:16

  DISPBUFEQU50H;50H,51H,52H,53H是显示缓冲区
  LED1EQUP2.0;位数码管的位控制
  LED2EQUP2.1;第二位数码管的位控制
  LED3EQUP2.2;第三位数码管的位控制
  LED4EQUP2.3;第四位数码管的位控制
  LED5EQUP2.4
  LED6EQUP2.5
  LED7EQUP2.6
  LED8EQUP2.7
  ;==============================================================
  org0000h
  LJMPMAIN
  ORG0003H
  RETI
  ORG000BH
  RETI
  ORG0013H
  RETI
  ORG001BH
  RETI
  ORG0023H
  RETI
  MAIN:
  MOVR0,#50H
  MOV65H,#2
  MOV64H,#3
  MOV63H,#5
  MOV62H,#9
  MOV61H,#5
  MOV60H,#9
  MOV59H,#1
  MOV58H,#2
  ACALLOUT
  LOOP1:ACALLDISP;调用显示程序
  JNBP3.2,K1
  JNBP3.3,K2
  ACALLTIME
  AJMPLOOP1
  K1:LJMPCLEAR
  K2:LJMPPAUSE
  TIME:
  MOVR0,#59H;指向毫秒计时单元
  ACALLADD1;调用加1程序(加1毫秒操作)
  MOVA,R3;毫秒数据放入A(R3为2位十进制数组合)
  CLRC;清进位标志
  CJNEA,#60H,ADDS
  ADDS:JCOUT;小于60毫秒时中断退出
  ACALLCLR0;大于或等于60毫秒时对秒计时单元清0
  MOVR0,#61H;指向秒计时单元
  ACALLADD1;调用加1程序(加1秒操作)
  MOVA,R3;秒数据放入A(R3为2位十进制数组合)
  CLRC;清进位标志
  CJNEA,#60H,ADDM
  ADDM:JCOUT;小于60秒时中断退出
  ACALLCLR0;大于或等于60秒时对秒计时单元清0
  MOVR0,#63H;指向分计时单元
  ACALLADD1;分计时单元加1分钟
  MOVA,R3;分数据放入A
  CLRC;清进位标志
  CJNEA,#60H,ADDH
  ADDH:JCOUT;小于60分时中断退出
  ACALLCLR0;大于或等于60分时分计时单元清0
  MOVR0,#65H;指向小时计时单元
  ACALLADD1;小时计时单元加1小时
  MOVA,R3;时数据放入A
  CLRC;清进位标志
  CJNEA,#24H,HOUR
  HOUR:JCOUT;小于24小时中断退出
  ACALLCLR0;大于或等于24小时计时单元清零
  OUT:
  MOVDISPBUF,65H
  MOVDISPBUF+1,64H
  MOVDISPBUF+2,63H
  MOVDISPBUF+3,62H
  MOVDISPBUF+4,61H
  MOVDISPBUF+5,60H
  MOVDISPBUF+6,59H
  MOVDISPBUF+7,58H
  RETI
  ;======================================================================
  ;清零程序
  ;======================================================================
  CLR0:
  CLRA;清累加器
  MOV@R0,A;清当前地址单元
  DECR0;指向前一地址
  MOV@R0,A;前一地址单元清零
  RET
  ;======================================================================
  ;加1子程序
  ;======================================================================
  ADD1:
  MOVA,@R0;取当前计时单元数据到A
  DECR0;指向前一地址
  SWAPA;A中数据高四位与低四位交换
  ORLA,@R0;前一地址中数据放入A中低四位
  ADDA,#01H;A加1操作
  DAA;十进制调整
  MOVR3,A;移入R3寄存器
  ANLA,#0FH;高四位变0
  MOV@R0,A;放回前一地址单元
  MOVA,R3;取回R3中暂存数据
  INCR0;指向当前地址单元
  SWAPA;A中数据高四位与低四位交换
  ANLA,#0FH;高四位变0
  MOV@R0,A;数据放入当前地址单元中
  RET
  ;======================================================================
  ;显示程序
  ;======================================================================
  DISP:
  ;-----------------------------------------------------------
  MOVA,DISPBUF;取个待显示数
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR;取字形码
  CPLA;
  MOVP0,A;将字形码送P0位(段口)
  CLRLED1;开位显示器位口
  LCALLDELAY;延时5毫秒
  SETBLED1;关闭位显示器(开始准备第二位的数据)
  ;-----------------------------------------------------------
  MOVA,DISPBUF+1;取显示缓冲区的第二位
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR
  CPLA;
  MOVP0,A;将第二个字形码送P0口
  CLRLED2;开第二位显示器
  LCALLDELAY;延时5毫秒
  SETBLED2;关第二位显示
  ;-----------------------------------------------------------
  MOVA,DISPBUF+2;取显示缓冲区的第三位
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR;取字形码
  CPLA;
  MOVP0,A;将第三个字形码送P0位(段口)
  CLRLED3;开第三位显示器位口
  LCALLDELAY;延时5毫秒
  SETBLED3;关闭第三位显示器
  ;-----------------------------------------------------------
  MOVA,DISPBUF+3;取显示缓冲区的第四位
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR;取字形码
  CPLA;
  MOVP0,A;将第四个字形码送P0位(段口)
  CLRLED4;开第四位显示器位口
  LCALLDELAY;延时5毫秒
  SETBLED4;关闭第四位显示器
  ;-----------------------------------------------------------
  MOVA,DISPBUF+4;取显示缓冲区的第五位
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR;取字形码
  CPLA
  MOVP0,A;将第五个字形码送P0位(段口)
  CLRLED5;开第五位显示器位口
  LCALLDELAY;延时5毫秒
  SETBLED5;关闭第五位显示器
  ;-----------------------------------------------------------
  MOVA,DISPBUF+5;取显示缓冲区的第六位
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR;取字形码
  CPLA
  MOVP0,A;将第六个字形码送P0位(段口)
  CLRLED6;开第六位显示器位口
  LCALLDELAY;延时5毫秒
  SETBLED6;关闭第六位显示器
  ;-----------------------------------------------------------
  MOVA,DISPBUF+6;取显示缓冲区的第七位
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR;取字形码
  CPLA
  MOVP0,A;将第七个字形码送P0位(段口)
  CLRLED7;开第七位显示器位口
  LCALLDELAY;延时5毫秒
  SETBLED7;关闭第七位显示器
  ;-----------------------------------------------------------
  MOVA,DISPBUF+7;取显示缓冲区的第八位
  MOVDPTR,#DISPTAB
  MOVCA,@A+DPTR;取字形码
  CPLA
  MOVP0,A;将第八个字形码送P0位(段口)
  CLRLED8;开第八位显示器位口
  LCALLDELAY;延时5毫秒
  SETBLED8;关闭第八位显示器
  ;-----------------------------------------------------------
  RET
  PAUSE:
  ACALLDISP
  JNBP3.2,K3
  AJMPPAUSE
  K3:acallCLEAR
  CLEAR:
  MOV58H,#0
  MOV59H,#0
  MOV60H,#0
  MOV61H,#0
  MOV62H,#0
  MOV63H,#0
  MOV64H,#0
  MOV65H,#0
  LJMPLOOP1
  RETI
  ;======================================================================
  ;延时程序
  ;======================================================================
  DELAY:
  MOVR6,#20H;延时约5mS
  D1:MOVR7,#10H
  D2:DJNZR7,D2
  DJNZR6,D1
  RET
关键词:LED数码管汇编程序LED,汇编程序

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!