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-17 17:47

微芯扩展通用8位PIC单片机 进一步提高智能模拟功能
Microchip Technology Inc.(美国微芯科技公司)宣布扩展具有智能模拟和独立于内核的外设之全新PIC16F75X系列8位单片机(MCU),该产品是通用应用,以及电源、电池充电、LED照明、电源管理和电源控制/智能能源等应用的理想选择。全新PIC16F753 MCU建立在广受推崇的PIC12F752成功基础上。PIC16F753提供了PIC12F752的全部主要特性;例如集成的互补输出发生器(COG)外设可为比较器和脉宽调制(PWM)外设输入提供非重叠、互补波形,同时又实现死区控制、自动关断、自动复位、相位控制和消隐控制。此外,PIC16F753还提供了一个增益带宽积(GBWP)为3 MHz的运算放大器,以及一个
[单片机]
PIC单片机入门_中断系统详解
1.中断的基本概念 当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到、有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原先的程序去执行,这就形成了一次“中断”。“中断”加强了单片机处理突发事件的能力,如果没有中断功能,对可能发生的特殊状况的处理就必须采用定时查询,这样就会浪费大量的CPU时间。 因此,中断是单片机中很重要的一个概念,是提高工作效率的重要功能,中断系统功能的好坏是衡量单片机功能的重要指标。单片机的“中断源”与单片机包含的外围设备有很大的关系,所谓“中断源”就是引起中断的原因或根源,就是中断请求的来源。16F873/876内部集成了12
[单片机]
PIC单片机之EUSART串行通信接口
PIC 单片机的EUSART是一种串行通信接口,我们可以利用他让不同设备之间传输数据,我们来讲讲我们最常用的串行异步接收和发送。 管脚 串行异步接收和发送。如果只要两个引脚,一个是接收RX 一个是发送TX。 数据格式 我们先来讲讲TX是如何发送出数据的,数据格式具体是什么样的。 如果我们要向其他设备发送个大写字母A。将是什么样的呢。 A 这个字母对应的ASCII码是65,对应的八位二进制数则是 01000100。TX就将对应的二进制码发送出去。 发送时用高电平来代表1,用低电平代表0. 那不发送数据的时候管脚就一直为高电平。 启动位和停止位 怎么区分现在是在发送数据还是在常态呢?所以在每
[单片机]
<font color='red'>PIC单片机</font>之EUSART串行通信接口
PIC单片机的多机无线通信系统设计
现代通信技术的迅速发展使得许多应用领域都采用无线的通信方式进行数据传输。编解码芯片PT2262、PT2272组成的电路,由于具有体积小、功耗低、功能强、成本低等特点,广泛应用于各类的无线遥控器、无线报警器以及玩具等其他小型电器装置。但是,这种电路极少用在多个字节数据的通信方面,具有一定的局限性。本文主要介绍利用433 MHz高频发射模块和接收模块来制作多机无线ASCII码格式的短信通信。该通信方式是在433MHz高频发射模块和接收模块的基础上自己定义无线传输协议,实现任意两机之间的多个字节数据通信。 1 硬件系统设计 本系统主要由PIC16F877A单片机构成控制系统,周围4个模块分别是:按键输入模块、显示输出模块、接
[单片机]
<font color='red'>PIC单片机</font>的多机无线通信系统设计
pic单片机p18f458A/D中断转换程序
//程序实现 A/D 转换功能,A/D采用中断方式。该程序通过p IC 单片机 p18f458的RA2模拟通道送入一直流 电压 , //当送入的直流电压大于2.5V时,与PORTD口相连的8个 发光二极管 闪动,当直流电压恢复到 //http://www.51hei.com 单片机 网提供此ad转换程序,有问题请联系本站。 //2.5V以下时,发光 二极管 停止闪动,且只有低四个发光。 #include p18f458.h union adres { int y1; unsigned char adre ; }adresult; //定义一个共用体,用于存放A/D转换的结果 unsigned char i; unsigne
[单片机]
用单片机制作的遥控回应式报警装置
  本文介绍的遥控回应式报警装置,可在150米范围之内监控报警对象,适合于各种场合的防盗报警。对于一些无回应方式的报警系统,也可作为其功能缺项的补充。该装置采用编、解码器和PIC单片机处理收发的监控和报警信息,使监控准确、抗干扰性强,并减少了元器件的数量和整机功耗。 1 系统功能和特点   该遥控回应式报警装置的功能和特点如下:   ·通过遥控器按钮可测试与主机的通路状态,对主机设置即时回应、定时回应和遇警鸣笛等工作方式。   ·通过遥控器按钮观察三个通道报警状态的实时连续变化,可准确判断报警对象所处的环境状况。   ·功能扩展灵活。可通过软件编程和增加报警通路而方便地扩展为智能防盗系统。 2 硬件电路及原理   本
[单片机]
用单片机制作的遥控回应式报警装置
PIC单片机驱动LCD1602液晶循环显示两行字符串程序
#include pic.h __CONFIG(0x1832); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 //LCD控制线宏定义 #define rs RA0 #define rw RA1 #define e RA2 char web = { www.51hei.com }; char tel = { QQ:776860123 }; void init(); //申明I/O口初始化函数 void lcd_init(); //申明LCD初始化函数 void write(char x); //申明显示1字节数据函数 voi
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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