汇编语言:定时器实现数码管0-99

本文介绍了一段使用SHU EQU40H进行定时的嵌入式程序,通过TX EQU41H设置定时器,实现0.5秒周期的计数,并展示了主函数、显示时间和延时函数的详细实现过程。

SHU  EQU 40H 

TX   EQU 41H  //定时0.5秒

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP TIME0

ORG 0030H

MAIN:

MOV P2,#00H   //关闭所有数码管

MOV SP,#60H    //设置堆栈地址   

MOV SHU,#0

MOV TX,#0      //清零

MOV TMOD,#01H

MOV TH0,#3CH   //初值 定时500ms

MOV TL0,#0B0H

SETB EA

SETB ET0

SETB TR0

LOOP:

LCALL DISPLAY         //调用显示时间

SJMP LOOP

DISPLAY:    //显示函数

MOV DPTR,#TAB

MOV A,SHU       //将数值送到A

MOV B,#10

DIV AB          //分离个位和十位

MOVC A,@A+DPTR

MOV P1,A        //显示十位

MOV P2,#40H     //位选

DJNZ R2,$       //延时

MOV P2,#00H     //关闭数码管

MOV A,B

MOVC A,@A+DPTR

MOV P1,A         //显示个位

MOV P2,#80H      //位选

DJNZ R2,$          //延时

MOV P2,#00H      //关闭数码管 消隐

RET

TIME0:

PUSH PSW

PUSH ACC  

MOV TH0,#3CH      //重新载入初值

MOV TL0,#0B0H

INC TX            //500ms TX自动加一次

MOV A,TX

CJNE A,#10,TIME10  //0.5s一次 ,10*50ms=0.5S

MOV TX,#0

INC SHU               //秒自动加1

MOV A,SHU

CJNE A,#100,TIME10       //SHU是否到100

MOV SHU,#0

TIME10:     

POP ACC            //出栈

POP PSW

RETI

TAB:

DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H   //共阴数码管段码

   

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值