📄 serial_communication.c
字号:
/***************************************************************************************************
9600bps
07.5.4 by ligang
说明:主程序中在idata存储取定义缓冲区(一定数量数组),将数组名作为参数传入,
且必须保证数组最后一个元素为 '\0',发送格式由主程序决定,
可发送一个或多个变量至串口调试助手
接收地址为:RX_ADDRESS
******************************************************************************************************/
#include <STC12C5412.H>
#include <ctype.h>
#define RX_ADDRESS 0xFE
/* unsigned char code ASCII_TAB[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39, //0-9,的ASCII
0x2E,0x0a,0x20,0x0d, //小数点,换行符,空格,回车符,
0x2b,0x2d,0x09}; //正号,负号,制表符*/
/* #define ASCII_CODE_ZHENGHAO 0X2B
#define ASCII_CODE_FUHAO 0x2D
#define ASCII_CODE_TAB 0x09
#defien ASCII_CODE_ */
/*-----------------------------------------------------------------------------------------------------
初始化串口波特率
-------------------------------------------------------------------------------------------------------*/
void Initiate_RS232(void)
{
ES=0;
SCON=0x50; //0101,0000 8数据位,无校验
T2CON=0X34; //0011,0100 T2做波特率发生器
RCAP2H=0XFF; //11.0592M 9600
RCAP2L=0XDB;
ES=1;
}
/*---------------------------------------------------------------------------------------------------
串口通信程序
功能:将数据发往pc机
----------------------------------------------------------------------------------------------------*/
void serial_communication(unsigned char idata * data Buffer_Pointer)
{
//串口调试用
if(RI){
RI=0;
if(SBUF==RX_ADDRESS){ //pc机定时发送读取命令0xFE
for(;(*Buffer_Pointer)!='\0';Buffer_Pointer++){
SBUF=(*Buffer_Pointer);
while(!TI);
TI=0;
}
SBUF=toascii('\n'); //发送换行符
while(!TI);
TI=0;
}
} //end if
}//end function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -