?? uart.c
字號:
/*********************************Copyright (c)*****************************
**
** 飛鵬電子工作室
** 嵌入式項目
** http://xpstudio2003.blog.163.com
**
**項目名稱: xp51nRF2401
**編譯環(huán)境: KEIL 2
**--------------------------------------------------------------------------
**文 件 名: SYS.C
**作 者: 曹香鵬
**創(chuàng)建日期: 2008年12月04日
**描 述:
**--------------------------------------------------------------------------
**維護記錄:
**
****************************************************************************/
#include "xp51HDF.H"
#include "Uart.h"
void ExecuteCommand(void);
#define TIMEOUT 0xFE
#define DATA_NO_MATCH 0XFF
static BOOL TimeOutFlag;//= FALSE;//接收數(shù)據(jù)超時標志位
//串行通訊初始化
void InitUART(void)
{
SCON |= 0x50; //0101 0000 uart 工作方式1,
TMOD &= 0x0f; //Timer1,WorkMode 1
TMOD |= 0x20;
TH1 = 0xfd; //0xfd
TL1 = 0xfd;
TR1 = TRUE;
ES = TRUE; //init Interrupts
TimeOutFlag = FALSE;
Puts("Rdy\n");
}
//發(fā)送1個字節(jié)數(shù)據(jù)
void SendComm(INT8U dat)
{
TI=0;
SBUF=dat;
while(!TI)
{
//應該加入超時程序.!!!
}
TI=0;
}
void Puts(INT8U str[])
{
while(*str)
{
SendComm(*str++);
}
}
//接收1個字節(jié)數(shù)據(jù),有超時及標志位
INT8U WaitComm(INT16U WaitTimeOut)
{
if(TimeOutFlag == TRUE)return TIMEOUT;
while(!RI)
{
delay(20) ;
WaitTimeOut--;
if(WaitTimeOut==0)
{
TimeOutFlag = TRUE;
return TIMEOUT;
}
}
RI=0;
return SBUF;
}
static INT8U ReceiveData[4]={~0,0,~0,0}; //傳輸數(shù)據(jù)數(shù)組
void UartINT(void) interrupt 4
{
INT8U ReceiveTemp[4]; //數(shù)據(jù)接收臨時數(shù)組
if(RI==TRUE)
{
RI = 0;
//===============================================================
//>>>數(shù)據(jù)傳輸
ReceiveTemp[0] = SBUF;
#ifdef __DEBUG__
if(ReceiveTemp[0] == 0xFF)
{
Delay_ms(240);
Delay_ms(240);
ISP_CONTR = 0x60;//軟復位AP->ISP,可下程序
}
if(ReceiveTemp[0] == 0xEE)
{
Delay_ms(200);
ISP_CONTR = 0x20;//軟復位AP->ISP,可下程序
}
#endif
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -