汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx

上传人:b****6 文档编号:20601144 上传时间:2023-01-24 格式:DOCX 页数:9 大小:17.19KB
下载 相关 举报
汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx_第1页
第1页 / 共9页
汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx_第2页
第2页 / 共9页
汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx_第3页
第3页 / 共9页
汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx_第4页
第4页 / 共9页
汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx

《汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

汇编语言在两个数码管上实现0099的循环显示Word文档格式.docx

MOVA,#10011111B;

HD7279A初始化CS.CLK.DATA

MOVX@DPTR,A

LCALLDELAY25MS;

延时落后入工作状况

MOVDATA_OUT,#10100100B;

HD7279A复位指令

LCALLSEND;

发送指令

设回CS为高电平

MOVX@DPTR,A

//MOVR4,#20;

准时器一个周期内的中止数

MOVR2,#0

MOVR3,#0

MOVR4,#0

MOVR5,#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中止

SETBEX1

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;

指令的数据部分,显示个位

MOVA,#10011111B

MOVX@DPTR,A

MOVDATA_OUT,#11001001B;

下载数据且按方法1译码,找到了第2个数码管

MOVDATA_OUT,R2;

MOVDATA_OUT,#11001010B;

下载数据且按方法1译码,找到了第3个数码管

MOVDATA_OUT,R3;

//LCALLDELAY1MS;

显示延时

MOVA,R4;

MOVDATA_OUT,#11001011B;

下载数据且按方法1译码,找到了第4个数码管

MOVDATA_OUT,R6;

MOVDATA_OUT,#11001100B;

下载数据且按方法1译码,找到了第5个数码管

MOVDATA_OUT,R7;

指令的数据部分,显示十位

MOVA,R5;

MOVDATA_OUT,#11001101B;

下载数据且按方法1译码,找到了第6个数码管

MOVDATA_OUT,#11001110B;

下载数据且按方法1译码,找到了第7个数码管

LJMPMAIN;

下一轮回

SJMP$

发送子程序

SEND:

CLRET0;

加锁

MOVBIT_COUNT,#8;

无论指令照样数据,一次只发送8位

MOVA,#00011111B;

设CS为低电平

LCALLDELAY50;

T1,从CS降低沿至CLK脉冲时光

发送轮回,HD7279A采取串行方法与微处理器通信,一次发送一位

SENDLOOP:

MOVA,DATA_OUT;

掏动身送的指令或数据

MOVC,ACC.7;

串行发送从高位到低位发送,故先取最高位

输出到DAT位

MOVACC.5,C

SETBC;

设CLK为高电平

MOVACC.6,C

LCALLDELAY8;

T2,传送指令时CLK脉冲宽度

CLRC;

设CLK为低电平

T3,字节传送中CLK脉冲时光

MOVA,DATA_OUT;

移位待发送的指令或数据,为下一位的发送作预备

RLA

MOVDATA_OUT,A

DJNZBIT_COUNT,SENDLOOP;

发送不到8位,持续轮回

发送完毕,恢复DAT

释放锁

RET

吸收子程序(本程序顶用不到,但在添加按键操纵的时刻用于读取键值)

RECEIVE:

CLRET0;

吸收8位数据

MOVDATA_IN,#0;

清空吸收数据缓冲存放器

MOVA,#00111111B;

设CS为低电平,同时包管DAT为高电平(输入状况)

MOVX@DPTR,A

T5,读键盘指令中指令与数据时光距离

吸收轮回,HD7279A采取串行方法与微处理器通信,一次吸收一位

RECEIVELOOP:

SETBACC.6;

设CS为高电平

LCALLDELAY8;

T6,输出键盘数据树立时光

MOVA,DATA_IN;

吸收数据缓冲存放器向左移位,预备吸收一位数据,数据的高位会先发送

MOVDATA_IN,A

MOVXA,@DPTR;

读取数据

MOVC,ACC.5;

掏出数据位DAT

MOVA,DATA_IN

MOVACC.0,C

MOVDATA_IN,A;

数据放进吸收数据缓冲存放器

T7,读键盘数据是CLK脉冲宽

DJNZBIT_COUNT,RECEIVELOOP;

吸收不到8位,持续轮回

吸收完毕,恢复DAT

准时器0中止程序

TIME0:

//DJNZR4,NEXT;

准时器一个周期内里断数不敷就持续计时

INCR2;

数字加1

重置准时器一个周期内里断数

CJNER2,#100,NEXT;

数字不敷100持续加1

MOVR2,#0;

数字到达100就清零

INCR3

CJNER3,#10,NEXT

MOVR3,#0

INCR4

CJNER4,#60,NEXT

MOVR4,#0

INCR5

CJNER5,#60,NEXT

MOVR5,#0

NEXT:

MOVTH0,#0FCH;

准时器方法1中止后须要从新设置准时器准时价

RETI

KBHIT:

PUSHPSW

PUSHACC

PUSHDPH

PUSHDPL

PUSHDATA_OUT

PUSHBIT_COUNT

MOVA,R0

MOVA,R1

MOVDATA_OUT,#00010101B

LCALLSEND

LCALLDELAY25

LCALLRECEIVE

MOVA,DATA_IN

JZSTART

DECA

JZSTOP

JZCLEAR

SJMPOUT

START:

SETBTR0

STOP:

CLRTR0

CLEAR:

MOVR2,#0

MOVR3,#0

MOVR5,#0

OUT:

POPACC

MOVR1,A

POPACC

MOVR0,A

POPBIT_COUNT

POPDATA_OUT

POPDPL

POPDPH

POPPSW

延时25ms子程序

DELAY25MS:

MOVR0,#49

D11:

MOVR1,#253

NOP

D12:

DJNZR1,D12

DJNZR0,D11

延时50μs子程序

DELAY50:

MOVR0,#23

D21:

DJNZR0,D21

延时25μs子程序

DELAY25:

MOVR0,#11

D31:

DJNZR0,D31

延时8μs子程序

DELAY8:

MOVR0,#2

D41:

DJNZR0,D41

延时1ms子程序

DELAY1MS:

MOVR0,#2

D51:

MOVR1,#247

D52:

DJNZR1,D52

DJNZR0,D51

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

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

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