标题:
关于单片机串行通信的问题 SBUF值给P1口,使LED灯亮
[打印本页]
作者:
常常常
时间:
2017-9-4 23:28
标题:
关于单片机串行通信的问题 SBUF值给P1口,使LED灯亮
用串口助手把值送给SBUF ,再把SBUF值给P1口,使LED灯亮。但是为什么不亮呢?问题出在哪里?老哥们帮看看
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
void UART_init()
{
TMOD = 0x20; //定时器工作在方式2
TH1 = 0xfd;
TL1 = 0xfd; //设置初始值,波特率为9600
TR1 = 1; //打开定时器1
SM0 = 0;
SM1 = 1; //设置串行口工作为方式一
REN =1; //允许串行口接收
}
void main()
{
void UART_inti();
while(1)
{
while(!RI);
P1 = SBUF;
RI = 0;
}
}
作者:
sldx
时间:
2017-9-4 23:28
main 中居然有这个void UART_inti();没报错么,去掉void
作者:
imxuheng
时间:
2017-9-5 16:56
PC端发的什么,要是字符的话应该不行
作者:
wulin
时间:
2017-9-6 06:20
串口通讯查询方式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
/*void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}*/
void UART_init()
{
TMOD = 0x20; //定时器工作在方式2
TH1 = 0xfd;
TL1 = 0xfd; //设置初始值,波特率为9600
TR1 = 1; //打开定时器1
SM0 = 0;
SM1 = 1; //设置串行口工作为方式一
REN =1; //允许串行口接收
}
void main()
{
UART_init();
while(1)
{
if(RI==1) //查询接收中断请求标志位为1(已收到)
{
RI=0; //接收中断请求标志位清0
P1=SBUF; //获取接收寄存器数据
}
// while(!RI);
// P1 = SBUF;
// RI = 0;
}
}
作者:
常常常
时间:
2017-9-6 21:33
sldx 发表于 2017-9-6 01:40
main 中居然有这个void UART_inti();没报错么,去掉void
没有报错
作者:
常常常
时间:
2017-9-6 21:50
sldx 发表于 2017-9-6 01:40
main 中居然有这个void UART_inti();没报错么,去掉void
谢谢 问题已解决!!是因为没有去掉void,以及函数调用时把“init”写成了“inti”,,,,,,
作者:
常常常
时间:
2017-9-6 21:52
但是问什么要去掉void呢?这个函数里没有返回值啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1