打印

高手找一下程序BUG吧

[复制链接]
636|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guqiancheng|  楼主 | 2017-11-30 17:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar table[]={0x23,0x03,0x04,0x00,0x00,0x00,0x03,0x23};
uchar array[]={0x23,0x04,0x00,0x23};
sbit siginal=P1^0;

void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}

void delay(uchar m)
{
uchar n;
for(n=0;n<m;n++);
}

void SendOneByte(unsigned char temp[],unsigned char j)
{
  uchar i;
  for(i=0;i<j;i++)
    {
        SBUF=temp[i];
    while(!TI);
    TI=0;
}
}

void main(void)
{
    InitUART();
   if(siginal==0)
   {
     delay(100);
   if(siginal==0)
    {
         SendOneByte(table[],8);
     }
         }
   if(siginal==1)
   {
    delay(50);
   if(siginal==1)
    {
     SendOneByte(array1[],4);
     }
     }
}

void UARTInterrupt(void) interrupt 4
{
    if(RI)
    {
        RI = 0;
        //add your code here!
    }
    else
        TI = 0;
}
提示说是主程序中第一个发送函数“]”有问题。
还有一点是我这个是配套红外热释放SR501的一个程序,当感应到有人时,BIS0001输出3.3V,然后我加了一个NPN三极管来驱动单片机。但是实际的效果确实,单片机只能检测一次,大神帮忙分析一下吧

相关帖子

沙发
xxp1943| | 2017-11-30 17:50 | 只看该作者
是编译没通过吧

使用特权

评论回复
板凳
mcu5i51| | 2017-11-30 17:55 | 只看该作者
SendOneByte(table[],8);

使用特权

评论回复
地板
7456| | 2017-11-30 20:12 | 只看该作者
SendOneByte(table[],8);改成SendOneByte(table,8);
SendOneByte(array1[],4);改成SendOneByte(array1,4);

使用特权

评论回复
5
linqing171| | 2017-11-30 21:49 | 只看该作者
楼上正解, table ,或者 &table[0], 都可以。

不过 void SendOneByte(unsigned char temp[],unsigned char j) 这句也可以写成 void SendOneByte(unsigned char* temp,unsigned char j) 这样看着习惯。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