Ðề tài: Ngắt trong UART
View Single Post
Old 18-05-2013, 03:31 PM   #1
Knight_FlyCn
Đệ 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.
Knight_FlyCn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn