0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机硬件仿真与烧写程序结果同的原因分析

GReq_mcu168 来源:未知 作者:工程师曾玲 2018-10-02 11:45 次阅读

一.配置问题:

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

二.资源问题:

单片机的ROMRAM大小与仿真器的ROM、RAM大小是不一样的!

三.驱动能力问题:

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

要进行基本要素分析:单片机供电正常?起振没有?复位电路正常?芯片损坏?

单片机上电不运行情况的分析

1.单片机是没有运行,还是运行不正确?

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

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

单片机调试办法

LED进行状态指示,用串口进行数据指示,比用其它外设指示更可靠;

加入断点,烧写时是在不同的语句后面加入WHILE(1);

分模块调试,把每个小功能先调试通过,再进行组合。

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

1、编写如下信号函数:

single void t0_singal(void)

{

while(1)

{

PORT3|=0x10;//pull INT0(P3.4) high again

PORT3&=~0x10;//pull INT0(P3.4) low and generate interruptPORT3|=0x10;//pull INT0(P3.4) high again

twatch(CLOCK);//wait for 1 second

}

}

2、在DEBUG状态下单击DEBUG菜单在下拉菜单中单击“Function Editor(Open Ini File)... "选项, 弹出新屏幕后,将“打开”窗口关闭,这时屏上有Function Edito窗;

3、在Function Editor窗中输入上面的函数;

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

5、执行用户程序(必须连续执行);

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

Keil C调试某系统时积累的一些经验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定义,这样就不会对主文件的编写造成干扰。

9、所有函数之间的相关性越低越有利于以后功能的扩展。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632691
  • 仿真
    +关注

    关注

    50

    文章

    4036

    浏览量

    133393

原文标题:总结硬件仿真与烧写程序结果不一样的原因

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    51单片机程序的方法

    STC89C51是应用广泛的51单片机,很多人都是通过该单片机入门学习的,单片机的学习需要勤动手。单片机需要
    的头像 发表于 09-11 10:10 5345次阅读
    51<b class='flag-5'>单片机</b><b class='flag-5'>烧</b><b class='flag-5'>写</b><b class='flag-5'>程序</b>的方法

    单片机软件

    单片机软件,单片机软件,单片机
    发表于 12-09 18:40 16次下载

    AVR单片机程序progisp172

    AVR单片机程序progisp172,感兴趣的可以看看。
    发表于 03-23 17:46 111次下载

    单片机程序软件

    单片机程序软件
    发表于 01-07 21:01 17次下载

    51单片机怎么用usb程序

    ,用来进行通信下载程序和数据;;对自己搭建的电路板来说,仍会有MAX232芯片和RS232串口用来实现程序,实现对单片机写入数据和
    发表于 11-16 11:18 5.9w次阅读
    51<b class='flag-5'>单片机</b>怎么用usb<b class='flag-5'>烧</b><b class='flag-5'>写</b><b class='flag-5'>程序</b>

    对于单片机晶振不起振,不能程序原因分析和解决方法

    ; 3、怀疑单片机复位脚,用示波器测量发现复位脚为低,终于找到问题点; 4、复位脚为低,原因硬件复位狗打开了,而刚开始下载的程序没有使能复位狗,故失效; 5、将复位
    的头像 发表于 01-18 16:46 2.6w次阅读
    对于<b class='flag-5'>单片机</b>晶振不起振,不能<b class='flag-5'>烧</b><b class='flag-5'>写</b><b class='flag-5'>程序</b>的<b class='flag-5'>原因</b><b class='flag-5'>分析</b>和解决方法

    什么是单片机软件?如何

    什么是单片机软件? 什么是单片机软件? 简单点说,就是把你写好代码(C或者是汇编)专程的
    发表于 04-14 11:04 3.4w次阅读

    单片机方法总结

    单片机学习、使用非常重要的一个步骤就是把写好的程序写到单片机里,好多初学者,好不容易才写好一个程序,马上想让他跑起来,但是如何
    发表于 07-07 09:55 1.1w次阅读

    51单片机程序的方法

    STC89C51是应用广泛的51单片机,很多人都是通过该单片机入门学习的,单片机的学习需要勤动手。单片机需要
    的头像 发表于 04-04 15:54 2.4w次阅读

    STC单片机问题原因分析

    大家可能开始学单片机都是学的STC的单片机,因为它不需要用什么编程器就可以直接,但我看到还是有人在
    发表于 07-15 15:11 3870次阅读

    51单片机(二)—— 如何51单片机程序

    学习单片机很重要的一步就是为单片机程序
    发表于 11-12 10:06 14次下载
    51<b class='flag-5'>单片机</b>(二)—— 如何<b class='flag-5'>烧</b><b class='flag-5'>写</b>51<b class='flag-5'>单片机</b><b class='flag-5'>程序</b>

    PIC OTP 单片机程序方法

    作者最近需要对PIC品牌的8位OPT 单片机进行程序;作者第一次使用这种OTP单片机,按照惯性遇到的问题一一记录一下;MCU最小系统与
    发表于 11-16 12:51 12次下载
    PIC OTP <b class='flag-5'>单片机</b><b class='flag-5'>程序</b><b class='flag-5'>烧</b><b class='flag-5'>写</b>方法

    单片机的四种方式

    JTAG/SWD/ISP/SWIM详解单片机的四种方式单片机是一种可编程控制器,搭好硬件电路后,可以利用
    发表于 11-24 18:21 7次下载
    <b class='flag-5'>单片机</b>的四种<b class='flag-5'>烧</b><b class='flag-5'>写</b>方式

    串口 单片机 文件_单片机入门教程之程序方法

    单片机入门教程主要讲的51单片机,和其他的单片机编程所涉及的软件会有出入,51单片机是最基
    发表于 12-03 19:36 27次下载
    串口 <b class='flag-5'>单片机</b>  文件_<b class='flag-5'>单片机</b>入门教程之<b class='flag-5'>烧</b><b class='flag-5'>写</b><b class='flag-5'>程序</b>方法

    单片机仿真器和器的区别

    程序需要验证的时候都得一次芯片,然后接到板子上,再上电运行,而且不支持多种调试方式。仿真器是通过硬件和相应的软件对单片机进行
    发表于 12-29 19:49 13次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>仿真</b>器和<b class='flag-5'>烧</b><b class='flag-5'>写</b>器的区别