单片机AT89C51 00——99带倒计时计数器

电子元件 4年前 (2022) aysz01
0

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

版权声明:aysz01 发表于 2022-08-06 10:48:05。
转载请注明:单片机AT89C51 00——99带倒计时计数器 | 鳌游电工

暂无评论

暂无评论...