注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
王绝天下的个人空间 https://home.eeworld.com.cn/space-uid-473370.html [收藏] [复制] [分享] [RSS]
日志

单片机调试常见问题

已有 3955 次阅读2015-1-14 21:08 | 单片机, 波特率, 测量, 电源, 开发

系统板实现功能MAX232实现串口通信

故障现象:上位机给单片机发数据单片机可以识别,但单片机给上位机传数据时上位机却接不到,只有在每次断电的瞬间可以收到断断续续的数据。

查错思路:断电瞬间电压降低至零,这个过程中可以接收到一个数据,怀疑可能是系统板电源供电问题,此时测量MAX23216VCC15脚地之间的电压,为6~7V,高于5V,再把单片机机开发板的P3.0P3..1用杜邦线引出来接到此系统板上,然后将两板共地,串口正常通信,再测此时电压,发现为4.8V左右——证实是电源问题。

查错过程:在网上看了很多资料,都说MAX232有两种,MAX232AMAX232232A的电容要求大点,我用的是232CPE,没有A,,所以应该用不着大电容,网上还有说推荐用电解点解电容,我之前用的是104的普通电容,断电瞬间的现象是直收到了一组数据,我换成4.7uf的电解电容后,效果还是一样,就是断电瞬间可以收到2~3组数据,我又换成10uf的电解电容,现象还是一样,只不过可以接到多组数据,而问题仍存在,所以怀疑和电容无关。

问题总结:MAX232周围的四个电容大小只是和波特率有关,电容越大,可以得到的波特率越高,用9600传,104的普通电容就可以了。MAX232芯片的工作电压为+5V,过高就不能正常工作,所以只在断电瞬间电压下降的过程中在到达+5V左右时传输了一组数据。

切记:使用元件时一定要注意它正常工作的区域范围。

 

使用STC系列单片机和Atmel系列单片机存在的问题

地球人都知道STC51系列单片机的指令系统和AT的完全兼容,最近做一个小系统出了点问题,在网上四处寻觅他俩之间的区别,结果……到处充斥着同样一句废话——他俩完全可以替换,但事实上问题很多——
1.STC
单片机执行指令的速度很快(其实这也是一句废话,呵呵),大约是AT3-30倍,尽管快是好事,但这样一来,你在AT上好使的程序在STC上不一定好用,反之亦然,最典型的例子就是那些对时序有要严格求求的模块,比如IIC18B20DS1302等的时序。再者,既然执行速度快了,那么那些非定时器控制的精确延时肯定要受影响,用STC时注意得加长延时,大约是AT10—30倍就差不多,这一点自己调试就知道了。
2.STC
单片机对工作环境的要求比较低,电压低于5伏时仍然正常工作,甚至3伏到4伏之间都还可以工作,然而这样的环境下AT肯定不行了,所以当一个系统用STC单片机好用,但用AT的单片机不工作时,直接查最小系统,看单片机的供电是否正常——一切从根源查起。

Keil C51编译错误警告解决方法积累

错误:

1. error C183: unmodifiable lvalue

原因:修改了不能改变的变量,注意定义在某些区域的变量是不能修改的,如前面定义了unsigned char code table[6],在后面是不能修改table[6]的。}

解决办法:将code去掉

警告:

1.WARNING L15: MULTIPLE CALL TO SEGMENT

原因:同一个函数即在主函数中调用了,又在中断服务程序里调用

解决办法:很简单,可以在二者之间取其一

2. WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

原因:前面定义的函数或变量等在程序中有未被使用的。

解决办法:根据程序删掉未使用的函数或变量等。

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章