您好、欢迎来到现金彩票网!
当前位置:58彩票 > 仿真程序 >

硬件仿真与烧写程序结果不一样原因总结

发布时间:2019-04-25 22:20 来源:未知 编辑:admin

  一,配置问题:实际烧片时单片机的配置字与仿真的时候是不是一样?烧写时是否配置正确?

  二,资源问题:单片机的ROM、RAM大小与仿真器的ROM、RAM大小是不一样的!

  三,驱动能力问题:通常仿真器的驱动能力比单片机要强;可以分两步检查,一是分别用仿真器与单片机时对应IO口波形进行对比,二是当仿真器与外设连接与不连接时波形的对比;

  2.如果是没有运行,检测单片机的基本参数是否已经满足工作电压要在芯片的引脚处测量复位引脚的复位曲线如何晶振是否已经起振芯片损坏,或者部分功能损坏。

  3.如果是运行不正确,检测用了看门狗,没有处理好,芯片上电后处于不停的复位状态,看起来就象没有没有工作起来是否进入了ISP状态对单片机写入对所有的IO口以1秒取反一次的程序进行测试

  KeilC本身就是编译与仿真一体的,当不要外部数据时很方便,当要外部输入时(比如用定时器作计数器用)它提供几个调试输入用的窗口可用它们来摸拟输入,同时KeilC本身提供一种调试函数用来配置摸拟外部输入的功能,这我在学习时看的一本书上讲过如用定时器作外部事件计数,调试函数由自己根据需要按特定的格式来编辑再按KEIL C的要求调入即可。学习时可用这种方法,做产品时最好是用仿真器调试。下面我给出我以前试过的用定时器作外部事件计数时摸拟外部输入的调试函数,并写出KeilC调用的步骤如下:

  4、保存(注意:扩展名为),编译该程序,成功后关闭Function Editor窗口;

  6、在屏幕左下脚的命令窗口中,键入t0_singl()后(必须回车)妈可向P3.4源源不断地提供脉冲信号。

  1、由于Keil C对中文支持不太好,因而会出现显示的光标与光标实际所在不一致的现象,这会对修改中文注释造成影响。在Windows2000下面,我们可以把字体设置为Courier,这样就可以显示正常。

  2、当使用有片外内存的MCU(如W77E58,它有1K片外内存)的时候,肯定要设置标志位,并且编译方式要选择大模式,否则会出错。

  3、当使用Keil C跟踪程序运行状态的时候,要把引起Warning的语句屏蔽,否则有可能跟踪语句的时候会出错。

  4、在调用数组的时候,Keil C是首先把数组Load进内存。如果要在C中使用长数组的时候,我们可以使用code关键字,这样就实现了汇编的DB的功能,Keil C是不会把标志code的数组Load入内存的,它会直接读取Rom。

  5、当编程涉及到有关通信,时序是很重要的。拉高管脚的执行速度远远比检查管脚电平的要快。

  6、在等待管脚电平变化的时候,我们需要设置好超时处理,否则程序就会因为一个没有预计的错误而死锁。

  7、能用C语言实现的地方,尽量不要用汇编,尤其在算法的实现,用汇编是晦涩难懂。

  8、程序的几个参数数组所占篇幅很大,其中液晶背景数组最长,有四千个Byte,因而把那些初始化数组都放在另外一个C文件,在主文件使用使用关键字extern定义,这样就不会对主文件的编写造成干扰。

  10、6.20版在编译带code关键字的数组时,编译通过但是单片机运行结果是错误的,改用6.14版后正常。

http://molise24.net/fangzhenchengxu/12.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有