Das Program sieht nun folgendermassen aus:
Code:
list p=16f627
#include "p16f627.inc"
CHAR equ 0X22
__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
ERRORLEVEL -302
org 0x00
goto MAIN
org 0x04
org 0x05
;*************************************************************
MAIN
;*************************************************************
;-----------------------------------------------------------------------------
INITUSART
;-----------------------------------------------------------------------------
BSF STATUS,RP0 ; switch to Bank1
MOVLW 0x20 ; sender: RS232
MOVWF TXSTA ;
BCF STATUS,RP0 ; switch to Bank 0
MOVLW 0x90 ; receiver: RS232
MOVWF RCSTA ;
movlw 0x07 ; Comparator aus und auf
movwf CMCON ; Digital IO
bsf STATUS, RP0 ; switch to bank1
movlw b'00000010' ; RB1 = IN, sonst alles OUT
movwf TRISA ; /
bcf STATUS, RP0 ; switch to bank0
;-----------------------------------------------------------------------------
SETBAUD
;-----------------------------------------------------------------------------
BSF STATUS,RP0 ; Bank1
MOVLW 15 ; Set Baud rate 19,2 kBPS bei 20 MHz
MOVWF SPBRG
BCF TXSTA, BRGH ; BRGH=0
BCF STATUS,RP0 ; Bank 0
;-----------------------------------------------------------------------------
CLRPORTS
;-----------------------------------------------------------------------------
clrf PORTA
clrf PORTB
;-----------------------------------------------------------------------------
RECDATA1
;-----------------------------------------------------------------------------
btfss PIR1,RCIF ; sind Daten da ?
goto RECDATA1 ; nein, noch keine Daten da
;movfw RCREG ; RS232-Register auslesen
;movwf CHAR ; und in den Speicher nach 'Zeichen' schreiben
;-----------------------------------------------------------------------------
SETB0ON ; set pin 0 on PortB to 1
;-----------------------------------------------------------------------------
; bsf STATUS, RP0 ; switch to bank1
; bcf TRISB ^ 0x80, 0 ; set on port B pin 0 as output
; bcf STATUS, RP0 ; switch back to bank0
movlw b'00000001' ; set bit 0 high in work reg
movwf PORTB ; move work reg to PORTB
;-----------------------------------------------------------------------------
LOOP ; long loop, this allows to see an LED
;-----------------------------------------------------------------------------
count1 equ 15h
count2 equ 16h
L1 decfsz count1,1
goto L1
decfsz count2,1
goto L1
goto LOOP ; just for testing
end
Beim Start leuchtet sofort LED3, portb pin2, auf. LED1, portb pin 0, leuchtet nicht auf, wenn ich Daten via RS232 schicke.
Was ist hier falsch?
Vielen Dank für HIlfe.
Gruss
Sam
Lesezeichen