找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2806|回复: 0
打印 上一主题 下一主题
收起左侧

单片机程序调试之道

[复制链接]
跳转到指定楼层
楼主
ID:71235 发表于 2014-12-28 00:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    单片机程序调试和PC程序调试有很多不同,主要是1.单片机程序和硬件有直接的联系,而PC机程序一般只是纯软件的调试。2.单片机调试手段很多,可以软件仿真、硬件仿真、硬件指示电路、测量仪器等等,大部分都跟外部设备有关,需要一定的硬件设备投入,而PC机基本上是软件界面的调试几算法的调试,硬件投入基本没有。3.单片机调试需要经历编程、编译、烧片、调试这些阶段,而PC调试只要编译运行就可以。下面以这次的GPS显示终端的调试为例介绍本人的一些经验:

    1、仿真器仿真:GPS接收终端硬件很简单,只是51最小系统,GPS模块因为支持TTL电平,因而省去了rs232转换电路,程序分两块,一块是主程序,循环读取显示单元内容并送液晶显示,另一块是串口中断,中断程序负责读取串口数据,处理后送相应的显示单元。程序编制完成后就是调试,初期调试发现液晶显示器显示不稳定,部分显示内容与实际内容不符,因为主程序流程不是很复杂,因此问题可能出在串口中断程序中,经过不断的修改程序流程、程序参数,情况没有很大的改观,这时仿真器到了,经仿真器的单步调试发现了一个变量有问题,本应该在读取一个GPS字段后该清零的却没有清零,以至于后面的程序写入的显示单元地址出现错位,显示器显示出的也就成了乱码。

    2、采用模拟手段:在显示单元错位这个问题解决后,经过连续运行发现程序工作10几分钟后显示器显示就不正常,其中有个细节,就是上电复位后能持续工作达1个小时,而在显示不正常后用按钮复位后只能正常工作10来分钟,初步判断可能是显示器硬件有问题,但是显示器显示驱动采用的是比较成熟的程序,出问题的可能性不是很大,那么还有就是串口中断程序还有BUG,该如何判断呢?首先去掉GPS信号源,采用PC串口调试软件模拟GPS模块的输出数据,因为模拟方法可以调节发送数据的频率,可以排除51单片机运行速度过慢造成的问题,不幸的是采用这个方法后还是不正常,然后再次修改了程序,简化了部分程序,加快了运行处理速度,可问题还是存在。

    3、硬件指示电路:接着在P3.7端口接了个指示灯,中断程序中加入一个计数变量,当程序连续接收10次GPS协议头部时指示灯就闪一次,大约是2.5秒的周期,在显示器显示出错后,观察指示灯的反应很正常,因此显示器出问题的可能性更大了。

    4、辅助显示:再接着在硬件上接入一个8段字符显示器,显示的是GPS接收到的时间单元,1小时后原来的1602显示器显示出错后,8段字符显示器显示仍然正常,现在终于可以确认是1602显示器的问题了,至于是显示器硬件本身的问题还是程序驱动的问题,可以修改驱动程序时序、更换显示器来确认了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表