Hallo zusammen,
irgendwie will meine EUSART- Schnittstelle nicht so, wie ich es will.
Das Ziel ist momentan eigentlich nur, eine LED zum Tooglen zu bringen.
Egal, welche Taste gedrückt wurde.
Hier ist der Codeausschnitt:
1 | CALL init_usart
|
2 | GOTO loop
|
3 |
|
4 | loop
|
5 | CALL get_usart
|
6 | GOTO loop
|
7 |
|
8 | init_usart
|
9 |
|
10 | MOVLW 0x20
|
11 | MOVWF TXSTA1
|
12 | MOVLW 0x90
|
13 | MOVWF RCSTA1
|
14 |
|
15 | ; Sende- und Empfangsinterrupt ausschalten
|
16 | MOVLW 0
|
17 | MOVWF RC1IE
|
18 |
|
19 | MOVLW 0
|
20 | MOVWF TX1IE
|
21 |
|
22 | ; Baudrate einstellen
|
23 | MOVLW 0x00
|
24 | MOVWF BAUDCON1
|
25 |
|
26 | MOVLW D'25'
|
27 | MOVWF SPBRG
|
28 |
|
29 | ; Schreibe- und Leseregister löschen
|
30 | MOVLW 0
|
31 | MOVWF TX1REG
|
32 |
|
33 | MOVLW RC1REG
|
34 | MOVWF TEMP
|
35 |
|
36 | BSF TRISC, RC7 ; RX- Modul
|
37 | BCF TRISC, RC6 ; TX- Modul
|
38 |
|
39 | BSF LATC, RC1
|
40 |
|
41 | RETURN
|
42 |
|
43 | get_usart
|
44 | BSF LATC, RC0
|
45 |
|
46 | BTFSC RCSTA1, FERR
|
47 | RETURN
|
48 |
|
49 | BTFSC RCSTA1, OERR
|
50 | GOTO rc_cren
|
51 |
|
52 | BTFSS PIR1, RC1IF
|
53 | GOTO get_usart
|
54 |
|
55 | BTFSS LATA, RA0
|
56 | BSF LATA, RA0
|
57 |
|
58 | BTFSC LATA, RA0
|
59 | BCF LATA, RA0
|
60 |
|
61 | BCF PIR1, RC1IF
|
62 |
|
63 | RETLW RC1REG
|
64 |
|
65 | rc_cren
|
66 | BCF RCSTA1, CREN
|
67 | BSF RCSTA1, CREN
|
68 | GOTO loop
|
69 |
|
70 | end
|
Das Programm Funktioniert bis jetzt wie folgt. Wenn ich eine Taste auf
der Tastatur drücke, dann geht die LED an. Drücke ich nochmal drauf
passiert nichts. Die LED bleibt jetzt immer an. Hat jemand eine Idee,
was da mit dem QT nicht stimmt?
Mit freundlichen Grüßen
David