Problem med avstudsning
Postat: 15 november 2003, 23:33:03
Håller på med en tangentbords emulator och ska just scanna ingångarna på picen för att se vilken knapp man trycker ner. då måste det avstudsas...
har tänkt så här:
har en 7x7 matris så de 7 kolumnerna är kopplade till utgångar som bara kan vara låga en i taget, när kolumn 1 är låg så kollar jag alla ingångar så här:
MOVLW H'FD' ; Set column 1 active ie. set it low
MOVF PORTB,F
CALL DELAY_1ms ; wait 1 ms let pins stabilize
BTFSS PORTC,1
RETLW H'01'
BTFSS PORTC,2
RETLW H'02'
BTFSS PORTC,3
RETLW H'10'
BTFSS PORTC,4
RETLW H'1E'
BTFSS PORTC,5
GOTO RETURN_WINKEY
BTFSS PORTC,6
RETLW H'26'
BTFSS PORTC,7
RETLW H'09'
Som ni ser så svarar den med ett hexvärde, som sen skickas till ps/2-porten. problemet är var jag ska avstudsa...
det går nog inte att göra innan jag sätter kolumnen utan jag tror att det måste göras efter den är satt men innan jag kollar ingångarna eller så gör jag så att jag kollar ingången väntar ett tag kollar igen, är den lågdå oxå så kör jag på. (kör med weak pullup)
förslag?
edit: Lite fel på portarna....
har tänkt så här:
har en 7x7 matris så de 7 kolumnerna är kopplade till utgångar som bara kan vara låga en i taget, när kolumn 1 är låg så kollar jag alla ingångar så här:
MOVLW H'FD' ; Set column 1 active ie. set it low
MOVF PORTB,F
CALL DELAY_1ms ; wait 1 ms let pins stabilize
BTFSS PORTC,1
RETLW H'01'
BTFSS PORTC,2
RETLW H'02'
BTFSS PORTC,3
RETLW H'10'
BTFSS PORTC,4
RETLW H'1E'
BTFSS PORTC,5
GOTO RETURN_WINKEY
BTFSS PORTC,6
RETLW H'26'
BTFSS PORTC,7
RETLW H'09'
Som ni ser så svarar den med ett hexvärde, som sen skickas till ps/2-porten. problemet är var jag ska avstudsa...
det går nog inte att göra innan jag sätter kolumnen utan jag tror att det måste göras efter den är satt men innan jag kollar ingångarna eller så gör jag så att jag kollar ingången väntar ett tag kollar igen, är den lågdå oxå så kör jag på. (kör med weak pullup)
förslag?
edit: Lite fel på portarna....