?? serial.c
字號:
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#include "define.h"
#include "var.h"
#include "function.h"
/*****************************************************************
Func Name: RFID_Init_Timer1
Description: 對定時器1以及串口進行初始化,
Input: None
Output: None
Return: None
Caution: None
*****************************************************************/
void RFID_Init_Timer1(void)
{
TMOD = 0x21; /* Initial the timers,timer0 is used for ISO
and timer1 is used to serial download */
EA = 1;
ES = 1; /* Open the serial communication gate */
ET1 = 0; /* Choose the timer 1 but not interrupt */
TH1 = 0XF3; /* Initial the timer 1 */
TL1 = 0XF3; /* TL1隨便賦予什么值 */
SCON = 0X50;
PCON = 0X80; /* 這里SMOD為1,即波特率為4800 */
TR1 = 1; /* Open the timer 1 */
//PS = 1; /* 設置為高優先級 */
}
/*****************************************************************
Func Name: RFID_Serial_Trans
Description: 通過串口將卡片上的數據發送給電腦
Input: IN uchar *pucData, 要發送的數據
Output: None
Return: None
Caution: 暫時還沒有想到什么判斷調試的方法,所以返回值待定
*****************************************************************/
void RFID_Serial_Trans(IN uchar *pucData)
{
uchar ucNum;
uchar ucIndex;
ucNum = strlen(pucData);
ucIndex = 0;
if(ucNum >= 15)
{
return;
}
TI = 0;
for(ucIndex = 0; ucIndex < ucNum; ucIndex++)
{
SBUF = *(pucData +ucIndex);
while(1 != TI)
{
}
TI = 0;
}
}
void RFID_Serial_TransSingle(IN uchar ucData)
{
TI = 0;
SBUF = ucData;
while(1 != TI)
{
}
TI = 0;
}
/*****************************************************************
Func Name: RFID_Serial_Rev
Description: 使用串口中斷來通過串口接受電腦傳送過來的指令,并將指令傳出
Input: None
Output: None
Return: None
Caution: 中斷函數不能有參數和返回值
*****************************************************************/
void RFID_Serial_Rev(void) interrupt 4
{
uchar tmp;
tmp = 0;
/* 判斷RI是否為1來判斷是否接受 */
if(1 == RI)
{
tmp = SBUF;
RI = 0;//軟件清零
if(1 == bSerialBuf)/* 接收到新的數據 */
{
bSerialBuf = 0;
/* 開始接受新的數據,將原來的數據清空 */
memset(aucSerialRecvBuf, '\0', sizeof(aucSerialRecvBuf));
}
if('\\' == tmp || 14 == ucSerialIndex)/* 定義符號\為接受結尾符 */
{
ucSerialIndex = 0;
bSerialBuf = 1;/* 標識已經接受完 */
}
else
{
aucSerialRecvBuf[ucSerialIndex++] = tmp;//將電腦傳送過來的數據或命令存放在緩存中
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -