AT billentyuzet sumakol?
Frei László
bsoft at elender.hu
Mon Aug 26 00:43:25 CEST 2002
Üdv mindenkinek!
Segítséget szeretnék kérni Tőletek!
Már egy hete kínlódok a fent emlegetett billentyűzettel. A problémám az
lenne, hogy bizonyos karakterek beolvasásakor hülyeségeket ír ki. Konkrétan:
1;2;A;S;F7;LSHIFT esetén többnyire 00000000 jön ki, F12;F10;F6;F5;F4 esetén
11111111. Minden más billentyű tökéletesen megy. Még zavaros nyomogatáskor
is stabilan kiad mindent... Beszúrtam más által írt programrészletet is, de
az is hülyül. Próbáltam megírni mezei fel/lefutó-él hurkokkal és
mexszakítással is, de folyton ugyanazt műveli! A billentyűzet jó, mert
másokkal is ezt műveli. Próbáltam schmidt triggerrel "szebbé tenni" a clock
és data éleit, de az sem segített.
Ha valakinek van tippje, ötlete, tapasztalata, akkor azt kérem, hogy ha
lehetséges, akkor ossza meg velem! Előre is köszönöm.
Frei
László
Mellékelem a mexakításos verziót. (tudom, hogy rövidebben is meglehetett
volna írni a progit, de így jobban szűrhető a hiba. Oszt majd átírom...)
LIST P=18F252
#include "P18F252.INC"
#DEFINE ADAT PORTB,1 ;AT ADAT JEL
#DEFINE CLOCK PORTB,0 ;AT CLOCK JEL
#DEFINE SETD PORTA,0 ;DATA BEHÚZÓ
#DEFINE SETC PORTA,1 ;CLOCK BEHÚZÓ
#DEFINE RS PORTB,2 ;LCD RS BIT
#DEFINE RW PORTB,3 ;LCD RW BIT
#DEFINE E PORTB,4 ;LCD E BIT
#DEFINE LCD PORTC ;LCD UTASÍTÁS-KIMENET
#DEFINE FLAG FLAGVECT,0 ;FLAG JELZOBIT
#DEFINE INT INTCON,INT0IE ;INT0 KAPCSOLÁS
#DEFINE DIR INTCON2,6 ;DETECT-IRÁNY
cblock
DATAIN ;TÁROLÓ
TEMP0 ;ÁLTALÁNOS TÁROLÓ
TEMP1 ;ÁLTALÁNOS TÁROLÓ
TEMP2 ;ÁLTALÁNOS TÁROLÓ
PARITY ;PARITÁS BIT SZÁMOLÁSÁHOZ
TIMER1 ;IDOZÍTO TÁROLÓ
TIMER2 ;IDOZÍTO TÁROLÓ
FLAGVECT ;FLAGEK TÁROLÓREGISZTERE
endc
ORG 00H ;START CÍM
NOP
GOTO MAIN
ORG 08H ;HIGH INTERRUPT VECTOR
BSF FLAG
BCF INTCON,INT0IF
RETFIE
ORG 18H ;LOW INTERRUPT VECTOR
BSF FLAG ;BIZTONSÁG KEDVÉÉRT
BCF INTCON,INT0IF
RETFIE
INIT
MOVLW B'11000011' ;BEÁLLÍTÁSOK
MOVWF TRISB
CLRF TRISC
CLRF TRISA
CLRF PORTA
CLRF PORTB
CLRF PORTC
BCF RW
BCF RS
BCF E
MOVLW B'00001111' ;LCD BEÁLLÍTÁS
CALL UTASIT
MOVLW B'00111100'
CALL UTASIT
MOVLW B'00000011'
CALL UTASIT
CLRF INTCON3 ;INTERRUPT BEÁLLÍTÁS
CLRF RCON
MOVLW B'10000000' ;6.BIT:RISE/FALL
MOVWF INTCON2
MOVLW B'11000000'
MOVWF INTCON
RETURN
UTASIT ;LCD UTASÍTÁS-RUTIN
MOVWF LCD
BSF E
CALL WAIT
BCF E
RETURN
SZOVEGEL
BSF RS ;LCD KARAKTER-RUTIN
MOVWF LCD
BSF E
CALL WAIT
BCF E
BCF RS
RETURN
WAIT ;LCD IDOZÍTO
CLRF TIMER1
LOOP
DECFSZ TIMER1,F
GOTO LOOP
RETURN
;-----------------------------------------------
;Tényleges program kezdete
;-----------------------------------------------
START
CLRF DATAIN
CALL DETECTL
BTFSC ADAT
GOTO START
CALL DETECTF
BIT0
CALL DETECTL
BTFSC ADAT
BSF DATAIN,0
CALL DETECTF
BIT1
CALL DETECTL
BTFSC ADAT
BSF DATAIN,1
CALL DETECTF
BIT2
CALL DETECTL
BTFSC ADAT
BSF DATAIN,2
CALL DETECTF
BIT3
CALL DETECTL
BTFSC ADAT
BSF DATAIN,3
CALL DETECTF
BIT4
CALL DETECTL
BTFSC ADAT
BSF DATAIN,4
CALL DETECTF
BIT5
CALL DETECTL
BTFSC ADAT
BSF DATAIN,5
CALL DETECTF
BIT6
CALL DETECTL
BTFSC ADAT
BSF DATAIN,6
CALL DETECTF
BIT7
CALL DETECTL
BTFSC ADAT
BSF DATAIN,7
CALL DETECTF
PAR ;EZT MAJD KESOBB MEGOLDOM
CALL DETECTL
NOP
NOP
NOP
NOP
NOP
CALL DETECTF
STOP ;EZT IS
CALL DETECTL
NOP
CALL DETECTF
RETURN
DETECTL
BCF DIR
BSF INT
BTFSS FLAG
GOTO DETECTL
BCF INT
BCF FLAG
RETURN
DETECTF
BSF DIR
BSF INT
BTFSS FLAG
GOTO DETECTF
BCF INT
BCF FLAG
RETURN
MAIN
CALL INIT
MLOOP
CALL START
MOVF DATAIN,W
CALL SZOVEGEL
CLRF DATAIN
GOTO MLOOP
END
More information about the Elektro
mailing list