单片机AT89C51 00——99带倒计时计数器
扫描二维码
随时随地手机看文章
1. 设计任务
(1. 上电时显示“00”,第一次按下SP1后就开始计数。
(2. 第二次按SP1后,计数停止。
(3. 第三次按SP1后,计数清零。
(4. 第四次按下倒计时 。
2. 电路的原理图
3. 系统板上硬件连线
(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。
(3.把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;
4.
汇编源程序
D1A EQU 30H 个位寄存地址设置;
D1B EQU 31H 十位寄存地址设置;
SEC EQU 32H
KY1 EQU 33H
SP1 BIT P3.5 位选口设置;
ORG 0000H
LJMP START
ORG 0B00H 中断方式选折;
LJMP INT_T0
START: MOV KY1,#00H
MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB 个位和十位的区分;
MOV DPTR,#TABLE 开始查个位的段码;
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
MOV TMOD,#02H
SETB ET0
SETB EA 开启中断;
WT: JB SP1,WT
LCALL DELY10MS
JB SP1,WT
INC KY1 第一次按下键盘,开始计数;
MOV A,KY1
CJNE A,#01H,KN1
SETB TR0
MOV TH0,#06H
MOV TL0,#06H
MOV D1A,#00H
MOV D1B,#00H
LJMP DKN
KN1: CJNE A,#02H,KN2
CLR TR0
LJMP DKN
KN2: CJNE A,#03H,DKN
MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
MOV KY1,#00H
KN3: INC KY1
DEC KY1 第4次按下键盘,开始计数;
MOV A,KY1
CJNE A,#04H,KN3
SETB TR0
MOV TH0,#06H
MOV TL0,#06H
MOV D1A,#00H
MOV D1B,#00H
LJMP DKN
DKN: JNB SP1,$
LJMP WT
DELY10MS: 延时子程序;
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
INT_T0: 中断子程序;
INC D1A
MOV A,D1A
CJNE A,#100,NEXT
MOV D1A,#00H
INC D1B
MOV A,D1B
CJNE A,#5,NEXT
MOV TCNTB,#00H
INC SEC
MOV A,SEC
CJNE A,#100,DONE
MOV SEC,#00H
DONE: MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
NEXT: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END