新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 合泰单片机定时器数码管显示

合泰单片机定时器数码管显示

作者: 时间:2016-12-01 来源:网络 收藏

MOVA,10;
SUBA,[8DH];用10减个位数码管的数判断是否相等
SNZZ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMPA2;Z=1结果不等返回继续加1
MOVA,0;Z=0结果相等
MOV[8DH],A;存0继续显示
INC[8CH];十位数码管加1
MOVA,10;用10减十位数码管的数判断是否相等
SUBA,[8CH];
SNZZ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMPA2;Z=1结果不等返回继续加1
MOVA,0;Z=0结果相等
MOV[8CH],A;存0继续显示
INC[8BH];百位数码管加1
MOVA,10;
SUBA,[8BH];用10减百位数码管的数判断是否相等
SNZZ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMPA2;Z=1结果不等返回继续加1
MOVA,0;Z=0结果相等
MOV[8BH],A;存0继续显示
INC[8AH];千位数码管加1
MOVA,10;用10减千位数码管的数判断是否相等
SUBA,[8AH];
SNZZ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMPA2;Z=1结果不等返回继续加1
MOVA,0;Z=0结果相等
MOV[8AH],A;存0继续显示
JMPA2;已经到9999清为0000返回反复执行
;*******************************************************
;中断服务子程序
;*******************************************************
ZD1:
MOV[0F0H],A;压栈ACC到0F0H
MOVA,STATUS;
MOV[0F1H],A;压栈status标志寄存器到0F1H
CLRPC;清PC(清屏幕)
MOVA,Q1;数据表地址
CLRTBHP;清数据表地址高位否则出错
ADDA,IAR0;利用间接寄存器找到要显示段码所在数据表的地址
MOVTBLP,A;表格指针寄存器TBLP
TABRDPD;查表并将数据存到PD口寄存器
MOVA,[80H];位码寄存器
MOVPC,A;将位码寄存器的数存到PC口寄存器
;段码和位码的数都有了所以数码管被点亮
INCMP0;间接寄存器指针加1指向下一个段码寄存器
RL[80H];左移位码寄存器控制下一个数码管
SNZ[80H].5;判断是否控制完4个数码管
JMPZD2;退出中断继续
MOVA,1;是则从新初始化寄存器数据
MOV[80H],A;
MOVA,8AH;千位数码管对应寄存器
MOVMP0,A;存到间接寄存器0
ZD2:
MOVA,[0F1H];弹栈后进先出先进后出
MOVSTATUS,A;弹栈0F1H的数到标志寄存器
MOVA,[0F0H];弹栈0F0H的数到acc
CLRMF0F;清多功能标志
CLRT2AF;清定时器2比较器A标志
RETI;中断返回
;*******************************************************
;延时子程序
;*******************************************************
M001:
MOVA,1
MOV[85H],A
M002:
MOVA,200
MOV[86H],A
M003:
MOVA,250
MOV[87H],A
M004:
SDZ[87H]
JMPM004
SDZ[86H]
JMPM003
SDZ[85H]
JMPM002
RET
END

本文引用地址:https://www.eepw.com.cn/article/201612/324334.htm

上一页 1 2 下一页

评论


技术专区

关闭