PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp USB, CAN, I2C, SPI, USART... (http://www.picvietnam.com/forum/forumdisplay.php?f=45)
-   -   Ngắt trong UART (http://www.picvietnam.com/forum/showthread.php?t=32282)

Knight_FlyCn 18-05-2013 03:31 PM

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.


Múi giờ GMT. Hiện tại là 07:20 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam