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

下载本文档

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

文档简介

1、;此程序为在两个数码管上实现00-99的循环显示;设置ramDATA_IN DATA 20H;接收数据缓冲寄存器DATA_OUT DATA 21H;发送数据缓冲寄存器BIT_COUNT DATA 22H;数据位数寄存器/HOUR DATA 23H/MINITE DATA 24H/SECOND DATA 25H/MSECOND DATA 26HORG0000HLJMPINITORG000BHLJMPTIME0;定时器0中断入口 ORG 0013HLJMP KBHIT;初始化ORG0030HINIT:MOVDPTR,#4000H;HD7279A的地址MOVA,#B;HD7279A初始化CS、CLK

2、、DATAMOVXDPTR,ALCALLDELAY25MS;延时后进入工作状态MOVDATA_OUT,#B;HD7279A复位指令LCALLSEND;发送指令MOVA,#B;设回CS为高电平MOVX DPTR,A/MOVR4,#20;定时器一个周期内的中断数MOV R2,#0MOV R3,#0MOV R4,#0MOV R5,#0/MOVMSECOND,#0/MOVSECOND,#0/MOVMINITE,#0/MOVHOUR,#0 ;数字计数器MOVR6,#0;个位寄存器MOVR7,#0;十位寄存器MOVTMOD,#1;设置定时器0工作模式为方式1/MOVTH0,#3CH;设置定时器定时值/MO

3、VTL0,#0B0HMOVTH0,#0FCH;设置定时器定时值MOVTL0,#18HSETBEA;开总中断SETBET0;开定时器0中断SETB EX1 SETBTR0 ;开始计时;主程序MAIN:MOVA,R2;把数字转换为2个BCD码MOVB,#10DIVABMOVR6,B;个位放在R6MOVR7,A;十位放在R7MOVDATA_OUT,#B;下载数据且按方式1译码,找到了第1个数码管LCALLSENDLCALLDELAY25;T4,指令与数据时间间隔MOVDATA_OUT,R1;指令的数据部分,显示个位LCALLSENDMOVA,#BMOVXDPTR,AMOVDATA_OUT,#B;下载

4、数据且按方式1译码,找到了第2个数码管LCALLSENDLCALLDELAY25;T4,指令与数据时间间隔MOVDATA_OUT,R2;指令的数据部分,显示个位LCALLSENDMOVA,#BMOVXDPTR,AMOVDATA_OUT,#B;下载数据且按方式1译码,找到了第3个数码管LCALLSENDLCALLDELAY25;T4,指令与数据时间间隔MOVDATA_OUT,R3;指令的数据部分,显示个位LCALLSENDMOVA,#BMOVXDPTR,A/LCALLDELAY1MS;显示延时 MOVA,R4;把数字转换为2个BCD码MOVB,#10DIVABMOVR6,B;个位放在R6MOVR

5、7,A;十位放在R7MOVDATA_OUT,#B;下载数据且按方式1译码,找到了第4个数码管LCALLSENDLCALLDELAY25;T4,指令与数据时间间隔MOVDATA_OUT,R6;指令的数据部分,显示个位LCALLSENDMOVA,#BMOVXDPTR,A/LCALLDELAY1MS;显示延时MOVDATA_OUT,#B;下载数据且按方式1译码,找到了第5个数码管LCALLSENDLCALLDELAY25;T4,指令与数据时间间隔MOVDATA_OUT,R7;指令的数据部分,显示十位LCALLSENDMOVA,#BMOVXDPTR,A/LCALLDELAY1MS;显示延时 MOVA,

6、R5;把数字转换为2个BCD码MOVB,#10DIVABMOVR6,B;个位放在R6MOVR7,A;十位放在R7MOVDATA_OUT,#B;下载数据且按方式1译码,找到了第6个数码管LCALLSENDLCALLDELAY25;T4,指令与数据时间间隔MOVDATA_OUT,R6;指令的数据部分,显示个位LCALLSENDMOVA,#BMOVXDPTR,A/LCALLDELAY1MS;显示延时MOVDATA_OUT,#B;下载数据且按方式1译码,找到了第7个数码管LCALLSENDLCALLDELAY25;T4,指令与数据时间间隔MOVDATA_OUT,R7;指令的数据部分,显示十位LCALL

