27-03-2010, 12:24 PM | #1 |
Đệ tử 2 túi
Tham gia ngày: Jul 2008
Bài gửi: 33
: |
USART trong C18
hiện tại mình đang làm truyền kô đồng bộ cho con 18f67j60 dùng C18. và đang gặp khó khăn về xữ lí ngắt Nhận. Code của mình thế này:
#include "p18f67j60.h" #include "lastfile.h" #include "stdio.h" #pragma config XINST=OFF, WDT=OFF, FOSC2=ON, FOSC=HS, ETHLED=OFF void rx_handler (void); #pragma code rx_interrupt = 0x08 void rx_int (void) { _asm goto rx_handler _endasm } #pragma code #pragma interrupt rx_handler void rx_handler (void) { unsigned char c; /* Get the character received from the USART */ c = ReadUSART(); PORTB = c; WriteUSART('w'); /* Clear the interrupt flag */ PIR1bits.RCIF = 0; } void main (void) { /* Configure all PORTB pins for output */ TRISB = 0x00; OpenUSART(); /* Display a prompt to the USART */ putrsUSART ((const rom char*)"\n\rEnter a digit 0-9!\n\r"); /* Enable interrupt priority */ RCONbits.IPEN = 1; /* Make receive interrupt high priority */ IPR1bits.RCIP = 1; /* Enable all high priority interrupts */ INTCONbits.GIEH = 1; putrsUSART((const rom char*)"\n\rWaiting interrupt.....\n\r"); printf("Dung lenh cua thu vien C..."); /* Loop forever */ while (1) ; } Trong đó lastfile.h là file mình khai báo lại các lệnh và cấu hình cho USART.(mình đã đính kèm theo).Nhờ các cao thủ xem và chỉ giúp Code bị lỗi chổ nào mà nó không chạy.mình dùng Vituar Teminal của protues để mô phỏng. Thank mọi người trước. thay đổi nội dung bởi: const_nos, 27-03-2010 lúc 03:01 PM. Lý do: đính kèm thêm file |
|
|