总汇编语言在两个数码管上实现00-99地循环显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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译码,找到了

相关文档
最新文档