📄 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 + -