消毒柜功能要求:臭氧消毒指示灯两个,假设分别为LED1、LED2;加热指示灯两个,假设分别为LED3、LED4;消毒按键一个,假设为A1;消毒柜照明按键一个,假设为A2。 开机时所有指示灯均熄灭,按下A1则LED1亮,臭氧发生器开始工作,20S后,LED1熄灭,LED2点亮;20S后,LED2熄灭,LED3点亮,臭氧消毒结束,进入加热干燥阶段。20S后,LED3熄灭,LED4点亮,再经过20S后LED4熄灭,整个消毒、加热干燥过程结束。需要不同种类的消毒,加热干燥时,可以通过按A1进行选择,每按一次A1,点亮的LED指示灯下移一位,只进行余下的消毒、干燥程序。本消毒柜有四种消毒干燥程序: 1)LED1亮 消毒20S→消毒20S→加热20S→加热20S 2)LED2亮 消毒20S→加热20S→加热20S 3)LED3亮 加热20S→加热20S 4)LED4亮 加热20S 消毒或加入的确切时间(秒)必须用数码管显示出来。 A2单独控制,按一下A2,点亮照明灯LED5,再按一下A2,关闭照明灯LED5
我自己写了一个,请问有问题吗?可以实现上述功能吗?请大家指出其中需要修改的地方,谢谢。另:还有没有更好的源程序,请指点,再次谢谢. 源程序: GW EQU 40H SW EQU 41H BW EQU 42H QW EQU 43H WW EQU 44H SWW EQU 45H JS EQU 46H DSQ EQU 47H ORG 0000H LJMP MAIN1 LJMP MAIN2 ORG 000BH LJMP INTT0 ORG 0300H ;**********A2按键控制子程序********** MAIN2:MOV P2,#0FFH MAIN3:ORL P1,#0FFH KEYA2:JB P1.1,KEYA2 LCALL DELAY JB P1.1,KEYA2 JNB P1.1,$ CPL P2.4 AJMP MAIN3 ;**********A1按键控制子程序********** MAIN1:MOV P2,#0FFH ORL P1,#0FFH KEYA1:JB P1.0,KEYA1 LCALL DELAY JB P1.0,KEYA1 JNB P1.0,$ ;**********消毒20S控制子程序********** AA1: MOV P2,#0FFH CLR P2.0 LCALL TIME1 TIME1:MOV SCON,#10H MOV SP,#50H MOV IE,#10000010B MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV JS,#00H MOV GW,#3FH MOV SW,#3FH MOV BW,#3FH MOV QW,#3FH MOV WW,#3FH MOV SWW,#3FH LCALL LED10 SETB TR0 SJMP $ INTT0:PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H MOV R6,DSQ DJNZ R6,LT1 JNB P1.0,S1 S1: LCALL DELAY JNB P1.0,AA2 CLR C MOV A,JS ADD A,#01H DA A MOV JS,A MOV R5,A ANL A,#0FH SS1: MOV DPTR,#TAB MOVC A,@A+DPTR MOV GW,A MOV A,R5 SWAP A ANL A,#0FH MOVC A,@A+DPTR CJNE A,2,SS1 MOV SW,A LCALL LED10 MOV R6,#20 LT1: MOV DSQ,R6 POP ACC POP PSW RETI LED10:MOV R7,#02H MOV R0,#GW LED11:MOV A,@R0 MOV SBUF,A LED12:JNB TI,LED12 CLR TI INC R0 DJNZ R7,LED11 RET ;**********消毒20S控制子程序********** AA2: JNB P1.0,$ MOV P2,#0FFH CLR P2.1 LCALL TIME2 TIME2:MOV SCON,#10H MOV SP,#50H MOV IE,#10000010B MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV JS,#00H MOV GW,#3FH MOV SW,#3FH MOV BW,#3FH MOV QW,#3FH MOV WW,#3FH MOV SWW,#3FH LCALL LED20 SETB TR0 SJMP $ INTT2:PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H MOV R6,DSQ DJNZ R6,LT2 JNB P1.0,S2 S2: LCALL DELAY JNB P1.0,BB1 CLR C MOV A,JS ADD A,#01H DA A MOV JS,A MOV R5,A ANL A,#0FH SS2: MOV DPTR,#TAB MOVC A,@A+DPTR MOV GW,A MOV A,R5 SWAP A ANL A,#0FH MOVC A,@A+DPTR CJNE A,2,SS2 MOV SW,A LCALL LED21 MOV R6,#20 LT2: MOV DSQ,R6 POP ACC POP PSW RETI LED20:MOV R7,#02H MOV R0,#GW LED21:MOV A,@R0 MOV SBUF,A LED22:JNB TI,LED22 CLR TI INC R0 DJNZ R7,LED21 RET ;**********加热20S控制子程序********** BB1: JNB P1.0,$ MOV P2,#0FFH CLR P2.2 LCALL TIME3 TIME3:MOV SCON,#10H MOV SP,#50H MOV IE,#10000010B MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV JS,#00H MOV GW,#3FH MOV SW,#3FH MOV BW,#3FH MOV QW,#3FH MOV WW,#3FH MOV SWW,#3FH LCALL LED30 SETB TR0 SJMP $ INTT3:PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H MOV R6,DSQ DJNZ R6,LT3 JNB P1.0,S3 S3: LCALL DELAY JNB P1.0,BB2 CLR C MOV A,JS ADD A,#01H DA A MOV JS,A MOV R5,A ANL A,#0FH SS3: MOV DPTR,#TAB MOVC A,@A+DPTR MOV GW,A MOV A,R5 SWAP A ANL A,#0FH MOVC A,@A+DPTR CJNE A,2,SS3 MOV SW,A LCALL LED30 MOV R6,#20 LT3: MOV DSQ,R6 POP ACC POP PSW RETI LED30:MOV R7,#02H MOV R0,#GW LED31:MOV A,@R0 MOV SBUF,A LED32:JNB TI,LED32 CLR TI INC R0 DJNZ R7,LED31 RET ;**********加热20S控制子程序********** BB2: JNB P1.0,$ MOV P2,#0FFH CLR P2.3 LCALL TIME4 TIME4:MOV SCON,#10H MOV SP,#50H MOV IE,#10000010B MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV JS,#00H MOV GW,#3FH MOV SW,#3FH MOV BW,#3FH MOV QW,#3FH MOV WW,#3FH MOV SWW,#3FH LCALL LED40 SETB TR0 SJMP $ INTT4:PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H MOV R6,DSQ DJNZ R6,LT4 CLR C MOV A,JS ADD A,#01H DA A MOV JS,A MOV R5,A ANL A,#0FH SS4: MOV DPTR,#TAB MOVC A,@A+DPTR MOV GW,A MOV A,R5 SWAP A ANL A,#0FH MOVC A,@A+DPTR CJNE A,2,SS4 MOV SW,A LCALL LED40 MOV R6,#20 LT4: MOV DSQ,R6 POP ACC POP PSW RETI LED40:MOV R7,#02H MOV R0,#GW LED41:MOV A,@R0 MOV SBUF,A LED42:JNB TI,LED42 CLR TI INC R0 DJNZ R7,LED41 RET ;**********共阴极字型码表********** TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;**********延时子程序********** DELAY:MOV R1,#10H LOOP1:MOV R2,#200H LOOP2:DJNZ R2,LOOP2 DJNZ R1,LOOP1 RET END |