Das Program sieht nun folgendermassen aus:
Beim Start leuchtet sofort LED3, portb pin2, auf. LED1, portb pin 0, leuchtet nicht auf, wenn ich Daten via RS232 schicke.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
Was ist hier falsch?
Vielen Dank für HIlfe.
Gruss
Sam







Zitieren

Lesezeichen