PIC单片机源程序的模拟仿真设计

发布者:自由思想最新更新时间:2019-12-04 来源: eefocus关键字:PIC单片机  源程序  模拟仿真 手机看文章 扫描二维码
随时随地手机看文章

我们在编辑PIC单片机的C语言时,常常应用对源程序的模拟仿真技术,因为对程序的模拟仿真可代替部分单片机的硬件制作与调试,即使在深入学习PIC单片机C语言程序时,模拟仿真技术,也是不可缺少的。这里以程序实例演示其操作方法。


对源程序的模拟仿真可以完成下列功能:直接观察C程序从主程序main()开始运行的全过程;为了清楚观察程序中各变量和寄存器的变化情况,可采用单步运行(stePINto)命令和单步越过(stepover)命令进行模拟运行调试,使观察变量更方便;设置断点再选择Run(快速)命令,程序运行到断点处会停下来,以便观察变量功能;此外,还能定量观察程序中的变化值,如直接观察程序的延时量等多种功能。当然在进行程序模拟仿真时,对源程序还有些技巧性的处理,以下将分别叙述。


1.PICC与PICC18的C编译简介

要用C语言开发PIC单片机和模拟仿真调试程序,必须有相应的编译器,PICC与PICC18的C编译器是优化的PIC单片机C编译器,它由澳大利亚HI-TECH公司研制的,该编译器是目前性能优异的PIC系列单片机C编译器软件,也完全符合美国ANSIC标准。PICC是用于PIC16系列产品:PICC18可用于PIC18系列产品;这两个编译器均可运行在微芯公司MPLABIDE集成开发的环境下工作。


由于该C编译器是运行在MP/ABIDE集成开发环境下的,所以要求用户熟悉MPLABIDE集成开发环境下的使用方法。


(1)PICC与PICC18编译器的主要特性。该编译器是在MPLAIDE集成开发环境下,对源代码程序的调试,可在源程序上设置断点,而当源程序运行到断点处会自动停止下来,、以便操作者观察变量值和修改变量值;在集成开发环境下进行程序的单步,连续运行操作,也便于操作者观察程序中的各个变量值;支持硬件仿真,即MPLABICE(ln-CircuitEmulator)、支持软件仿真,即MPLABSIM(Simulator)和一些在线调试器,如MPLABICD(ln-CircuitDebugger)ICD2调试器。此外,在单个项目中允许汇编语言和C语言的混含编程。

(2)PICC与PICC18编译器支持的变量类型。在编辑PIC单片机C程序时,定要按照PICC与PICC18的编译器所支持的变量类型书写程序的格式进行,这些格式如图附表所示。

PIC单片机源程序的模拟仿真设计

以上所述的内容,均可在以下的程序实例中得到说明。有关MPLABIDE和PICC与PICC18的软件,均可在网站上下载获取,再安装在自己的电脑中,注意:电脑桌面应是XP系统的。


2.源程序的软件仿真调试前的准备

对PIC单片机的软件仿真调试时,应首先在MPLABIDE集成开发环境下(笔者用的是MPLABIDEv7.40版)编辑其源程序,并命名XX.C。


然后通过创建项目(project)再经PICC编译器(在MPLABIDE环境下)对程序编译,最后生成了目标码.hex后,才可对源程序进行仿真调试。


将上述在C编译成功的C程序PIC1.c直接调到MPLABIDE的桌面上(若笔者要引用PICl.e作模拟仿真调试,仍应在MPLABIDE环境下,经pice编译器对PICl.e编译生成.hex,才能进行仿真调试),如下图所示(部分界面),在图4的界面上标记有MPLABIDEV7.40和PICl.c的部分程序。

PIC单片机源程序的模拟仿真设计

用鼠标点击界面上的Debugger(调试),在其下拉菜单SelectTool引导下的命令MPLABSIM(软件模拟调试),用鼠标点击之,生成上图的界面(部分),在其界面顶端有7个按钮(调试快捷图标),为了说明问题,单独取下,如下图所示。

PIC单片机源程序的模拟仿真设计

PIC单片机源程序的模拟仿真设计

按钮各命令的特性:

(1)Run:用鼠标点击Run按钮,可直接运行程序,直到遇到断点(以下将介绍)或单击Halt(停机)按钮为止。多数情况下不使用Run方式进行程序调试,因为这种运行方式很难观察到程序运行中的状态。只是在程序中设置有断点时,方可派上用场。

(2)Halt:用鼠标点击该Halt按钮,可使单片机处于停机状态。如其他各按钮一旦工作,程序运行,只需点击Halt按钮,程序即刻停止运行。

(3)Animate:用鼠标点击该按钮,可使仿真程序慢步运行,在运行时不停地刷新寄存器的值,利用watch窗口即可观察到寄存器的改变值(定量察看)。

(4)Step Into:用鼠标点击该按钮,仅执行一条代码指令,然后停机,再点击该按钮,又执行一条代码指令。

(5)Step over:用鼠标点击该按钮,可把调用的子程序全部执行完成,然后在下一条指令操作码处暂停。当被调用的程序是一个延时程序时,特别有用,这与单步执行完全等效。

(6)Step out:用鼠标点击该按钮时,就直接跳出程序。

(7)Reset:用鼠标点击该按钮,程序运行复位。


上述各个仿真按钮功能,在实际对程序仿真调试时,往往是配合使用而不是单一的使用.这将在以下仿真调试时清楚地看到。


3.源程序的软件仿真操作

(1)定性观察源程序PICl.e的运行过程:将已编译成功的PICl.e源程序图5放在电脑桌面上放大获得完整界面之后,用鼠标点击按钮Animate(慢速),然后快速又用鼠标点击图6的按钮Halt(停止),即可使程序快速运行到主函数处,停止运行,如下图所示。

PIC单片机源程序的模拟仿真设计

从界面上可看到主程序main()的下方左边,有一程序运行的黄色箭头并指向程序体中的赋值语句TRISB=0x00;代表C程序的运行总是从主程序开始的。接着用鼠标点击图6的按钮Step Into(单步),每点击_次程序运行的黄色箭头就顺序向下运行一次,直到首次运行到主调显示函数display(x);你可不再点击而停下来,如下图所示。

PIC单片机源程序的模拟仿真设计

程序首次运行到主调显示函数display(x);的原因是在main()函数体内的赋值语句x=0;此时若用鼠标再点击按钮Step Into(单步),则程序就转到被调函数处,将主调函数的实参0,经值传递到被调函数Voiddisplay(unsigned int x)的形参,然后由被调函数执行其显示的功能,此时数码管LED显示为00。其显示界面如下图所示。

PIC单片机源程序的模拟仿真设计

若要使程序再运行,就要将鼠标不断点击按钮Step Into、直到运行到赋值语句urut_bit=X%l0;处,就不再点击为止,如下图所示。

要使程序再运行,换用按钮Step over(单步越过),此时程序即可顺序运行下去,如下图所示。

PIC单片机源程序的模拟仿真设计

由于程序运行到while(d>0)中,而D=97,若再用鼠标点击按钮Stepover,也很难跳出循环,为此要让程序跳出while(d>0)循环,可用鼠标点击按钮Stepout(单步跳出),此时程序跳出循环到while(l)循环语句中的x++;处即黄色箭头所指位置(不是第一次的display(x)处,如下图所示。

PIC单片机源程序的模拟仿真设计

此时程序执行X++的0+1=1,若再用鼠标点击按钮Step Into(单步),程序运行到下一步的if语句,即判断X达到100否(数码管LED显示最大为99),如下图所示。

PIC单片机源程序的模拟仿真设计

若X++<100,又用鼠标点击按钮Step Into(单步),则程序立刻返回到调用显示函数处display(x);如下图所示。


此时仍然注意程序运行的黄色箭头指示。

PIC单片机源程序的模拟仿真设计

上述的源程序软件仿真操作,均利用下图的各按钮进行的,实际操作时也可利用MPLAB IDE的Debugger(调试)下拉菜单,同样有下图按钮对应的命令从Run-Reset,只不过使用起来很不方便吧!

PIC单片机源程序的模拟仿真设计

(2)定量观察源程序中变量值的变化:这里的定量观察是指两种定量:1)变量,如PICl.c中的数码管LED的个位,十位的变量显示的增薰值变化;2)程序运行时每条命令代码所清耗的时间或程序段的清耗时间。

PIC单片机源程序的模拟仿真设计

其操作方法如下:在操作右图时,同时用鼠标点击MPLAB IDE中的Debugger,在其下拉菜单中,点击Setting,即可出现——Simulator SetTIng新界面,该界面用于用户对PIC单片机时钟频率的设置,将界面中的20(MHz)改为实际工作频率(笔者是4MHz),然后用鼠标点击确定,界面消失。再用鼠标点击Debugger,在其下拉菜单中,点击命令Stopwatch,即出现Stopwatch界面,将该界面放在MPLAB IDE的桌面上,又用鼠标点击MPLAB IDE中的View,在其下拉菜单中,点击LOCals命令,则又出现Locals的新界面。这样右图的界面中同时又出现了上面两种界面(包括程序菜单三种界面),如下图所示。


此时仍按右图的方法进行仿真操作,此时可在Stopwatch界面中观察到程序运行一次的时间值(用鼠标每次点Zero观察)或程序的累计值(不管Zero);同时在Locals界面上观察数码管LED的个位或十位的累计值。


