#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三极管来驱动单片机。但是实际的效果确实,单片机只能检测一次,大神帮忙分析一下吧 |