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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(汇编语言在两个数码管上实现0099的循环显示之欧阳历创编.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言在两个数码管上实现0099的循环显示之欧阳历创编.docx

1、汇编语言在两个数码管上实现0099的循环显示之欧阳历创编 ;此法度为在两个数码管上实现0099的循环显示时间:2021.02.09创作人:欧阳历 ;设置ram DATA_IN DATA 20H ;接收数据缓冲寄存器 DATA_OUT DATA 21H ;发送数据缓冲寄存器 BIT_COUNT DATA 22H ;数据位数寄存器/ HOUR DATA 23H/ MINITE DATA 24H/ SECOND DATA 25H/ MSECOND DATA 26H ORG 0000H LJMP INIT ORG 000BH LJMP TIME0 ;按时器0中断入口 ORG 0013H LJMP KB

2、HIT ;初始化 ORG 0030HINIT: MOV DPTR,#4000H ;HD7279A的地址 MOV A,#10011111B ;HD7279A初始化CS、CLK、DATA MOVX DPTR,A LCALL DELAY25MS ;延时后进入工作状态 MOV DATA_OUT,#10100100B ;HD7279A复位指令 LCALL SEND ;发送指令 MOV A,#10011111B ;设回CS为高电平 MOVX DPTR,A/ MOV R4,#20 ;按时器一个周期内的中断数 MOV R2,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0/ MOV MSECO

3、ND,#0 / MOV SECOND,#0/ MOV MINITE,#0/ MOV HOUR,#0 ;数字计数器 MOV R6,#0 ;个位寄存器 MOV R7,#0 ;十位寄存器 MOV TMOD,#1 ;设置按时器0工作模式为方法1/ MOV TH0,#3CH ;设置按时器按时值/ MOV TL0,#0B0H MOV TH0,#0FCH ;设置按时器按时值 MOV TL0,#18H SETB EA ;开总中断 SETB ET0 ;开按时器0中断 SETB EX1 SETB TR0 ;开始计时 ;主法度MAIN: MOV A,R2 ;把数字转换为2个BCD码 MOV B,#10 DIV AB

4、 MOV R6,B ;个位放在R6 MOV R7,A ;十位放在R7 MOV DATA_OUT,#11001000B ;下载数据且按方法1译码,找到了第1个数码管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时间间隔 MOV DATA_OUT,R1 ;指令的数据部分,显示个位 LCALL SEND MOV A,#10011111B MOVX DPTR,A MOV DATA_OUT,#11001001B ;下载数据且按方法1译码,找到了第2个数码管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时间间隔 MOV DATA_OUT,R2 ;指令的数据部

5、分,显示个位 LCALL SEND MOV A,#10011111B MOVX DPTR,A MOV DATA_OUT,#11001010B ;下载数据且按方法1译码,找到了第3个数码管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时间间隔 MOV DATA_OUT,R3 ;指令的数据部分,显示个位 LCALL SEND MOV A,#10011111B MOVX DPTR,A/ LCALL DELAY1MS ;显示延时 MOV A,R4 ;把数字转换为2个BCD码 MOV B,#10 DIV AB MOV R6,B ;个位放在R6 MOV R7,A ;十位放在R7 M

6、OV DATA_OUT,#11001011B ;下载数据且按方法1译码,找到了第4个数码管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时间间隔 MOV DATA_OUT,R6 ;指令的数据部分,显示个位 LCALL SEND MOV A,#10011111B MOVX DPTR,A/ LCALL DELAY1MS ;显示延时 MOV DATA_OUT,#11001100B ;下载数据且按方法1译码,找到了第5个数码管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时间间隔 MOV DATA_OUT,R7 ;指令的数据部分,显示十位 LCALL S

7、END MOV A,#10011111B MOVX DPTR,A/ LCALL DELAY1MS ;显示延时 MOV A,R5 ;把数字转换为2个BCD码 MOV B,#10 DIV AB MOV R6,B ;个位放在R6 MOV R7,A ;十位放在R7 MOV DATA_OUT,#11001101B ;下载数据且按方法1译码,找到了第6个数码管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时间间隔 MOV DATA_OUT,R6 ;指令的数据部分,显示个位 LCALL SEND MOV A,#10011111B MOVX DPTR,A/ LCALL DELAY1MS

8、 ;显示延时 MOV DATA_OUT,#11001110B ;下载数据且按方法1译码,找到了第7个数码管 LCALL SEND LCALL DELAY25 ;T4,指令与数据时间间隔 MOV DATA_OUT,R7 ;指令的数据部分,显示十位 LCALL SEND MOV A,#10011111B MOVX DPTR,A/ LCALL DELAY1MS ;显示延时 LJMP MAIN ;下一循环 SJMP $ ;发送子法度SEND: CLR ET0 ;加锁 MOV BIT_COUNT,#8 ;无论指令还是数据,一次只发送8位 MOV A,#00011111B ;设CS为低电平 MOVX DP

9、TR,A LCALL DELAY50 ;T1,从CS下降沿至CLK脉冲时间 ;发送循环,HD7279A采取串行方法与微处理器通讯,一次发送一位SENDLOOP: MOV A,DATA_OUT ;取出发送的指令或数据 MOV C,ACC.7 ;串行发送从高位到低位发送,故先取最高位 MOV A,#00011111B ;输出到DAT位 MOV ACC.5,C MOVX DPTR,A SETB C ;设CLK为高电平 MOV ACC.6,C MOVX DPTR,A LCALL DELAY8 ;T2,传送指令时CLK脉冲宽度 CLR C ;设CLK为低电平 MOV ACC.6,C MOVX DPTR,

10、A LCALL DELAY8 ;T3,字节传送中CLK脉冲时间 MOV A,DATA_OUT ;移位待发送的指令或数据,为下一位的发送作准备 RL A MOV DATA_OUT,A DJNZ BIT_COUNT,SENDLOOP ;发送不到8位,继续循环 MOV A,#00011111B ;发送完毕,恢复DAT MOVX DPTR,A SETB ET0 ;释放锁 RET ;接收子法度(本法度中用不到,但在添加按键操纵的时候用于读取键值)RECEIVE: CLR ET0 ;加锁 MOV BIT_COUNT,#8 ;接收8位数据 MOV DATA_IN,#0 ;清空接收数据缓冲寄存器 MOV A,

11、#00111111B ;设CS为低电平,同时包管DAT为高电平(输入状态) MOVX DPTR,A LCALL DELAY25 ;T5,读键盘指令中指令与数据时间间隔 ;接收循环,HD7279A采取串行方法与微处理器通讯,一次接收一位RECEIVELOOP:SETB ACC.6 ;设CS为高电平 MOVX DPTR,A LCALL DELAY8 ;T6,输出键盘数据建立时间 MOV A,DATA_IN ;接收数据缓冲寄存器向左移位,准备接收一位数据,数据的高位会先发送 RL A MOV DATA_IN,A MOVX A,DPTR ;读取数据 MOV C,ACC.5 ;取出数据位DAT MOV

12、A,DATA_IN MOV ACC.0,C MOV DATA_IN,A ;数据放进接收数据缓冲寄存器 MOV A,#00111111B ;设CS为低电平,同时包管DAT为高电平(输入状态) MOVX DPTR,A LCALL DELAY8 ;T7,读键盘数据是CLK脉冲宽 DJNZ BIT_COUNT,RECEIVELOOP ;接收不到8位,继续循环 MOV A,#00011111B ;接收完毕,恢复DAT MOVX DPTR,A SETB ET0 ;释放锁 RET ;按时器0中断法度 TIME0: / DJNZ R4,NEXT ;按时器一个周期内中断数不敷就继续计时 INC R2 ;数字加1

13、/ MOV R4,#20 ;重置按时器一个周期内中断数 CJNE R2,#100,NEXT ;数字不敷100继续加1 MOV R2,#0 ;数字达到100就清零 INC R3 CJNE R3,#10,NEXT MOV R3,#0 INC R4 CJNE R4,#60,NEXT MOV R4,#0 INC R5 CJNE R5,#60,NEXT MOV R5,#0 NEXT: MOV TH0,#0FCH ;按时器方法1中断后需要重新设置按时器按时值 MOV TL0,#18H RETIKBHIT: PUSH PSW PUSH ACC PUSH DPH PUSH DPL PUSH DATA_OUT

14、PUSH BIT_COUNT MOV A,R0 PUSH ACC MOV A,R1 PUSH ACC MOV DATA_OUT,#00010101B LCALL SEND LCALL DELAY25 LCALL RECEIVE MOV A,DATA_IN JZ START DEC A DEC A JZ STOP DEC A JZ CLEAR SJMP OUTSTART: SETB TR0 SJMP OUTSTOP: CLR TR0 SJMP OUTCLEAR: MOV R2,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0OUT: POP ACC MOV R1,A POP AC

15、C MOV R0,A POP BIT_COUNT POP DATA_OUT POP DPL POP DPH POP ACC POP PSW RETI ;延时25ms子法度DELAY25MS: MOV R0,#49D11: MOV R1,#253 NOPD12: DJNZ R1,D12 DJNZ R0,D11 RET ;延时50s子法度DELAY50: MOV R0,#23 NOPD21: DJNZ R0,D21 RET ;延时25s子法度DELAY25: MOV R0,#11D31: DJNZ R0,D31 RET ;延时8s子法度DELAY8: MOV R0,#2 NOPD41: DJNZ R0,D41 RET ;延时1ms子法度DELAY1MS: MOV R0,#2 NOPD51: MOV R1,#247 NOPD52: DJNZ R1,D52 DJNZ R0,D51 RET END时间:2021.02.09创作人:欧阳历

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

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