大神们好,我的目的是要实现串口接收一组字符串并作出相应动作,下面的程序本意是要其接收到串口助手发送的11111111时P1^0置1,接收到22222222时P1^1置1的,但是我昨晚试了没有成功实现,楼主能帮我看看哪里不行?
#include <reg52.h>
#include <intrins.h>
#define uch unsigned char
#define uint unsigned int
uch idata buf[8];
void init(void)
{
TMOD = 0X20;
TH1 = 0XE8;
TH1 = 0XE8;
TR1 = 1;
SCON = 0X50; // 1 ,REN = 1
P1 = 0X00;
}
void receive(uch idata * d)
{
uch i;
while(RI == 0);
for(i=0; i<8; i++)
{
d[i] = SBUF;
}
if(d[0] == 1)
{
P1 = 0x01;
}
if(d[0] == 2)
{
P1 = 0x02;
}
if(d[0] == 3)
{
P1 = 0x04;
}
RI = 0;
}
void main(void)
{
while(1)
{
init();
receive(buf);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
可能是我不会找资料吧,就没找到合适的例程,都是这边看看,那边看看,最后理解下自己写的,没有现成的串口接收字符串的例程可以看
前辈,接收数据是字符的
谢谢前辈,我一没留神给乱了
刚试了下,还是没效果,您看能不能再指点我一下?
#include <reg52.h>
#include <intrins.h>
#define uch unsigned char
#define uint unsigned int
uch idata buf[8];
void init(void)
{
TMOD = 0X20;
TH1 = 0XE8;
TH1 = 0XE8;
TR1 = 1;
SCON = 0X50; // 1 ,REN = 1
P1 = 0X00;
}
void receive(uch idata * d)
{
uch i;
while(RI == 0);
for(i=0; i<8; i++)
{
d = SBUF;
}
if(d[0] == '1')
{
P1 = 0x01;
}
if(d[0] == '2')
{
P1 = 0x02;
}
if(d[0] == '3')
{
P1 = 0x04;
}
RI = 0;
}
void main(void)
{
while(1)
{
init();
}
}
void REC() interrupt 4 using 0
{
receive(buf);
}
前辈对不起,没成,这个肯定是对的,我写的时候没留意。我照着您说的改正了,不过估计我还弄出了其他问题,哎,又没成功
一周热门 更多>