|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
|
Ðiều Chỉnh | Xếp Bài |
18-05-2013, 03:31 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Apr 2013
Bài gửi: 17
: |
Ngắt trong UART
[CODE] /* _CPUDIV_OSC1_PLL2_1L, // Divide clock by 2
_FOSC_HS_1H, // Select High Speed (HS) oscillator _WDT_OFF_2H, // Watchdog Timer off MCLRE_ON_3H // Master Clear on */ #include <RFD.h> #include "def_18f4620.c" #include "slave_1_tx_rx.h" #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8) #define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H) /////////////////////////////////////////////////////////////////////////// #ifndef FREQ #define FREQ 4000000 /// 4Mhz #define baud 9600 #define spbrg_value (((FREQ/16)/baud)-1) //////////////////////////////////////////////////////// int StartFlag = 0; int StopFlag = 0; char array[12]; char i = 0; /////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// void uart_init(void) { SPEN =1; SYNC = 1; BRGH = 1; SPBRG = spbrg_value; CREN =1; GIE =1; PEIE =1; RCIE =1; } void interrupt_RXR() { RCIF = 0; if(RCREG == 0X02) { StartFlag = 1; } if(StartFlag == 1 && RCREG != 0X03) { array[i] = RCREG; i++; } if(RCREG == 0X03) { array[i] = '\0'; StopFlag = 1; i = 0; } } /////////////////////////////////////////////////////////////////////////////// void main() { ///////////////////////////////////////////////////////////// TRISC0 = TRISD3 = 0; TRISC7 = 1; TRISC6 = 0; uart_init(); while(1) { if(StopFlag == 1) { StopFlag == 0; StartFlag == 0; for(i=0; i <=13; i++) { array[i]=0; } i=0; } } } [\CODE] Mọi người cho mình hỏi mình viết thế này thì ngắt uart có hoạt động ko vậy. Mình muốn đọc dữ liệu từ chân RX lưu vào array. |
|
|