一、
设计任务
1、如图1,单片机的P2口接上数码管显示十位,P3口接上数码管显示个位。设计00----59计数器,采用软件延时的方式。
2如图2,单片机的P2口接上数码管显示十位,P3口接上数码管显示个位,按键接在P0.0上。设计00----99计数器,每按下一次按键,数码管的计数值加一。
3、如图3,单片机的P2口接上数码管显示十位,P3口接上数码管显示个位。设计00----59计数器,采用定时/计数器T0。
4、如图4,单片机的P1口接上数码管显示十位,P3口接上数码管显示个位,设计60----00计数器,采用定时器T1。
二、电路原理图
图1:60s计数器,软件延时
图2:00----99计数器,每按下一次按键,计数加一
图3:00----59计数器,定时器T0
图4:60----00计数器,采用定时器T1
三、
设计程序
// 软件延时的方式设计60s计数器
ORG 00H
START:MOV DPTR,#TABLE
MOV R0,#00H
S1: MOV P3,#00H
MOV P2,#00H
S2: MOV R1,#10
MOV A,R0
MOV B,R1
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P3,A
LCALL DELAY
INC R0
CJNE R0,#60,S2
MOV R0,#00H
LJMP S1
DELAY:MOV R5,#100
D1:MOV R6,#20
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
//0——99计数器,按键按下数码管数字加一
ORG 00H
SJMP START
START:MOV DPTR,#TABLE
MOV R0,#00H
MOV P2,#00H
MOV P3,#00H
S1:INC R0
CJNE R0,#100,S2
MOV R0,#00H
S2:JB P0.0,$
LCALL DELAY
JB P0.0,S2
S3:MOV A,R0
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P3,A
JB P0.0,S1
LJMP S3
DELAY:MOV R5,#20
D1: MOV R6,#250
DJNZ R6,$
DJNZ R5,D1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
//定时/计数器T0计数60s
SECOND
EQU 30H
COUNT
EQU 31H
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV SECOND,#00H
MOV COUNT,#00H
MOV DPTR,#TABLE
MOV P2,#00H
MOV P3,#00H
MOV TMOD,#01H
MOV TH0,#(65536-5000)/256
MOV TL0,#(65536-5000)MOD 256
SETB TR0
MOV IE,#82H
LJMP $
INT_T0:MOV TH0,#(65536-5000)/256
MOV TL0,#(65536-5000)MOD 256
INC COUNT
MOV A,COUNT
CJNE A,#20,L2
INC SECOND
MOV A,SECOND
CJNE A,#60,L1
MOV SECOND,#00H
L1: MOV A,SECOND
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P3,A
L2: RETI
TABLE:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
//定时器T1设计60计数
ORG
0
SJMP START
ORG 1BH
SJMP T1S
ORG 30H
START: MOV R2,#60
MOV R4,#20
MOV IE,#88H
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
MOV A,R2
MOV B,#10
DIV AB
ACALL SEG7
MOV P1,A
MOV A,B
ACALL SEG7
MOV P2,A
SJMP $
T1S:
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R4,T1S0
MOV R4,#20
DJNZ R2,T1S1
CLR TR1
SJMP T1S1
T1S0:
RETI
T1S1:
MOV A,R2
MOV B,#10
DIV AB
ACALL SEG7
MOV P1,A
MOV A,B
ACALL SEG7
MOV P2,A
RETI
SEG7:
INC A
MOVC A,@A+PC
RET
DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
END |