实际操作时,往往需对程序作技术处理,否则操作耗时太长。如将PICl.c中的d值从97改为3和将if(x==100)改为if(12),然后再进行编译生成目标码.hex后,再进行上述仿真调试,就很理想了。

关键字:PIC单片机  源程序  模拟仿真 引用地址:PIC单片机源程序的模拟仿真设计

上一篇:如何在PIC单片机上实现发送数据
下一篇:如何开发出一个PIC单片机

推荐阅读最新更新时间:2024-11-03 00:17

液晶显示源程序代码及相关注释
************************************************** *yj.c *连线图: * DB0---DPROT.0 DB4---DPROT.4 RS-------------P2.5 * DB1---DPROT.1 DB5---DPROT.5 RW-------------P2.6 * DB2---DPROT.2 DB6---DPROT.6 E--------------P2.7 * DB3---DPROT.3 DB7---DPROT.7 VLCD接10K可调电阻到GND* *80C51的晶振频率为12MHz *液晶显示程序 *******************************
[电源管理]
如何使用PIC单片机扩展8255A并口
#include __CONFIG(0x3B31); #defineA0RB0 #defineA1RB1 #define CSR B2 #defineLERD0 #defineWRRD6 #defineRDRD7 constunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//0-F-全灭-共阳极数码管 unsignedchartmp[]={0,0,0,0,0,0,0,0}; voiddelay1ms(unsignedintx) { unsignedchari; f
[单片机]
如何使用<font color='red'>PIC单片机</font>扩展8255A并口
51单片机和pic单片机有什么区别_其程序设定有什么不一样
 什么是51单片机   51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。      什么是PIC单片机   同步电动机运行稳定性和可靠性对工业生产有重要的影响。单片机用于同步电动机励磁控制,由于软件丰富,能使励磁装置
[单片机]
51单片机和<font color='red'>pic单片机</font>有什么区别_其程序设定有什么不一样
Microchip推出针对PIC单片机的协议栈
全球首家为MCU定制DLMS协议栈的半导体公司,协议栈支持范围广泛的能源类型和通信协议之互操作性 全球领先的整合单片机、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)宣布,与Kalki Communication Technologies Ltd.(Kalkitech)合作推出一款针对16位PIC®单片机(MCU)优化的设备语言报文规范(DLMS)协议栈。DLMS协议已经成为智能表具设计人员实现计量系统互操作性的全球标准选择;其中的计量系统包括大部分能源类型(电、气、热和水)、多种应用(民用、输电和配电)、众多通信媒体(RS-232、RS485、PSTN、GSM、GP
[单片机]
Microchip推出针对<font color='red'>PIC单片机</font>的协议栈
PIC单片机温度测量领域应用及Protues仿真调试
简介:本文基于PIC单片机来设计数字式测温计,直接采用数字式温度传感器DS18B20,用单片机对18B20进行控制,来进行测温。显示部分可用lcd1602,单片机可直接驱动lcd1602显示温度,硬件较简单,稳定。DS18B20采用单总线技术,容易扩展,并且具有转换速度快,转换精度高,可由片机直接读出温度并显示出来等优点。 0 引言 在日常生活经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻,而热电偶和热电阻测出的一般是电压,在转换成对应的温度,需要比较多的硬件支持,硬件电路很复杂,软件调试也复杂,制作成本高。而且测出来的温度精度也没有技术成熟的温度传感器高。 本文基于PIC单片机来设计数字式测温计,直接采用
[单片机]
<font color='red'>PIC单片机</font>温度测量领域应用及Protues<font color='red'>仿真</font>调试
PIC单片机与MCS-51系列单片机的区别
应该说有三个主要特点: (1)总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位12、14、16位。 (2)流水线结构:MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条
[单片机]
多媒体投影机遥控器的PIC单片机仿真
当前,投影机已是高校多媒体教室的常规设备,但是由于使用频繁,人员又杂,投影机遥控器损坏及遗失的情况时有发生。因为学校用的投影机均为进口产品,遥控器很难配到,并且能买到的话价格也是异常昂贵。利用单片机仿真遥控器的功能,制作成本很低的投影机遥控器具有实用推广价值。 制作投影机遥控器的关键是先要读出原投影机遥控器(同型号)的所有按键的控制码数据,然后做成按键控制码表格,当仿真时在按键操作下单片机将不同的控制码数据发射出去,达到遥控投影机的目的。 1 读遥控器按键码方法 1.1读遥控器按键码硬件电路 如图1为单片机读投影机遥控键码的控制电路。单片机使用宏晶公司的STC12C5410,P1.6口灯用作读码状态的指示,灯亮代表读
[单片机]
多媒体投影机遥控器的<font color='red'>PIC单片机</font><font color='red'>仿真</font>
PIC单片机原理
据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对 于世界市场我国的占有率还不到1%。这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。 当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved