首先是自己遇到了问题,然后在同事的帮助下解决了,然后上网一查有这样的注意文章,就转过来了
一、深入了解字符串的问题
char str11[]="a";
P1=strlen(str11);
上面的一个是一个测试字符个数的实例,用仿真就可以看到结果。结果是1。也就是说字符’’是不会被计入的。那么我们就可以通过此函数来分辩是否是字符和字符串。当然如果字符串是一个字符的话,那么就是我们上面的那个情况了,会直接被当做一个数看待。
注:上位机发过来的数据全部是字符串格式的。
二、串口中断问题
先看下面的程序。
void UART_SendByte(unsigned char dat)
{
SBUF=dat;
while(!TI) ;//等待发送完毕
TI=0;
}
这个程序就是一个简单的串口发送字符的程序,为了能够实现自动发送和接收,我们分析一下它。我们要同时实现接收,有接收那么就要有串口中断,通过串口中断达到接收数据的目的。可是当ES=1,程序并不会像我们想的那样运行,当执行完SBUF=dat后,程序开始等待,大概是5个时钟周期后,程序并没有直接运行TI=0这句,而是,因为缓冲区中的字符而直接跳转到串口中断函数中,甚至出现死循环这样的情况。
为了避开这种情况,我们引入了下面的程序:
void UART_SendByte(unsigned char dat)
{
SBUF=dat;
ES=0;
while(!TI) ;
TI=0;
ES=1;
}
或者写做一个中断处理函数,空的函数也可以:
void Com_INT() interrupt 4 //串口中断
{
}
上一篇:51单片机 数码动态显示
下一篇:C8051f300_UART0串口发送初始化
推荐阅读最新更新时间:2024-03-16 15:44
设计资源 培训 开发板 精华推荐
- 瓜分2000元新年开工红包!贸泽电子邀你元宵猜灯谜
- 【EE团】不到1折的零头价格坐享价值750元芯片!
- 注册泰克MDO示波器礼券 拿蓝牙耳机和纤细激光笔!
- 呼朋唤友,传播电源设计的秘密!
- Mouser 新用户大礼包再次来袭:晒单5折返E金币!
- 答题赢礼! | 如何利用PI Expert 电源设计工具快速搭建PD充电器
- Altera Cyclone V 开发板全体验
- 免费申请|兆易创新GD32L233尝鲜体验,开启节能“芯”时代!
- 【评论有礼!】Sleepace RestOn 智能睡眠监测仪拆解
- 4月TI两场EP直播,都挺好:超声气体流量计量创新方案+SimpleLink平台小鲜肉CC13X2/CC26X2专场