仪器社区

用单片机汇编语言编写60秒计时器!

充气儿观音 2017-11-28
用单片机汇编语言编写60秒计时器 ,
评论
全部评论
dai8411
;数码管段选接P1口,位选接P2.0和P2.1,
;采用定时器T1定时10ms,60H为1s计数单元,计数100次为1s ORG 0000H ;程序从0地址开始
LJMP MAIN ;跳到MAIN处执行
ORG 001BH ;定时器T1
LJMP TIME1
ORG 0030H
MAIN:MOV TMOD,#01H ;设置T1工作在模式1
MOV TH1,#068H ;赋初值,定时10ms
MOV TL1,#0F0H
MOV IE,#88H ;开CPU中断,开定时器1中断
SETB TR1 ;启动T1定时器工作
MOV 60H,#100 ;给60H单元赋初值
CLR 4FH ;清零4FH单元
DISPLAY: ;显示子程序
MOV DPTR,#TAB ;DPTR指向编码表位置
MOV A,R3 ;将R3的内容复制到A
MOV B,#10
DIV AB ;A除B,商给A,余数给B

MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P1,A ;由P1口输出A的内容
SETB P2.0 ;置位P2.0
CLR P2.0 ;清零P2.0

MOV A,B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P1,A ;由P1口输出A的内容
SETB P2.1 ;置位P2.1
CLR P2.1 ;清零P2.1
JNB 4FH,DISPLAY ;判断1秒时间是否到,没有到,则跳转到DIAPLAY处
CLR 4FH ;1秒到,清4FH
LJMP DISPLAY ;调用显示子程序 TIME1:MOV TH1,#068H ;赋初值
MOV TL1,#0F0H
DJNZ 60H,TT ;60H单元自减1,判断是否为0,不为0则跳转到TT处
MOV 60H,#100 ;60H单元为0,则重新给其赋值100
SETB 4FH ;同时置位4FH单元
INC R3 ;R3自加1
CJNE R3,#60,TT ;判断R3是否为60,否则跳转TT处
MOV R3,#0 ;R3为60,则给R3赋0
TT:RETITAB: ;编码表
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;编码
END ;程序结束
18 0 2017-11-28 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论