www.pudn.com > TG12864.rar > uart.c


#include "reg932.h" 
  
#define uchar unsigned char 
#define uint unsigned int 
//-----ÃüÁîÁбí------- 
 
//-------------------- 
uchar temp; 
uchar senddata[]; 
uchar receivedata[]; 
bit flag=0; 
static uchar count=0; 
 
//--------------------------- //¹¦ÄÜ´®¿Ú³õʼ»¯ //-------------------------- 
 void UART_Init()  
 { 
   P1M1=0x00;  
   P1M2=0x00; //¶Ë¿Ú³õʼ» 
//----------------////-------------------------// 
   SCON   = 0x50;  //sm0.sm1=01£¬Ñ¡ÓÃģʽһ£»ren = 1£¬Ê¹ÄÜ´®ÐнÓÊÕ 
   SSTAT  = 0x60;  //½ûֹ˫»º³å£                
   BRGCON = 0x00;  
   BRGR0  = 0xF0; //9600 baud @ 7.373MHz  
   BRGR1  = 0x02;  
   BRGCON = 0x03; //ʹÄÜBRG£¬Ñ¡Óò¨ÌØÂÊ·¢ÉúÆ÷ 
   ES = 1; 
//   ESR=1;  //ESR=Enable Serial Recieve 
//   EST=1; //EST=Enable Serial Transmit  
   EA=1; //ʹÄÜÖж 
} 
 
//------------------------- //¹¦ÄܽÓÊÕÖÐ¶Ï //------------------------ 
void Rcv_ISR() interrupt 4 
{                            //µ±½ÓÊÕÍêÒ»¸ö×Ö½ÚRIÖÃ1½øÈëRecieveÖ 
    EA=0;  
    receivedata[count] =SBUF; //±£´æËù¶ÁÈ¡µÄÊ 
    RI=0; //RIÇå0ÒԵȴýÏ´η¢Ë      
	count++;   
	if(count==32) 
     { 
       count=0; //TIÇå0×¼±¸ÏÂÒ»´Î·¢ 
	   flag =1; 
     } 
	EA=1; 
} 
//------------------------// ·¢ËͶà×Ö½ÚÊý¾Ý //------------------------- // 
void send_somedata(uchar *dat) 
{ 
	int j=0; 
	while(dat[j])					// send string 
	{ 
		TI=0;						// clear transmit interrupt flag 
		SBUF=dat[j];				// start sending one byte 
		while (!TI);				// wait until sent 
		j++; 
	} 
} 
//------------------------// ·¢Ë͵¥×Ö½ÚÊý¾Ý //------------------------- // 
void send_onedata(uchar dat) 
{ 
	TI=0;						// clear transmit interrupt flag 
	SBUF=dat;				// start sending one byte 
	while (!TI);				// wait until sent 
} 
/////////////////////////////////////////////////////////////// 
void main()  
{   UART_Init(); 
    while(1); 
}