汇编语言:在两个数码管上实现00-99的循环显示_第1页
汇编语言:在两个数码管上实现00-99的循环显示_第2页
汇编语言:在两个数码管上实现00-99的循环显示_第3页
汇编语言:在两个数码管上实现00-99的循环显示_第4页
汇编语言:在两个数码管上实现00-99的循环显示_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

此程序为在两个数码管上实现 00 99 的循环显示 设置 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 ORG0000H LJMPINIT ORG000BH LJMPTIME0 定时器 0 中断入口 ORG 0013H LJMP KBHIT 初始化 ORG0030H INIT MOVDPTR 4000H HD7279A 的地址 MOVA 10011111B HD7279A 初始化 CS CLK DATA MOVX DPTR A LCALLDELAY25MS 延时后进入工作状态 MOVDATA OUT 10100100B HD7279A 复位指令 LCALLSEND 发送指令 MOVA 10011111B 设回 CS 为高电平 MOVX DPTR A MOVR4 20 定时器一个周期内的中断数 MOV R2 0 MOV R3 0 MOV R4 0 MOV R5 0 MOVMSECOND 0 MOVSECOND 0 MOVMINITE 0 MOVHOUR 0 数字计数器 MOVR6 0 个位寄存器 MOVR7 0 十位寄存器 MOVTMOD 1 设置定时器 0 工作模式为 方式 1 MOVTH0 3CH 设置定时器定时值 MOVTL0 0B0H MOVTH0 0FCH 设置定时器定时值 MOVTL0 18H SETBEA 开总中断 SETBET0 开定时器 0 中断 SETB EX1 SETBTR0 开始计时 主程序 MAIN MOVA R2 把数字转换为 2 个 BCD 码 MOVB 10 DIVAB MOVR6 B 个位放在 R6 MOVR7 A 十位放在 R7 MOVDATA OUT 11001000B 下载数据且按方式 1 译码 找到了第 1 个数码管 LCALLSEND LCALLDELAY25 T4 指令与数据时间间隔 MOVDATA OUT R1 指令的数据部分 显示个位 LCALLSEND MOVA 10011111B MOVX DPTR A MOVDATA OUT 11001001B 下载数据且按方式 1 译码 找到了第 2 个数码管 LCALLSEND LCALLDELAY25 T4 指令与数据时间间隔 MOVDATA OUT R2 指令的数据部分 显示个位 LCALLSEND MOVA 10011111B MOVX DPTR A MOVDATA OUT 11001010B 下载数据且按方式 1 译码 找到了第 3 个数码管 LCALLSEND LCALLDELAY25 T4 指令与数据时间间隔 MOVDATA OUT R3 指令的数据部分 显示个位 LCALLSEND MOVA 10011111B MOVX DPTR A LCALLDELAY1MS 显示延时 MOVA R4 把数字转换为 2 个 BCD 码 MOVB 10 DIVAB MOVR6 B 个位放在 R6 MOVR7 A 十位放在 R7 MOVDATA OUT 11001011B 下载数据且按方式 1 译码 找到了第 4 个数码管 LCALLSEND LCALLDELAY25 T4 指令与数据时间间隔 MOVDATA OUT R6 指令的数据部分 显示个位 LCALLSEND MOVA 10011111B MOVX DPTR A LCALLDELAY1MS 显示延时 MOVDATA OUT 11001100B 下载数据且按方式 1 译码 找到了第 5 个数码管 LCALLSEND LCALLDELAY25 T4 指令与数据时间间隔 MOVDATA OUT R7 指令的数据部分 显示十位 LCALLSEND MOVA 10011111B MOVX DPTR A LCALLDELAY1MS 显示延时 MOVA R5 把数字转换为 2 个 BCD 码 MOVB 10 DIVAB MOVR6 B 个位放在 R6 MOVR7 A 十位放在 R7 MOVDATA OUT 11001101B 下载数据且按方式 1 译码 找到了第 6 个数码管 LCALLSEND LCALLDELAY25 T4 指令与数据时间间隔 MOVDATA OUT R6 指令的数据部分 显示个位 LCALLSEND MOVA 10011111B MOVX DPTR A LCALLDELAY1MS 显示延时 MOVDATA OUT 11001110B 下载数据且按方式 1 译码 找到了第 7 个数码管 LCALLSEND LCALLDELAY25 T4 指令与数据时间间隔 MOVDATA OUT R7 指令的数据部分 显示十位 LCALLSEND MOVA 10011111B MOVX DPTR A LCALLDELAY1MS 显示延时 LJMPMAIN 下一循环 SJMP 发送子程序 SEND CLRET0 加锁 MOVBIT COUNT 8 无论指令还是数据 一次只发 送 8 位 MOVA 00011111B 设 CS 为低电平 MOVX DPTR A LCALLDELAY50 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 A LCALL DELAY8 T3 字节传送中 CLK 脉冲时间 MOV A DATA OUT 移位待发送的指令或数据 为下 一位的发送作准备 RL A MOV DATA OUT A DJNZ BIT COUNT SENDLOOP 发送不到 8 位 继续循环 MOVA 00011111B 发送完毕 恢复 DAT MOVX DPTR A SETBET0 释放锁 RET 接收子程序 本程序中用不到 但在添加按键操作的时候用于读取键值 RECEIVE CLRET0 加锁 MOVBIT COUNT 8 接收 8 位数据 MOVDATA IN 0 清空接收数据缓冲寄存器 MOVA 00111111B 设 CS 为低电平 同时保证 DAT 为高电平 输入状态 MOVX DPTR A LCALLDELAY25 T5 读键盘指令中指令与数据 时间间隔 接收循环 HD7279A 采用串行方式与微处理器通讯 一次接收一位 RECEIVELOOP SETBACC 6 设 CS 为高电平 MOVX DPTR A LCALLDELAY8 T6 输出键盘数据建立时间 MOV A DATA IN 接收数据缓冲寄存器向左移位 准备 接收一位数据 数据的高位会先发送 RL A MOV DATA IN A MOVXA DPTR 读取数据 MOVC ACC 5 取出数据位 DAT MOVA DATA IN MOVACC 0 C MOVDATA IN A 数据放进接收数据缓冲寄存器 MOVA 00111111B 设 CS 为低电平 同时保证 DAT 为高电平 输入状态 MOVX DPTR A LCALLDELAY8 T7 读键盘数据是 CLK 脉冲宽 DJNZBIT COUNT RECEIVELOOP 接收不到 8 位 继续循环 MOVA 00011111B 接收完毕 恢复 DAT MOVX DPTR A SETBET0 释放锁 RET 定时器 0 中断程序 TIME0 DJNZR4 NEXT 定时器一个周期内中断数不够就 继续计时 INCR2 数字加 1 MOVR4 20 重置定时器一个周期内中断数 CJNER2 100 NEXT 数字不够 100 继续加 1 MOVR2 0 数字到达 100 就清零 INC R3 CJNER3 10 NEXT MOVR3 0 INC R4 CJNER4 60 NEXT MOVR4 0 INC R5 CJNER5 60 NEXT MOVR5 0 NEXT MOVTH0 0FCH 定时器方式 1 中断后需要重新 设置定时器定时值 MOVTL0 18H RETI KBHIT PUSHPSW PUSH ACC PUSH DPH PUSH DPL PUSH DATA OUT 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 OUT START SETB TR0 SJMP OUT STOP CLR TR0 SJMP OUT CLEAR MOVR2 0 MOVR3 0 MOVR4 0 MOVR5 0 OUT POP ACC MOV R1 A POP ACC MOV R0 A POP BIT COUNT POP DATA OUT POP DPL POP DPH POP ACC POPPSW RETI 延时 25ms 子程序 DELAY25MS MOVR0 49 D11 MOVR1 253 NOP D12 DJNZR1 D12 DJNZR0 D11 RET 延时 50 s 子程序 DEL

温馨提示

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

评论

0/150

提交评论