•  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”



    展开全文
  • 一份简单易懂的单片机keil仿真软件教程PDF,图文并茂,好懂
  • (学习笔记) 出现电压抖动无法解决,...单片机的带负载能力不足以驱动数码管,因此需要锁存器进行驱动。 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。
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 首先在这里下载keil5的c51单片机版(keil5分为keil-arm版本(MDK),keil-c51版本)http://pan.baidu.com/s/1skMv2Nz密码:9env, 参考了https://blog.csdn.net/feit2417/article/details/80890218 然后安装,跟...

    首先在这里下载keil5的c51单片机版(keil5分为keil-arm版本(MDK),keil-c51版本)http://pan.baidu.com/s/1skMv2Nz 密码:9env,

    参考了https://blog.csdn.net/feit2417/article/details/80890218

    然后安装,跟电脑上已经存在的keil装不同路径,然后发送自己的快捷方式到桌面即可(我感觉电脑会认为所有的keil5都是同一个软件,默认只生成一个快捷方式,所以我们得自己单独发送快捷方式到桌面)

    破解过程,自己百度吧,太简单,都是一样的方法

    这时候打开这个keil-c51已经可以打开而且编译51单片机的工程了,我的是stc8,而且可以成功生成hex文件,用isp软件下载进去运行完全正常

    那么如何在线调试呢,首先要在isp软件里面添加仿真文件到keil-c51安装根目录路径,D:\Keil_v5_51\C51\INC\STC也就是出现了STC这个文件夹,里面装的是一些编写程序和调试用的头文件罢了,然后把里面的stc8.h文件复制到INC里面即可

    再在keil-c51的魔术棒配置里,设置debug选项,刚刚添加了仿真文件,这时候就能找到stc-monitor调试器了,然后串口号设置正确,运行到main函数,点击确定,设置完成从,现在返回主界面,可以点击那个调试红色按钮进行单步调试了

     

    这样确实可以了,但是经常自己的测试,网上搜索大量回答,和群里的一个人的测试,都是keil-c51版本自动补全功能那儿无法设置,左边是空的,但是keil-arm的版本打开stm32工程缺没这个问题,打开51单片机工程呢,又会出现这个问题。

    所以总结来看keil5-c51和keil-arm都是不支持51单片机工程的自动补全和实时与法检测的,这样来看开发51单片机程序用keil5开发还是keil4开发都是一样的,因为核心功能代码补全和语法实时检测都没有,仅仅是有keil5的一些换行等等其他小优点罢了。

    所以还是用stm32单片机吧,虽然库和初始文件很复杂,但是这些都只是很少用和执行一次罢了,主要是写代码时候节省力气很多,而且调试速度也更快,各种同步的pdf教程也很多很多,还有比如定时器配置,直接有库函数设置时间即可,也不用自己去算是多少十六进制,然后还得往那个具体的几个寄存器填进去,记不住和繁琐。

    展开全文
  • keil的设置如下图 其他型号的芯片没成功过,STM32F103ZF可以改成自己使用的额片子的型号例如STM32F103VE等。 仿真运行效果如下:

    keil的设置如下图

    其他型号的芯片没成功过,STM32F103ZF可以改成自己使用的额片子的型号例如STM32F103VE等。

    仿真运行效果如下:

     

    展开全文
  • 这是一个用单片机仿真的电子钢琴程序,对单片机初学者来说是一个很不错的列子,文件包括protel仿真keil写的汇编代码。相当好用奥。
  • 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仿真语句运行时间运算 1.在keil下仿真,我们打开工程设置对话框,在target 的标签下,Xtal(MHZ),改为11.0592;(已51单片机为例) 2.打开仿真 先看一下此刻sec所对应的的数字记录下 然后点击要你...
  • 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软件仿真与调试技巧,单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措。实际上.各种仿真开发软件的程序调试基本方法和技巧大同小异,掌 握正确的程序调试基本技巧。对于排查这些程序...
  • 注:本文主要介绍利用protues和keil软件联合仿真51单片机进行的跑马灯实例。 软件:Proteus 8 Professional 和 Keil uVision4(目前keil分为ARM的和51的,下载该软件要分清) 过程: 1. keil编写源代码 1.1 ...
  • Keil串口仿真调试

    2015-08-29 10:08:48
    ★用到的软件 ●Keil开发ruan
  • 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...
  • KEIL仿真晶振设置

    2019-07-29 20:26:25
    在Target上面右击选择option,出现如下界面 转载于:https://www.cnblogs.com/yuesheng/archive/2011/06/25/2090370.html
  • 我们有时在KEIL中新建工程时需要添加STC系列单片机,但就是找不到。 这是因为你安转的Keil软件中没有STC的数据库,所以需要你手动添加。这就需要在STC-ISP软件(这个软件可以在STC网http://www.stcisp.com下载或者...
  • 1.设计要求1.设计要求2.程序设计mdk中源程序:3.硬件设计 1.设计要求 报警灯需要闪烁,因此设计程序时,将相应引脚每次取反后,延时一定的闪烁时间;报警声是让另一引脚有规律地产生脉冲,该脉冲驱动麦克风发出声音...
1 2 3 4 5 ... 20
收藏数 4,290
精华内容 1,716