📄 232.c
字号:
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
void inttime(void)
{
ES = 0; // 禁止串口中断
SCON = 0x50; // 0101,0000 8 位数据位, 无奇偶校验
T2CON = 0x34; // 0011,0100, 由T2作为波特率发生器
RCAP2H = 0xFF; // 时钟12MHz, 1200 波特率RCAP2H = 0xFE; RCAP2L = 0xC8;
RCAP2L = 0xD9;//9600波特率RCAP2H = 0xFF; RCAP2L = 0xD9;
ES = 1; // 允许串口中断
}
//串口接收中断
bit tflag;
uchar CT,count3,cs;
uchar CN[8];
uchar p;
void ComInINT(void) interrupt 4 using 3
{
if(RI)
{
RI = 0; //RI清零
CT = SBUF;
if (CT==0xFE)
{ count3= 0;
CN[count3]=CT;
cs=CT;
}
else
{
count3++;
CN[count3]=CT;
if( count3<7)
cs+=CT;
else if(count3==7)
p=CT;
}
if ((count3==7)&&(p==cs)) //如果串口接收的数据达到INBUF_LEN个,且校验没错,
{
tflag=1; //就置位取数标志
P0 =CN[6]; //用第七个字节点亮P0口上的LED
}
else
tflag=0;
}
}
void Comout(unsigned char OutData)
{
SBUF = OutData; //输出字符
while(!TI); //空语句判断字符是否发完
TI = 0; //清TI
}
void TXD_dat( unsigned char *p, unsigned char num)//发送字符串
{
uchar k= 0 ;
do
{
Comout(*(p + k));
k++;
} while (k < num);
}
main()
{
while(1)
{
if(tflag) //如果发送标志为真
{tflag=0;
TXD_dat(CN,count3);//将收到的数据发送出去
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -