at89c2051定时电路的改进

设计一种单片机控制的简易定时报警器。要求按照设定的初始值(1-59秒)倒计时。当时间到达0时,数码管闪烁“00”(以1Hz闪烁),按键功能如下:

(1)设置键:在倒计时模式下,按此键停止倒计时,进入设置状态;如果该键已经处于设置状态,则该键无效。

(2)增量键:设置状态时,每按一次增量键,初始值的数字增加1。

(3)减量键:设置状态时,每按一次减量键,初始值的数字减少1。

(4)确认键:设置状态时,按下该键后,单片机将倒计时,并根据新的初始值显示倒计时数。如果已经处于计时状态,此键无效。

时间?EQU?60H

旗帜?EQU?61H

KEY_R_1?EQU?P3.0

KEY_R_2?EQU?P3.1

KEY_R_3?EQU?P3.2

KEY_R_4?EQU?P3.3

D_FLAG?EQU?62H

ORG?0000小时

SJMP?开始

ORG?000BH

LJMP?定时器0中断

ORG?0030小时

开始:

MOV?TMOD,#01H

MOV?TH0,#3CH

MOV?TL0,#0B0H

SETB?电子艺界游戏公司

SETB?ET0

CLR?TR0

MOV?一,#00

MOV?D_FLAG,A

主要:

LCALL?按键扫描

MOV?a,D_FLAG

CJNE?a,#01H,DIS

LCALL?显示1

LJMP?主要的

DIS:

LCALL?展示

LJMP?主要的

按键扫描:

MOV?一、旗帜

CJNE?a,#1,KEY_2

CLR?C

MOV?c,KEY_R_1

JC?关键_2

LCALL?延迟20毫秒

MOV?c,KEY_R_1

JC?关键_2

JNB?KEY_R_1,$

CLR?TR0

MOV?一,#00

MOV?D_FLAG,A

MOV?时间,A

KEY_2:

CLR?C

MOV?c,KEY_R_2

JC?关键_3

LCALL?延迟20毫秒

MOV?c,KEY_R_2

JC?关键_3

MOV?一、时间

十二月?A

CJNE?a,#255,KEY_2_E

MOV?一、99号

MOV?时间,A

JNB?KEY_R_2,$

钥匙_2_E:

MOV?时间,A

JNB?KEY_R_2,$

关键3:

CLR?C

MOV?c,KEY_R_3

JC?关键_4

LCALL?延迟20毫秒

MOV?c,KEY_R_3

JC?关键_4

MOV?一、时间

INC?A

CJNE?a,#100,KEY_3_E

MOV?答,#0

MOV?时间,A

JNB?KEY_R_3,$

钥匙_3_E:

MOV?时间,A

JNB?KEY_R_3,$

关键4:

CLR?C

MOV?c,KEY_R_4

JC?钥匙_退出

LCALL?延迟20毫秒

MOV?c,KEY_R_4

JC?钥匙_退出

JNB?KEY_R_4,$

SETB?TR0

MOV?a,#0FH

MOV?旗帜,A

关键退出:

浸水使柔软

显示:

MOV?一、时间

MOV?b,#10

DIV?AB型血

MOV?甲,乙

MOV?DPTR,#标签

MOVC?一、@一+DPTR

MOV?P0,A

SETB?P2.1

CLR?P2.0

LCALL?延迟1毫秒

CLR?P2.0

CLR?P2.1

MOV?一、时间

MOV?b,#10

DIV?AB型血

MOV?DPTR,#标签

MOVC?一、@一+DPTR

MOV?P0,A

SETB?P2.0

CLR?P2.1

LCALL?延迟1毫秒

CLR?P2.0

CLR?P2.1

浸水使柔软

显示1:

MOV?R2,第40名

显示1_LOOP1:

MOV?答,#0

MOV?DPTR,#标签

MOVC?一、@一+DPTR

MOV?P0,A

SETB?P2.1

CLR?P2.0

LCALL?延迟1毫秒

CLR?P2.0

CLR?P2.1

MOV?答,0

MOV?DPTR,#标签

MOVC?一、@一+DPTR

MOV?P0,A

SETB?P2.0

CLR?P2.1

LCALL?延迟1毫秒

CLR?P2.0

CLR?P2.1

LCALL?按键扫描

DJNZ?R2,显示1_LOOP1

MOV?R2,第20位

显示1_LOOP:

LCALL?延迟50毫秒

LCALL?按键扫描

SETB?P2.0

SETB?P2.1

DJNZ?R2,显示1_LOOP

浸水使柔软

延迟20毫秒:;错误?0我们

MOV?R6,#0D7H

DL0:

MOV?R5,#2DH

DJNZ?R5,美元

DJNZ?R6,DL0

nototherwiseprovided(for)除非另有规定

nototherwiseprovided(for)除非另有规定

浸水使柔软

延迟1毫秒:;错误?0我们

MOV?R4,#01H

DD1:

MOV?R6,#8EH

DD0:

MOV?R5,#02H

DJNZ?R5,美元

DJNZ?R6,DD0

DJNZ?R4,DD1

浸水使柔软

延迟50毫秒:;错误?0我们

MOV?R6 # 0ADH

DG0:

MOV?R5,#8FH

DJNZ?R5,美元

DJNZ?R6,DG0

浸水使柔软

结束