Gast
#113540
Hallo Leute, ich würde gerne vom Hyperterminal ein byte empfangaen. Hierzu verwende ich den PIC18F452 und den C18-Compiler von Microchip. Die Kiste hat eine Oszi-Frequenz von 20 MHz und empfangen möchte ich mit 19200 bps. Der Rx-Interrupt wird ausgelöst aber in meiner Speichervarialble steht nach dem Durchlauf nur 0xFF drin. Hat jemand Erfahrung mit USART in C? Hier ist mein Code: #include <p18f452.h> #include <usart.h> unsigned char byte = 0; void rx_handler(void); /* Set configuration bits for use with ICD2 / PICDEM2 PLUS Demo Board: * - set HS oscillator * - disable watchdog timer * - disable low voltage programming */ #pragma romdata CONFIG _CONFIG_DECL(_CONFIG1H_DEFAULT & _OSC_HS_1H,\ _CONFIG2L_DEFAULT,\ _CONFIG2H_DEFAULT & _WDT_OFF_2H,\ _CONFIG3H_DEFAULT,\ _CONFIG4L_DEFAULT & _LVP_OFF_4L,\ _CONFIG5L_DEFAULT,\ _CONFIG5H_DEFAULT,\ _CONFIG6L_DEFAULT,\ _CONFIG6H_DEFAULT,\ _CONFIG7L_DEFAULT,\ _CONFIG7H_DEFAULT); #pragma romdata #pragma code rx_interrupt = 0x8 void rx_int (void) { _asm goto rx_handler _endasm } #pragma code #pragma interrupt rx_handler void rx_handler(void) { byte = ReadUSART(); PIR1bits.RCIF = 0; } void main (void) { TRISC = 0xBF; RCONbits.IPEN = 1; INTCONbits.GIEH = 1; OpenUSART( USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 64); while(1); }