总汇编语言在两个数码管上实现00-99地循环显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;此程序为在两个数码管上实现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
ORG 0000H
LJMP INIT
ORG 000BH
LJMP TIME0 ;定时器0中断入口
ORG 0013H
LJMP KBHIT
;初始化
ORG 0030H
INIT: MOV DPTR,#4000H ;HD7279A的地址
MOV A,#10011111B ;HD7279A初始化CS、CLK、DATA
MOVX @DPTR,A
LCALL DELAY25MS ;延时后进入工作状态
MOV DATA_OUT,#10100100B ;HD7279A复位指令
LCALL SEND ;发送指令
MOV A,#10011111B ;设回CS为高电平
MOVX @DPTR,A
// MOV R4,#20 ;定时器一个周期内的中断数MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#0
// MOV MSECOND,#0
// MOV SECOND,#0
// MOV MINITE,#0
// MOV HOUR,#0 ;数字计数器
MOV R6,#0 ;个位寄存器
MOV R7,#0 ;十位寄存器
MOV TMOD,#1 ;设置定时器0工作模式为方式1 // MOV TH0,#3CH ;设置定时器定时值
// MOV TL0,#0B0H
MOV TH0,#0FCH ;设置定时器定时值
MOV TL0,#18H
SETB EA ;开总中断
SETB ET0 ;开定时器0中断
SETB EX1
SETB TR0 ;开始计时
;主程序
MAIN: MOV A,R2 ;把数字转换为2个BCD码
MOV B,#10
DIV AB
MOV R6,B ;个位放在R6
MOV R7,A ;十位放在R7
MOV DATA_OUT,#11001000B ;下载数据且按方式1译码,找到了第1个数码管
LCALL SEND
LCALL DELAY25 ;T4,指令与数据时间间隔
MOV DATA_OUT,R1 ;指令的数据部分,显示个位
LCALL SEND
MOV A,#10011111B
MOVX @DPTR,A
MOV DATA_OUT,#11001001B ;下载数据且按方式1译码,找到了第2个数码管
LCALL SEND
LCALL DELAY25 ;T4,指令与数据时间间隔
MOV DATA_OUT,R2 ;指令的数据部分,显示个位
LCALL SEND
MOV A,#10011111B
MOVX @DPTR,A
MOV DATA_OUT,#11001010B ;下载数据且按方式1译码,找到了第3个数码管
LCALL SEND
LCALL DELAY25 ;T4,指令与数据时间间隔
MOV DATA_OUT,R3 ;指令的数据部分,显示个位
LCALL SEND
MOV A,#10011111B
MOVX @DPTR,A
// LCALL DELAY1MS ;显示延时
MOV A,R4 ;把数字转换为2个BCD码
MOV B,#10
DIV AB
MOV R6,B ;个位放在R6
MOV R7,A ;十位放在R7
MOV DATA_OUT,#11001011B ;下载数据且按方式1译码,找到了第4个数码管
LCALL SEND
LCALL DELAY25 ;T4,指令与数据时间间隔
MOV DATA_OUT,R6 ;指令的数据部分,显示个位
LCALL SEND
MOV A,#10011111B
MOVX @DPTR,A
// LCALL DELAY1MS ;显示延时
MOV DATA_OUT,#11001100B ;下载数据且按方式1译码,找到了第5个数码管
LCALL SEND
LCALL DELAY25 ;T4,指令与数据时间间隔
MOV DATA_OUT,R7 ;指令的数据部分,显示十位
LCALL SEND
MOV A,#10011111B
MOVX @DPTR,A
// LCALL DELAY1MS ;显示延时
MOV A,R5 ;把数字转换为2个BCD码
MOV B,#10
DIV AB
MOV R6,B ;个位放在R6
MOV R7,A ;十位放在R7
MOV DATA_OUT,#11001101B ;下载数据且按方式1译码,找到了第6个数码管
LCALL SEND
LCALL DELAY25 ;T4,指令与数据时间间隔
MOV DATA_OUT,R6 ;指令的数据部分,显示个位
LCALL SEND
MOV A,#10011111B
MOVX @DPTR,A
// LCALL DELAY1MS ;显示延时
MOV DATA_OUT,#11001110B ;下载数据且按方式1译码,找到了