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