采用定时器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
程序结束
以下程序使用定时器1计数,定时10ms,60H为妙计数单元,4FH单元为秒标示位,一秒时间到,置位4FH***********************************************************************************************************************ORG 0000H 程序从0地址开始LJMP MAIN 跳到STRAT处执行
ORG 001BH
LJMP JIA1
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 调用显示子程序宴清 JIA1:MOV TH1,#068H赋初值
MOV TL1,#0F0H
DJNZ 60H,TT 60H单元自减1,判断是否为0,不为0则跳转到TT处
MOV 60H,#100 60H单元为0,则重新给其赋值100
SETB 4FH 同链祥桐时置棚坦位4FH单元
INC R3R3自加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程序结束
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)