微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 谁能帮我看看这个程序有什么问题

谁能帮我看看这个程序有什么问题

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uchar unsigned  char
#define uint unsigned int
uchar  idata trdata[]={0x07,0x05,0x00,0x00,0xFF,0xFF,0xCC,0x1C,0xee};
uchar  idata trdatb[]={0x07,0x05,0xFF,0xB4,0xFF,0x09};
uchar  idata trdatc[6];
sbit K1=P3^2; //对应开发板K1按键
int t=0;
/*-------------------------------------------------------------*/
//串口初始化
void UART_Init(void)
{
SCON = 0x50; //串口工作方式为1 , 串行允许接收
//SM0=0;
//SM1=1;
//REN=1;
TMOD = 0x20; //定时器1 工作在方式2
//PCON = 0x80; //SMOD = 1; 波特率加倍
TH1 = 0xfd; //波特率 9600bps fosc="11".0592MHz
TL1 = 0xfd;
ES = 1; //开串口中断
TR1 = 1; //允许定时器1工作
EA = 1; //开总中断
}
void delay1ms(uint i)
{
uchar j;
  while(i--)
  {
   for(j=0;j<115;j++)   //1ms基准延时程序
   {
    ;
   }
  }
  }
/*-------------------------------------------------------------*/
//串口发送一个字节
void Uart_SendChar(unsigned char dat)
{
SBUF = dat; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI = 0; //清零发送标志位
}
/*-------------------------------------------------------------*/
//串口发送一个字符串
void Uart_SendString()
{  uchar
      i=0;
    while(trdata[i]!=0xee)
  {
   SBUF=trdata[i];
        while(!TI);
        TI=0;
        i++;
     }
}
/*-------------------------------------------------------------*/
//主函数
void main(void)
{
UART_Init(); //初始化串口
while(1)
{
if(K1==0)
{
delay1ms(20);
if(K1==0)
{
Uart_SendString(); //发送数据
while(!K1); //等待按键释放
}
}
}
}
/*-------------------------------------------------------------*/
//串口接收中断函数
void INT_Uart(void) interrupt 4
{
unsigned char rcv;
if(RI) //查询接收标志位(有数据发送过来时置为1)
{RI = 0; //接收标志位清零
rcv = SBUF;
trdatc[t]=rcv&0x0F;
t++;
if(trdatc[t]==trdatb[t])
{
P0=0xfe;
delay1ms(100);
P0=0xff;
}
}      
}
就想实现串口接受的数据,存进数组里再和那个已知的数组比较,结果体现在那个灯上,我试了  不行,遂来请教高手

1、你现在试是个什么现象
2、你用什么给单片机发的数据

我在开发板上实验出现的现象是LED我发的对他也闪,不对他也闪,我用的是LABVIEW写的串口读单片机发的指令,然后进行比较如果通过,在给单片机发指令,可是现在状态不对啊

咋了?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top