sppk.net
当前位置:首页 >> 51单片机C程序,串口通信,为什么我不能比较字符串 >>

51单片机C程序,串口通信,为什么我不能比较字符串

OK ,程序我可以提供.

你调整波特率建议使用11.0592MHZ的这样能得到标准的波特率

接收函数中,只有当收到“Z”时,才应该使 i=0;,才开始接收字符串. 另外,主函数发送,等待发送完毕时:while(!TI);,等待的期间,也会出现串口中断,也会收进一个字节到 word[i]=SBUF;.

c语言字符串对比可以调用标准库函数strcmp.该函数声明在string.h中,形式为int strcmp(char *a, char *b);返回值有三种情况,1,0或-1.其比较原则为:1 从第一个字符开始按照ascii码值比较,如果a的比b的大,返回1;如果a的比b的小,返回-1;如果相等,继续比较下一个字符.2 当遇到任意一个字符串达到尾部(值为\0),退出比较过程.3 如果长度相等,即二者均达到\0,返回0,此时表示二者相等.4 如果a的长度大,返回1,否则返回-1.

接高电平的次数 不是 数值 吗?怎么 要 发送变量字符串?用个计数器 计数,然后 发送 这个 数 不就行了祝你顺利

uchar i,j 时,i, j的最大取值是255, 你设置的是延时是2000,这越界了,实际不会有那大. 你可以单步调试,观察变量的值,这个问题就很容易发现. 关于发送0x02, 收到的是 00 00. 你可以检查以下地方: 1. 发送端的串口参数是否设置正确. 2. 接受端串口参数是否设置正确,两边的一定要一致. 3. 如果有条件,直接用示波器观察串口发出的数据,这是最容易发现问题的方法之一.

#include<reg52.h> //头文件,c语言一样#define uchar unsigned char //定义unsigned char为uchar#define uint unsigned intunsigned char flag,a,i; //定义unsigned char变量,其实这里用uchar也行uchar code table[]="I receive, thanks "; //定义一

如果用中断方式接收的话,只能接收单个字符.而如果用查询方式的话,接收字符串占用的时间真太长了,整个cpu将陷入一个长期无法工作的状态,按照波特率为19200来算,接收一个字符的时间是573微秒,十个字符的话就是5.73毫秒了,系统无法正常工作.建议用中断接收单个字符.

SETB ET1,这一句,应该删除.SJMP START,应该改为 SJMP $ 否则,你总是不停的重复初始化,那么,能收到两个字节,都是很奇怪的了.另外,程序中,缺少 RETI 指令.

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