mshd.net
当前位置:首页 >> 51单片机串口发送问题 >>

51单片机串口发送问题

void Uart_Init() { TMOD|=0x20; SCON=0x40; PCON|=0x80; TH1=0xf3; TL1=0xf3; TR1=1; ES=1; EA=1; } void Send_Byte(unsigned char dat) { SBUF=dat; while(!TI); TI=0; } void main() { Uart_Init();//只需要初始一次 while(1) { if(P37==0&&S...

截图中没看到Dis_court,而是Dis_time。截图中的程序只发两次数,至于不停发送06是还有发送程序吧?与截图中的程序没什么关系吧?

TR1 = 0; //无奈的我想关掉一切,但是还是不行 ES = 0; // EA = 0; 上面的语句放在 while 内试试吧

void ser()interrupt 4 { if(RI) { RI=0; a=SBUF; flag=1; } }

#include void InitUART(void) { TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; ES = 1; TR1 = 1; } void main(void) { InitUART(); } void UARTInterrupt(void) interrupt 4 { if(RI) { RI = 0; //add your code her...

不知道你的发送值范围如果是小于16的数,那么修改如下: void send_com(unsigned char x) { SBUF=x+128; while(TI==0); TI=0; }

SBUF收到数据RI会置位的 电脑发送数据是一个字节接着一个字节,两个字节之间会有延时,所以收到数据你需要尽快处理,不然可能会被新的数据覆盖 串口中断处理可以将SBUF存入数组,清零Ri,4个数据都收到之后再统一处理

这个很容易,直接一个一个的发送就可以了。比如: #include main() { unsigned char str="this is a test",a; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; while(1) { while(*str!='\0') { SBUF=*str; str++; a=200; while(a--); } } }

#include unsigned char buffer[]={0x01,0x03,0x07,0x15}; //你自己讲Hello的任何形式数据写进这个 数组,就行了 unsigned char i = 0,flage=0; void delay1s(void) //延时1秒子程序 { unsigned char i,j,k,x; for(x=5;x>0;x--) for(i=20;i>0;i-...

//代码来自 单片机小精灵v1.3//波特率9600 11.0592晶振 方式2#include void InitUART(void){ TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; ES = 1; TR1 = 1;}void SendOneByte(unsigned char c){ SBUF = c; while(!T...

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com