7、SENDMOVA,#BMOVXDPTR,A/LCALLDELAY1MS;显示延时LJMPMAIN;下一循环SJMP$;发送子程序SEND:CLRET0;加锁MOVBIT_COUNT,#8;无论指令还是数据,一次只发送8位MOVA,#B;设CS为低电平MOVXDPTR,ALCALLDELAY50;T1,从CS下降沿至CLK脉冲时间;发送循环,HD7279A采用串行方式与微处理器通讯,一次发送一位SENDLOOP:MOV A,DATA_OUT;取出发送的指令或数据MOV C,ACC.7;串行发送从高位到低位发送,故先取最高位MOV A,#B;输出到DAT位MOV ACC.5,CMOVX DPTR,

8、ASETB C ;设CLK为高电平MOV ACC.6,CMOVX DPTR,ALCALL DELAY8;T2,传送指令时CLK脉冲宽度CLR C;设CLK为低电平MOV ACC.6,CMOVX DPTR,ALCALL DELAY8;T3,字节传送中CLK脉冲时间MOV A,DATA_OUT;移位待发送的指令或数据,为下一位的发送作准备RL AMOV DATA_OUT,ADJNZ BIT_COUNT,SENDLOOP;发送不到8位,继续循环MOVA,#B;发送完毕,恢复DATMOVX DPTR,ASETBET0;释放锁RET;接收子程序(本程序中用不到,但在添加按键操作的时候用于读取键值)REC

9、EIVE:CLRET0;加锁MOVBIT_COUNT,#8;接收8位数据MOVDATA_IN,#0;清空接收数据缓冲寄存器MOVA,#B;设CS为低电平,同时保证DAT为高电平(输入状态)MOVXDPTR,ALCALLDELAY25;T5,读键盘指令中指令与数据时间间隔;接收循环,HD7279A采用串行方式与微处理器通讯,一次接收一位RECEIVELOOP:SETBACC.6;设CS为高电平MOVXDPTR,ALCALLDELAY8;T6,输出键盘数据建立时间MOV A,DATA_IN;接收数据缓冲寄存器向左移位,准备接收一位数据,数据的高位会先发送RL AMOV DATA_IN,AMOVXA

10、,DPTR;读取数据MOVC,ACC.5;取出数据位DATMOVA,DATA_INMOVACC.0,CMOVDATA_IN,A;数据放进接收数据缓冲寄存器MOVA,#B;设CS为低电平,同时保证DAT为高电平(输入状态)MOVXDPTR,ALCALLDELAY8;T7,读键盘数据是CLK脉冲宽DJNZBIT_COUNT,RECEIVELOOP;接收不到8位,继续循环MOVA,#B;接收完毕,恢复DATMOVX DPTR,ASETBET0;释放锁RET;定时器0中断程序TIME0:/ DJNZR4,NEXT;定时器一个周期内中断数不够就继续计时INCR2;数字加1/MOVR4,#20;重置定时器

11、一个周期内中断数CJNER2,#100,NEXT;数字不够100继续加1MOVR2,#0;数字到达100就清零INC R3CJNER3,#10,NEXTMOVR3,#0INC R4CJNER4,#60,NEXTMOVR4,#0INC R5CJNER5,#60,NEXTMOVR5,#0NEXT:MOVTH0,#0FCH;定时器方式1中断后需要重新设置定时器定时值MOVTL0,#18HRETIKBHIT: PUSHPSWPUSH ACC PUSH DPHPUSH DPL PUSH DATA_OUTPUSH BIT_COUNTMOV A,R0PUSH ACCMOV A,R1PUSH ACC MOV

12、DATA_OUT,#B LCALL SENDLCALL DELAY25LCALL RECEIVEMOV A,DATA_INJZ STARTDEC ADEC AJZ STOPDEC AJZ CLEARSJMP OUTSTART: SETB TR0 SJMP OUTSTOP: CLR TR0 SJMP OUTCLEAR: MOVR2,#0MOVR3,#0MOVR4,#0MOVR5,#0OUT: POP ACC MOV R1,APOP ACCMOV R0,APOP BIT_COUNT POP DATA_OUTPOP DPLPOP DPHPOP ACCPOPPSWRETI ;延时25ms子程序DELAY25MS:MOVR0,#49D11:MOVR1,#253NOPD12:DJNZR1,D12DJNZR0,D11RET;延时50s子程序DELAY5

温馨提示

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

最新文档

评论

0/150

提交评论