??? 06/23/06 06:04 Read: times Msg Score: -1 -1 Message Not Useful |
#118920 - switch and LED interface problem |
Hello
The program written below should work as follows : ... switches are connected to PORT 1 and LED;s are connected to PORT 2 ... on hitting any switch the corresponding LED should bre ON ie ... if we press switch 0 LED 0 should ON ... if agin we press switch 0 then the LED 0 should become OFF .. The problem I am encountering is the switches are pressed more then twice to be operated ie. switch is pressed 2 times for the same function to be happened ... If some body can help me to get rid of this probs ... then I will be very thankfull ... DELAY_HIGH EQU 003H DELAY_LOW EQU 018H FLAG_0 EQU 031H FLAG_1 EQU 032H FLAG_2 EQU 033H FLAG_3 EQU 034H FLAG_4 EQU 035H FLAG_5 EQU 036H FLAG_6 EQU 037H FLAG_7 EQU 038H FLAG_INVALIDKEY EQU 039H FLAG_PUSH EQU 040H NEWKEY EQU 041H
MOV SP,#050H LJMP START ORG 000BH ACALL INTERRUPT_0 RETI ORG 001BH INTERRUPT_1:
PUSH PSW CLR TR1 MOV PSW,#00H ACALL KEYPRESSED JNZ CALCULATE JMP ALTER CALCULATE:
JZ ALTER ACALL CONVERT JBC FLAG_INVALIDKEY,ALTER ACALL TIMER_0 POP ACC POP PSW RETI ALTER:
AGAIN:
POP PSW POP ACC RETI INTERRUPT_0: PUSH ACC PUSH PSW MOV PSW,#00H CLR TR0 ACALL KEYPRESSED JZ ALTER_1 ACALL CONVERT JBC FLAG_INVALIDKEY,ALTER_1 JB FLAG_PUSH,COMPARE SETB FLAG_PUSH MOV NEWKEY,A JMP HOME COMPARE: CJNE A,NEWKEY,CLEAR JMP AGAIN_1 HOME: JB ACC.0,COOL_0 JB ACC.1,COOL_1 JB ACC.2,COOL_2 JB ACC.3,COOL_3 JB ACC.4,COOL_4 JB ACC.5,COOL_5 JB ACC.6,COOL_6 JB ACC.7,COOL_7 CLEAR: CLR FLAG_PUSH JMP HOME WORLD: MOV R0,A MOV A,P2 ORL A,R0 XRL A,R0 MOV P2,A JMP STATUS UNIVERSE: ORL A,P2 MOV P2,A JMP AGAIN_1 ALTER_1: CLR FLAG_PUSH AGAIN_1: ACALL TIMER_1 POP PSW POP ACC RET COOL_0: JB FLAG_0,WORLD SETB FLAG_0 JMP UNIVERSE COOL_1:
SETB FLAG_1 JMP UNIVERSE COOL_2:
SETB FLAG_2 JMP UNIVERSE COOL_3: JB FLAG_3,WORLD SETB FLAG_3 JMP UNIVERSE JB FLAG_4,WORLD SETB FLAG_4 JMP UNIVERSE JB FLAG_5,WORLD SETB FLAG_5 JMP UNIVERSE JB FLAG_6,WORLD SETB FLAG_6 JMP UNIVERSE JB FLAG_7,WORLD SETB FLAG_7 JMP UNIVERSE STATUS: JBC FLAG_0,AGAIN_1 JBC FLAG_1,AGAIN_1 JBC FLAG_2,AGAIN_1 JBC FLAG_3,AGAIN_1 JBC FLAG_4,AGAIN_1 JBC FLAG_5,AGAIN_1 JBC FLAG_6,AGAIN_1 JBC FLAG_7,AGAIN_1 MOV P1,#0FFH MOV A,P1 CPL A RET MOV IE,#08AH MOV TMOD,#011H MOV P1,#0FFH MOV P2,#00H MOV R0,#00H MOV R7,#00H CLR FLAG_0 CLR FLAG_1 CLR FLAG_2 CLR FLAG_3 CLR FLAG_4 CLR FLAG_5 CLR FLAG_6 CLR FLAG_7 ACALL TIMER_1 MOV P1,#0FFH MOV A,P1 CPL A JMP KEY ;MOV TL0,#070H ;MOV TH0,#0DAH MOV TL0,#DELAY_LOW MOV TH0,#DELAY_HIGH SETB TR0 RET MOV TL1,#DELAY_LOW MOV TH1,#DELAY_HIGH SETB TR1 RET CLR FLAG_INVALIDKEY CJNE A,#01H,SECOND RET CJNE A,#02H,THIRD RET CJNE A,#04H,FOURTH RET CJNE A,#08H,FIVE RET CJNE A,#010H,SIX RET CJNE A,#020H,SEVEN RET CJNE A,#040H,EIGHT RET CJNE A,#080H,BAD RET SETB FLAG_INVALIDKEY RET ;************************************************************************************************** END regards Arvind Shrivastava ... |