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

51单片机串口发送问题

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

你的程序反应你的思路。思路有问题,结果就有问题。显示就一直放在循环 不要加什么条件判断避免意外的闪烁,中断里面(可以不看建议 最好分两次,数据,数据的反码来校验数据的正确性)关键来了 :进去之后把REN寄存器关了禁止接收。处理完里面的事...

可以不中断发数据,当然如果你需要的话,打开中断开关,然后中断函数里面处理

修改如下:#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(...

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

其实,你这个担心有点多余了。 在串口初始化时,可以设置串口接收为中断模式,这样,每接收一个字节的数据就会产生中断的,因是接收机是中断方式 ,就会响应中断,在中断程序中及时读出接收的数据并保存起来,或直接执行了。所以,是不会被后面...

程序采用了查询式发送,for(i=0;i

你这里的难点在于"只发送一次",可以定义一个标志变量初始为0,当P1.1=0时且标志为0,向串口发送一个数据,并置该标志为1,即使P1.1依然为0也不会一直发送;当检测到P1.1=1时,置标志为0,以便下次再触发。其他依此类推。

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

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

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