我想用串口 接受一串数组,然后判断正确发出另一串数组,下面的程式通不过,请高手指点
#include <reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include"main.h"
#include"com.h"
uint count=0;
unsigned char raid[4];//={0x01,0x02,0x03};
unsigned char rai[4]={0x01,0x02,0x03};
// 串口初始化
//------------------------------------------------*/
void UartInit(void) [url=]//9600bps@11.0592MHz[/url]
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xbf; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFA; //设定定时初值
TH1 = 0xFA; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
EA = 1; //打开总中断
ES = 1; //打开串口中断
}
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void sendbyte(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
/*------------------------------------------------
发送一个字符串
------------------------------------------------*/
void senddata(unsigned char *s)
{
ES = 0; //关闭串口中断
while(*s!='\0')// \0 表示字符串结束标志,通过检测是否字符串末尾
{
sendbyte(*(s));
s++;
}
ES = 1; //打开串口中断
}
/*------------------------------------------------
串口中断程序
------------------------------------------------*/
void UART_SER (void) interrupt 4 //串行中断服务程序
{
if(RI)
{
RI = 0; //清除接收中断标志位
raid[count]=SBUF; //读出接收到的数据
count++;
}
if(count==4)
{
senddata(rai);//串口输出
count=0;
}
if(raid[]=rai[])
{
senddata(rai);//串口输出
}
if(TI) //如果是发送标志位,清零
TI=0;
}
void main (void)
{
UartInit();//初始化
while(1)
{
}
} |