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...

#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...

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

肯定不会运行while(TI==0);下面的程序的,因为你的中断开着,程序跳到中断服务程序里面了,然后中断处理结束了之后,TI自动清零了,所以一直在while(TI==0);无限循环。 程序里面,既然开通了中断功能,那你就一直使用中断功能,为什么你还要使用...

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

51单片机是通过全双工串行通信口与外设通信的,要发送数据需要应用于与外设规约的通信协议实施。 1)规约发送4个字节来将一个单精度浮点数传递。接收方按此协议处理接收数据。 2)可规约两个字节的有符号整数来传递一个小数的100倍,接收方接收...

修改如下:#includesbit shuru=P1^0;unsigned char PuZh[16] = "a";unsigned char BuZh[16] = "b";bit flaga=0,flagb=0;void UsartConfiguration();void Delay10ms(unsigned int c); //误差 0usvoid main(){unsigned char i;UsartConfiguration(...

要关闭串口,只需要将SCON的REN置0就行了。这样就不会接收串口信息了。

51单片机串口一次发送一帧数据,真正数据一个字节,多个字节数据要发送,可以连续多次发送就可以了。

如果你想让串口显示0000,那么送到单片机串口的代码就应该按照ASCII码编码。ASCII码也用16进制表示。 也就是说,代码中:SBUF=i; 之前要将i转成ASCII码。 例如:0的ASCII码是30H,1的ASCII码31H,以此类推。ASCII码表百度一个吧。

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