汇编语言知识学习在两个数码管上实现0099的循环显示Word文档下载推荐.docx
《汇编语言知识学习在两个数码管上实现0099的循环显示Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编语言知识学习在两个数码管上实现0099的循环显示Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
000BH
TIME0
定时器0中断入口
0013H
KBHIT
初始化
0030H
INIT:
MOV
DPTR,#4000H
HD7279A的地址
A,#10011111B
HD7279A初始化CS、CLK、
DATA
MOVX
@DPTR,A
LCALL
DELAY25MS
延时后进入工作状态
DATA_OUT,#1O1OO1OOB
HD7279A复位指令
SEND
发送指令
设回CS为高电平
R4,#20
定时器一个周期内的中断数
R2,#0
R3,#0
R4,#0
R5,#0
MSECOND,#O
SECOND,#。
MINITE,#0
HOUR,#0
数字计数器
R6,#0
个位寄存器
R7,#0
十位寄存器
SETB
EA
开总中断
ET0
开定时器0中断
EX1
TR0
开始计时
注程序
MAIN:
A,R2
B,#10
DIV
AB
R6,B
R7,A
把数字转换为2个BCD码
个位放在R6
十位放在R7
译码,找到了第1个数码管
DELAY25
T4,指令与数据时间间隔
DATA_OUT,R1
指令的数据部分,显示个位
DATA_OUT,#11001001B;
下载数据且按方式-
译码,找到了第2个数码管
DATA_OUT,R2
DATA_OUT,#11OO1O1OB
下载数据且按方式1译码
找到了第3个数码管
DATA_OUT,R3
DELAY1MS
显示延时
A,R4
DATA_OUT,#11001011B
下载数据且按方式
1译码
找到了第
4个数码管
DATA_OUT,R6
DATA_OUT,#11OO11OOB
5个数码管
DATA_OUT,R7
指令的数据部分,显示十位
A,R5
DATA_OUT,#11OO11O1B
6个数码管
DATA_OUT,#11001110B
7个数码管
MAIN
下一循环
SJMP
$
发送子程序
SEND:
CLR
加锁
BIT_COUNT,#8
无论指令还是数据,一次只发送
8位
A,#00011111B
设CS为低电平
DELAY50
T1,从CS下降沿至CLK脉冲时
间
发送循环,HD7279A采用串行方式与微处理器通讯,一次发送一位
SENDLOOP:
MOV
A,DATA_OUT
最高位
C,ACC.7
串行发送从高位到低位发送,故先取
输出到DAT位
ACC.5,C
C
设CLK为高电平
ACC.6,C
DELAY8
T2,传送指令时CLK脉冲宽度
设CLK为低电平
T3,字节传送中CLK脉冲时间
移位待发送的指令或数据,为下
取出发送的指令或数据
一位的发送作准备
RLA
MOVDATA_OUT,A
DJNZBIT_COUNT,SENDLOOP
发送不到8位,继续循环
发送完毕,恢复DAT
ET0释放锁
RET
接收子程序(本程序中用不到,但在添加按键操作的时候用于读取键值)
RECEIVE:
CLR
ET0加锁
BIT_COUNT,#8;
接收8位数据
DATA_IN,#0;
清空接收数据缓冲寄存器
A,#00111111B;
设CS为低电平,同时保证DAT
为高电平(输入状态)
DELAY25;
T5,读键盘指令中指令与数据
时间间隔
接收循环
HD7279A米用串行方式与微处理器通讯,一次接收一位
RECEIVELOOP:
ACC.6设CS为高电平
DELAY8;
T6,输出键盘数据建立时间
A,DATA_IN;
接收数据缓冲寄存器向左移位,准备
接收一位数据,数据的高位会先发送
RL
DATA_IN,A
A,@DPTR
读取数据
C,ACC.5
取出数据位DAT
A,DATA_IN
ACC.0,C
数据放进接收数据缓冲寄存器
A,#00111111B
设CS为低电平,同时保证DAT
(输入状态)
T7,读键盘数据是CLK脉冲宽
DJNZ
BIT_COUNT,RECEIVELOOP
接收不到8位,继续循环
接收完毕,恢复DAT
释放锁
为高电平
TIMEO:
定时器0中断程序
DJNZR4,NEXT淀时器一个周期内中断数不够就继续计时
INC
R2
数字加1
CJNE
R2,#100,NEXT
R3
R3,#10,NEXT
R4
R4,#60,NEXT
R5
R5,#60,NEXT
NEXT:
TH0,#0FCH
设置定时器定时值
重置定时器一个周期内中断数
数字不够100继续加1
数字到达100就清零
定时器方式1中断后需要重新
TL0,#18H
RETI
KBHIT:
PUSH
PSW
ACC
DPH
DPL
START:
A,R0
A,R1
DATA_OUT,#00010101B
RECEIVE
JZ
START
DEC
A
STOP
CLEAR
OUT
STOP:
CLEAR:
OUT:
POP
R1,A
R0,A
延时25ms子程序
DELAY25MS:
R0,#49
D11:
R1,#253
NOP
D12:
R1,D12
DJNZR0,D11
涎时50阴子程序
DELAY50:
R0,#23
D21:
R0,D21
涎时25阴子程序
DELAY25:
R0,#11
D31:
R0,D31
DELAY8:
D41:
延时8阳子程序
MOVR0,#2
DJNZR0,D41
END