•  Keil有很强大的软件仿真功能,通过软件仿真可以发现很多将要出现的问题,Keil仿真可以查看很多硬件相关的寄存器,通过观察这些寄存器值的变化可以知道代码有没有正常运行。这样可以避免频繁下载程序,延长单片机...

    一、软件仿真

        Keil有很强大的软件仿真功能,通过软件仿真可以发现很多将要出现的问题,Keil的仿真可以查看很多硬件相关的寄存器,通过观察这些寄存器值的变化可以知道代码有没有正常运行。这样可以避免频繁下载程序,延长单片机Flash寿命。

        开始仿真之前,先配置一些选项。

        1.在工程设置里设置好芯片型号和晶振频率。


        2.在“Debug”选项卡中选择“Use Simulator”,表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103C8”,用于设置支持STM32F103C8的软硬件仿真。


        3.点击开始仿真,这个时候会多出来一个工具条,就是Debug工具条。


      1     2   3    4   5   6    7               8            9   10   11   12   13           14      


    1:复位,其功能等同于硬件上按复位按钮,相当于实现了一次硬复位。按下该按钮后,代码会重新从头开始执行。

    2:执行到断点处,按按钮用来快速执行到断点处,有时候并不需要观看每步时怎么执行的,而是想快速执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是已在查看的地方设置了断点。

    3:停止运行,此按钮在程序一直执行的时候变为有效,可以使程序停止下来进入到单步调试状态。

    4:执行进去,该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下等同于执行过去按钮。

    5:执行过去,在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行。

    6:执行出去,该按钮是进入了函数单步调试的时候,有时候可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数回到函数被调用的位置。

    7:执行到光标处:该按钮可以迅速使程序运行到光标处,与执行到断点处按钮功能类似。

    8:汇编窗口,通过该按钮可以查看汇编代码,这对分析程序很有用。

    9:堆栈局部变量窗口,通过该按钮可以显示Call Stack+Locals窗口,显示当前函数的局部变量及其值,方便查看。

    10:观察窗口,MDK5提供2个观察窗口(下拉选择),该按钮按下则弹出一个显示变量的窗口。输入想观察的变量或表达式,即可查看其值,是很常用的调试窗口。

    11:内存查看窗口,MDK5提供4个内存查看窗口,按下按钮,则弹出一个内存查看窗口,可以在里面输入要查看的内存地址,然后观察这一片内存的变化情况。

    12:串口打印窗口,MDK5提供4个串口打印窗口。按下该按钮,则弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。

    13:逻辑分析窗口,该图标下面有3个选项,一般用第一个,也就是逻辑分析窗口。通过SETUP按钮新建一些IO口,于是可以观察这些IO的电平变化情况,并以多种形式显示出来,比较直观。

    14:系统查看窗口,该按钮可以提供各种外设寄存器的查看窗口(通过下拉选择),选择对应外设即可调出该外设的相关寄存器表,并显示这些寄存器的值,方便查看设置是否正确。


    二、硬件仿真

    硬件仿真则是程序下载到单片机中,进行的仿真,是程序实际在单片机中运行的情况。


    需要选择后面那个选项,然后在下拉单里选择自己的仿真器。然后后面步骤和软件仿真一样。


    注:要在逻辑硬件仿真里使用逻辑分析仪之类的工具,要开“Trace”



    展开全文
  • 注:本文主要介绍利用protues和keil软件联合仿真51单片机进行的跑马灯实例。 软件:Proteus 8 Professional 和 Keil uVision4(目前keil分为ARM的和51的,下载该软件要分清) 过程: 1. keil编写源代码 1.1 ...

    注:本文主要介绍利用protues和keil软件联合仿真51单片机进行的跑马灯实例。


    软件:Proteus 8 Professional 和 Keil uVision4(目前keil分为ARM的和51的,下载该软件要分清)


    过程:

    1. keil编写源代码

    1.1 建立工程

        打开keil,建立名为test(也可为其它名)的工程,CPU选择Atmel的AT89C52,如下图所示


    然后单击否选项,建立好工程了。

    1.2. 编写源代码

    建立test.c文件,并加载到该工程中,单击魔术棒->Output->"Create  HEX file"->OK,如下图所示:


    在 test.c中编写代码如下,编译通过无错误,在practice文件夹下会发现有个test.hex文件,如下图所示:



    2 protues建立仿真电路

    2.1 建立工程,建立仿真电路

            创建的仿真电路下图所示


    3 联调

    双击80C52单片机,单击 Program File->选择test.hex->OK,如下图所示


    在protues中运行该仿真电路,跑马灯正常运行。

    本文附带keil的源代码及protues的仿真电路,下载链接如下

    http://download.csdn.net/detail/echoszf/9775383

    如有疑问可以联系我,我的联系方式为QQ:1185281115

    展开全文
  • (学习笔记) 出现电压抖动无法解决,...单片机的带负载能力不足以驱动数码管,因此需要锁存器进行驱动。 3、8051单片机 P0用于位选和段选 P2.7wela(位) P2.6dula(段 4、总线(非必须) (1)画出总线。...

    (学习笔记)

    锁存器无法锁存,不知道解决,失败。

    在这里插入图片描述

    1、数码管
    相关知识:com_a是共阳极,com_k是共阴极,选择的时候注意,这里用的字段码是共阴极的接法,使用供阳极可以在相同接法下使用按位取反~。
    在这里插入图片描述
    2、D锁存器
    单片机的带负载能力不足以驱动数码管,因此需要锁存器进行驱动。
    在这里插入图片描述
    3、8051单片机
    P0用于位选和段选
    P2.7wela(位)
    P2.6dula(段
    4、总线(非必须)
    (1)画出总线。
    (2)将单片机P0口接到总线,背景有很多小点,从单片机引脚单击划线,到总线附近一个点的地方就会自动连接到总线,再次单击后出现总线设置窗口,这时总线没被使用,“确定”即可,接下来还有7个引脚一样。完成后总线便有8个号,以后再接入时,选择已有的号就是与之相连,最下面的号是即将创建的号。
    在这里插入图片描述
    在这里插入图片描述
    可以看到相同的号的线是连在一起的。
    5、排阻(上拉电阻)
    公共端接VCC,其他接P0(通过总线)。

    6、连线图。
    在这里插入图片描述

    无关

    multisim仿真时,LED与电阻串联时,LED的阻值约为电阻的一半,且与电阻在LED的哪一端无关。
    这里LED导通电流为3mA。
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • proteus软件仿真的图给的是74HC573,但是没找到,上网找了一会没找到,纠结半天差点自己封装8个1位D型锁存器。 不过还是误打误撞找到类似的,如果有更好的替代请评论提示。 Q端(输出端)分别连接LED灯,D端(输入...

    (学习笔记)
    目标图。
    在这里插入图片描述
    1、找排阻,需要一线作为公共电位(接VCC电源),八线作为8位输入(分别接8个LED灯),所以选择8Line。
    在这里插入图片描述
    2、找8位D型锁存器。
    proteus软件仿真的图给的是74HC573,当时没找到,用了74273。(后来找到,叫74F573PC。)
    Q端(输出端)分别连接LED灯,D端(输入端)分别连接单片机P1的8个管脚(跟代码对应,可选)。
    11号端口需要接VCC电源保持工作状态,CLK时钟端口接到了单片机的P2.5端口(跟代码对应,可选)。
    在这里插入图片描述

    3、接下来就是51单片机了,虽然这里用了52芯片不过不影响。
    在这里插入图片描述

    放置元件后会弹出设置向导,第一步设置名字和路径,根据个人情况。第二步,如果使用 Multisim里的51头文件,是8051.h ,不是 reg51.h,这里选择外部HEX文件,用KEIL软件编译生成,具体使用参照郭天祥的单片机教学。(单片机,10天征服你)
    在这里插入图片描述

    4、还有LED灯(任选)
    在这里插入图片描述

    5、电源和地。
    VCC和GROUND。
    6、连线吧。(毫无美感哭)
    在这里插入图片描述
    7、程序。
    双击51芯片,选择“代码”,“属性”,选择“项目一”(个人起的名字)
    在这里插入图片描述
    在这里插入图片描述

    右边选择HEX文件。
    一路确定,开始仿真。

    #include<reg52.h>
    #include <intrins.h>
    #define uint unsigned int 
    #define uchar unsigned char 
    uchar temp,num;
    sbit p2=P2^5;	
    void delay(uint);
    void check();//用于启动时检查灯的好坏,仿真就没用处。
    void clock();//74273上升沿触发,此函数用来锁存。
    
    void main()
    {
    	check();
    	temp=0xfe;
    	while(1)
    	{	
    		
    		for(num=0;num<8;num++)
    			{
    				
    				P1=temp;
    				clock();
    				delay(10);
    				temp=_crol_(temp,1);
    				P1=0xff;
    				clock();
    				delay(10);	
    			}
    
    			temp=0x7f;
    		for(num=0;num<8;num++)
    			{
    				P1=temp;
    				clock();
    				delay(10);
    				temp=_cror_(temp,1);
    				P1=0xff;
    				clock();
    				delay(10);	
    			}
    		}
    }
    
    void delay(uint z)
    {
    	uint x,y;
    	for(x=z/4;x>0;x--)
    		for(y=z/2;y>0;y--);	
    }
    
    void check()
    {
    	uchar t=0x00;
    	P1=t;
    	p2=0;
    	clock();
    	delay(50);
    }
    
    void clock()
    { 
    	p2=1;
    	delay(10);
    	p2=0;
    }
    	
    
    展开全文
  • 一份简单易懂的单片机keil仿真软件教程PDF,图文并茂,好懂
  • 一、keil仿真语句运行时间运算 1.在keil下仿真,我们打开工程设置对话框,在target 的标签下,Xtal(MHZ),改为11.0592;(已51单片机为例) 2.打开仿真 先看一下此刻sec所对应的的数字记录下 然后点击要你...

    本文是用于个人学习记录,如有出错请多多指教!

    一、keil仿真语句运行时间运算

    1.在keil下仿真,我们打开工程设置对话框,在target 的标签下,Xtal(MHZ),改为11.0592;(已51单片机为例)

     2.打开仿真

    先看一下此刻sec所对应的的数字记录下

     然后点击要你要运行的语句(在词条语句的数字行点击,点击完成红色)

     

    点击运行按钮

    运行后的观看sec变化

    即运行一条语句所花费的时间等于 423.18-422.09=1.09us

    而这个时间正好是51单片机在11.0592Mhz晶振频率下,一个机器周期(重要)所花费的时间。

    二、单片机周期

    (1)时钟周期。也称震荡周期,定义为时钟频率的倒数(时钟周期就是单片机外接晶振的倒数,如12MHZ的晶振,它的时钟周期就是1/12us),它是单片机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。显然,对同一种单片机来说,时钟频率越高,单片机的工作速度越快。但是,不同单片机的内部硬件结构电路不想听,所需要的时钟频率范围也不一定相同。

    (2)状态周期。它是时钟周期的两倍。

    (3)机器周期。单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作,如取指令、读写等。

    (4)指令周期。它是CPU执行一条指令所需要的时间。一般一个指令周期包含1~4个机器周期。

     

     

    展开全文
  • STC8A在线keil仿真

    2018-05-24 23:15:44
    原来STC8A8K还可以在线KEIL仿真。需要设置几个东西就可以了,用到了下载口(P3.0、P3.1),做仿真时,这2个引脚不能有占用。1、先选择单片机型号,然后点击“将所选的********仿真芯片”,点击下载编程,给芯片上电...
  • 新概念51单片机P35. 晶振:12M 工具软件下载:地址 测试代码 #include <reg52.h> #define uint unsigned int sbit led1=P1^0; uint i,j; void main() { while(1) { led1=0; //延时892ms for(i=1000;i&...
  • 给出了全部C51运行库函数及其应用范例,对Keil C51软件包中各种应用工具都作了详细介绍,阐述了Vision4新增加的各种功能和应用方法,包括软件模拟调试和硬件目标板实时在线仿真。本书的特点是强调先进性和实用性,给...
  • 单片机Keil软件仿真与调试技巧,单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措。实际上.各种仿真开发软件的程序调试基本方法和技巧大同小异,掌 握正确的程序调试基本技巧。对于排查这些程序...
  • keil 51 单片机C语言串口发送和接收程序 STC-ISP// 9600 N 8 1 keil 51 单片机C语言串口发送和接收程序 STC-ISP// 9600 N 8 1
  • 基于单片机的交通灯keil仿真程序和protues硬件仿真完美的软硬件结合,需要keilc51和protues两个软件方可运行
  • STM32单片机Keil5下仿真 DUG却出现*** error 65: access violation at 0x40021000 : no ‘read’ permission. Options for target -> Debug 选择 [User simulator] Dialog DLL默认是DCM3.DLL Parameter...
  • 这是一个用单片机仿真的电子钢琴程序,对单片机初学者来说是一个很不错的列子,文件包括protel仿真keil写的汇编代码。相当好用奥。
  • 我们有时在KEIL中新建工程时需要添加STC系列单片机,但就是找不到。 这是因为你安转的Keil软件中没有STC的数据库,所以需要你手动添加。这就需要在STC-ISP软件(这个软件可以在STC网http://www.stcisp.com下载或者...
  • 1.设计要求1.设计要求2.程序设计mdk中源程序:3.硬件设计 1.设计要求 报警灯需要闪烁,因此设计程序时,将相应引脚每次取反后,延时一定的闪烁时间;报警声是让另一引脚有规律地产生脉冲,该脉冲驱动麦克风发出声音...
  • 从最简单的调剂步骤到调试的高级技巧 pdf无码高清版。 共五部分 有图有真相
  • 基于Proteus与keil联合仿真的51单片机(流水灯),流水灯又称跑马灯,可使用循环移位指令实现。使用汇编指令编写程序时,需使用RL A指令,其程序流程图如图4-15所示。使用C语言编写程序时,需使用j=j指令,且将移位...
  • STM32 KEIL 仿真设置

    2020-02-20 12:24:34
    具体解决方法: 在Debug选项卡将Simulation中的Dialog.dll设置为DARMSTM.DLL ...再将Parameter设置为你的单片机型号,例如我的是-pSTM32F103VE DARMSTM.DLL和SARMCM3.DLL都可以在keil\ARM\BIN中找到! ...
1 2 3 4 5 ... 20
收藏数 4,280
精华内容 1,712