当前位置:首页 > keil
  • 单片机编程软件很简单(24),keil单片机编程软件仿真、调试技巧+常见错误

    单片机编程软件的使用极为频繁,但在单片机编程软件使用过程中,很多朋友往往会遇到一些问题。为帮助大家更好使用单片机编程软件,本文将对keil单片机编程软件仿真、调剂技巧予以讲解,并对该单片机编程软件的常见错误提示予以阐述。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 一、Keil单片机编程软件仿真与调试 (一)引言 单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措。实际上。各种仿真开发软件的程序调试基本方法和技巧大同小异,掌握正确的程序调试基本技巧。对于排查这些程序错误问题可以起到举一反三、事半功倍的效果。软件调试是单片机技术人员必须掌握的重要基本技能。 下面以单片机常用开发软件Keil为例,通过一个项目任务实例来介绍单片机软件仿真与调试的方法。 (二)Keil仿真与调试 点击运行软件Keil uVision2.其调试操作步骤大体可以分为5步: 1.创建工程 在项目开发中,并不是仅有一个用户源程序就够了,还要为这个项目选择CPU型号、设置编译和调试参数。有一些项目还会有多个文件组成。因此将这些参数设置和所需要的所有文件统称为一个工程,存放于专门的工程文件夹下。这里先建立一个工程文件夹如F:\exam. ①创建新工程。鼠标左键单击主菜单Project一>New Project.弹出。Create New Project"对话框,用鼠标选择你要保存工程的文件夹(如FAexam),输入新工程名(如"exam")。单击"保存"按键。 ②在随后弹出的CPU型号设置对话框中选择单片机的型号(如"AT89C51"),单击"确定"完成。 2.建立源程序文件并加入工程 ①鼠标左键单击菜单。File一>New新建文件。 弹出下图窗口。自动进入编辑工作模式。 ②在文本窗口中输入和编辑用户的源程序。 【项目任务】设计一种花样彩灯程序,实现单片机P1口驱动相连的8个发光二极管依次循环点亮。 ③单击菜单。File一>Save as.弹出文件保存对话框,选择工程文件夹("F:\exam")。输入源程序文件名(如"exam.asm"),点击"保存"按钮。 注意汇编源程序的扩展名必须为asrn,C51源程序扩展名必须为*.C. ④将源程序加入工程。用鼠标点击图标"Target1"前的"+"号,展开后右键单击Source Group弹出快捷菜单,点击"Add File to Group'SourceGroup 1"项弹出源程序加入工程对话框。选择刚保存的用户源程序exam.asm,点击ADD按钮加入工程,点击Close关闭对话框。 二、Keil uVision常见错误提示 · R202: LICENSE TIMEOUT 计算机的时间失效。检查电脑的时间,并确定时钟是正常的。 · R206: NO REGISTRY ACCESS, ADMINISTRATION RIGHTS REQUIRED 没有计算机注册表的访问权限。请使用管理员权限登录计算机,或者更改当前用户的权限到管理员权限。 · R208: RENEW LICENSE ID CODE (LIC) 在软件注册的过程中,电脑的一些参数被更改了。请确保使用了同样的网络配置,并且在使用许可证管理对话框添加LIC之前,不要更换网络适配器,或者网络适配器的参数。 · R214: A FLOATING USER HAS INCORRECT COMPUTER TIME 使用浮动许可证计算机中有一台的时间不可用,查看当前使用计算机的时钟设置。浮动许可证的使用者时间误差必须在± 10min内。该错误肯能导致许可证中断使用3小时。 · R217: NO FLF FILENAME IN TOOLS.INI 系统中指向浮动许可证文件(*.FLF)文件的路径已经遗失。一般情况下,是由于\KEIL\TOOLS.INI文件被修改引起的。也有可能是用户试图用浮动PSN来获取单机许可证引起的。不管是什么原因,需要在该计算机上从新安装浮动许可证。 · R218: CHECKOUT DATE CANNOT BE BEFORE TODAY Check Out 时间必须是60天以内。不能在今天之前或者60天之后 Check Out。 · R220: INSUFFICIENT ACCESS RIGHTS TO FLOATING LICENSE FILE (*.FLF) 没有足够的权限访问浮动许可证文件(*.FLF),请联系浮动许可证管理员,确保你有FLF文件读/写/修改权限。 · R223: CHECKIN REJECTED: LICENSE NOT IN USE 计算机并没有使用license,所以无法 Check In。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对keil单片机编程软件的仿真和调试技巧以及keil单片机软件中的常见错误代码具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-09-21 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(23),keil单片机编程软件调试stm32

    单片机编程软件的使用意义较强,不论是工作还是学习,单片机编程软件都是常被使用的软件之一。本文对于单片机编程软件的介绍将基于如何采用keil单片机编程软件调试stm32,如果你对单片机编程软件抑或本文内容具有兴趣,不妨继续往下阅读哦。 1. 程序在RAM中运行 要点:(1)程序的下载地址改到RAM空间中 (2)程序的debug之前要设定SP,PC指针到Ram空间 新建工程,选择STM32 的具体型号,我买的万利的开发板,选择stm32f103Vb。 设定程序下载地址,如下图所示,IROM1的地址指向了STM32的ram空间。 空间大小如何分配取决于自己的需求。本款处理器内部ram大小为20K,分配16K给只读区,4K给可读可写区。这样IROM设定的大小为0x4000,IRAM1的起始就变为0X20004000,大小只剩下0X1000。 Debug标签选择ULINK1 Cortex Debugger(软件采用yjgyiysbCC兄crack方法)。不选Load ApplICaTIon at Start,在IniTIalizaTIon中加入启动脚本RAM.ini。 RAM.ini中具体内容如下: FUNC void Setup (void) { SP = _RDWORD(0x20000000); // Setup Stack Pointer PC = _RDWORD(0x20000004); // Setup Program Counter _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register } LOAD XXX.axf INCREMENTAL // Download,红色代表工程文件名.axf Setup(); // Setup for Running g, main UTIlities下Update Target before Debugging不选 这样添加后就可以在RAM中调试了。 >>>>>>我们需要在代码中设置正确的中断向量表位置。中断向量表通常被放置在用户程序的开始,所以flash中运行时,向量表位于0x08000000处,而当代码被放置在SRAM中运行时,他的位置就成了0x20000000。在初始化NVIC时,我们可以放置如下代码,定义向量表的位置 NVIC_SetVectorTable(0x20000000 , 0x0); 或 NVIC_SetVectorTable(0x08000000 , 0x0); 或 >>>>>工程选项中Debug项,Download选项卡中,去掉所有钩子,不下载代码到flash,这样就可以在RAM中调试程序了! 2. Flash中调试 新建工程后系统默认设定好IROM1为FLASH的地址和空间大小。只需要两步: 1) 设定调试工具为ULINK1 CORTEX DEBUGGER,如下图所示,不需要设定起始脚本。 2) 在Utility中设定选择ULINK1 cortex debugger,并设定编程算法。如下图所示。 之后就可以FLASH调试了。 硬件:万利的 EK-STM32F开发板,硬件去掉RS3,RS4 排阻,断开开发板本身的仿真器。 软件:KEILMDK3.20+ULINK驱动替换文件。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对如何采用keil单片机调试stm32具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-09-21 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析

    单片机编程软件是单片机使用过程中不可缺少的一环,因此对于单片机编程软件,相关人员应当具备一定了解。往期文章中,小编对单片机编程软件有过诸多介绍。本文对于单片机编程软件的介绍基于两点:1.keil单片机编程软件编译环境优化等级说明,2.keil单片机编程软件中两大概念名词解析。如果你对单片机编程软件具有一定兴趣,不妨继续往下阅读哦。 一、KEIL编译环境优化等级 优化级别说明(仅供参考): Keil软件中的 Code Optimization 栏就是用来设置C51的优化级别。共有9个优化级别(书上这么写的),高优化级别中包含了前面所有的优化级别。现将各个级别说明如下: 0级优化: 1、常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算。 2、简单访问优化:对8051系统的内部数据和位地址进行访问优化。 3、跳转优化:编译器总是将跳转延至最终目标上,因此跳转到跳转之间的命令被删除。 1级优化: 1、死码消除:无用的代码段被消除。 2、跳转否决:根据一个测试回溯,条件跳转被仔细检查,以决定是否能够简化或删除。 2级优化: 1、数据覆盖:适于静态覆盖的数据和位段被鉴别并标记出来。连接定位器BL51通过对全局数据流的分析,选择可静态覆盖的段。 3级优化: 1、“窥孔”优化:将冗余的MOV命令去掉,包括不必要的从存储器装入对象及装入常数的操作。另外如果能节省存储空间或者程序执行时间,复杂操作将由简单操作所代替。 4级优化: 1、寄存器变量:使自动变量和函数参数尽可能位于工作寄存器中,只要有可能,将不为这些变量保留数据存储器空间。 2、扩展访问优化:来自IDATA、XDATA、PDATA和CODE区域的变量直接包含在操作之中,因此大多数时候没有必要将其装入中间寄存器。 3、局部公共子式消除:如果表达式中有一个重复执行的计算,第一次计算的结果被保存,只要有可能,将被用作后续的计算,因此可从代码中消除繁杂的计算。 4、CASE/SWITCH语句优化:将CASE/SWITCH语句作为跳转表或跳转串优化。 5级优化: 1、全局公共子式消除:只要有可能,函数内部相同的子表达式只计算一次。中间结果存入一个寄存器以代替新的计算。 2、简单循环优化:以常量占据一段内存的循环再运行时被优化。 6级优化: 1、回路循环:如果程序代码能更快更有效地执行,程序回路将进行循环。 7级优化: 1、扩展入口优化:在适合时对寄存器变量使用DPTR数据指针,指针和数组访问被优化以减小程序代码和提高执行速度。 8级优化: 1、公共尾部合并:对同一个函数有多处调用时,一些设置代码可被重复使用,从而减小程序代码长度。 9级优化: 1、公共子程序块:检测重复使用的指令序列,并将它们转换为子程序。C51甚至会重新安排代码以获得更多的重复使用指令序列。 当然,优化级别并非越高越好,应该根据具体要求适当选择。 二、KEIL软件概念名词解析 1. uVision uVision是KEIL公司开发的一个集成开发环境(IDE),和Eclipse类似。它包括工程管理,源代码编辑,编译设uVision置,下载调试和模拟仿真等功能,uVision有uVision2、uVision3、uVision4、uVision5四个版本,目前最新的版本是uVision5。它提供一个环境,让开发者易于操作,并不提供能具体的编译和下载功能,需要软件开发者添加。uVisionu通用于KEIL的开发工具中,例如MDK,PK51,PK166,DK251等。 2. MDK MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具,为满足基于MCU进行嵌入式软件开发的工程师需求而设计,支持ARM7,ARM9,Cortex-M4/M3/M1,Cortex-R0/R3/R4等ARM微控制器内核。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对keil单片机编程软件的编译环境优化等级以及uVision和MDK具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-09-21 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(21),keil单片机编程软件编程事项介绍

    单片机编程软件的使用为单片机的使用提供了便捷,对于单片机编程软件,小编在往期文章中有诸多介绍。为增加大家对单片机编程软件的了解,本文将对keil单片机编程软件予以介绍,主要在于介绍该单片机编程软件的模式设置和一些编程事项。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的,大致有以下8类: 8051存储类型及存储区域、存储模式、存储器类型声明、变量类型声明、位变量与位寻址、特殊功能寄存器(SFR)、C51指针。 一、Keil C51扩展关键字 C51 V4.0版本有以下扩展关键字(共19个): _at_ idata sfr16 alien interrupt small bdata large _task_ Code bit pdata using reentrant xdata compact sbit data sfr 二、内存区域(Memory Areas) 1. Pragram Area: 由Code说明可有多达64kBytes的程序存储器 2. Internal Data Memory: 内部数据存储器可用以下关键字说明: data:直接寻址区,为内部RAM的低128字节 00H~7FH idata:间接寻址区,包括整个内部RAM区 00H~FFH bdata:可位寻址区, 20H~2FH 3. External Data Memory 外部RAM视使用情况可由以下关键字标识: xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFH pdata:能访问1页(25bBytes)的外部RAM,主要用于紧凑模式(Compact Model)。 4. Speciac FuncTIon Register Memory 8051提供128Bytes的SFR寻址区,这区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、I/O及其它部件,可由以下几种关键字说明: sfr:字节寻址 比如 sfr P0=0x80;为PO口地址为80H,“=”后H~FFH之间的常数。 sfr16:字寻址,如sfr16 T2=0xcc;指定TImer2口地址T2L=0xcc T2H=0xCD sbit:位寻址,如sbit EA=0xAF;指定第0xAF位为EA,即中断允许 还可以有如下定义方法: sbit 0V=PSW^2;(定义0V为PSW的第2位) sbit 0V=0XDO^2;(同上) 或bit 0V-=0xD2(同上)。 三、存储模式 存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种: 1. Small模式 所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。 small模式下,再入函数的堆栈是设在idata中的 2. Compact模式 所有缺省变量均位于外部RAM区的一页(256Bytes),具体哪一页可由P2口指定,在STARTUP.A51文件中说明,也可用pdata指定,优点是空间较Small为宽裕速度较Small慢,较large要快,是一种中间状态。 compact模式下,再入函数堆栈是设在pdata中的 3. large模式 所有缺省变量可放在多达64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。 提示:存储模式在C51编译器选项中选择。 四、存储类型声明 变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:code,data,idata,xdata,pdata说明,例: data uar1 char code array[ ]=“hello!”; unsigned char xdata arr[10][4][4]; 五、变量或数据类型 C51提供以下几种扩展数据类型: bit 位变量值为0或1 sbit 从字节中定义的位变量 0或1 sfr sfr字节地址 0~255 sfr16 sfr字地址 0~65535 其余数据类型如:char,enum,short,int,long,float等与ANSI C相同。 六、位变量与声明 1. bit型变量 bit型变量可用变量类型,函数声明、函数返回值等,存贮于内部RAM20H~2FH。 注意: (1) 用#pragma dISAble说明函数和用“usign”指定的函数,不能返回bit值。 (2) 一个bit变量不能声明为指针,如bit *ptr;是错误的 (3) 不能有bit数组如:bit arr[5];错误。 2. 可位寻址区说明20H-2FH 可作如下定义: int bdata i; char bdata arr[3], 然后: sbit bito=in0;sbit bit15=I^15; sbit arr07=arr[0]^7;sbit arr15=arr[i]^7; 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对介绍的知识点具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-08-14 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(20),快速学会keil单片机编程软件

    单片机编程软件常被使用,不论是大学生还是工作者对单片机编程软件都有了解。但是,单片机编程软件入门新手在使用方面往往存在一定困惑。为帮助大家更快学会单片机编程软件的使用,本文将对keil单片机编程软件的使用方法加以介绍。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,小编特地制作了一个相对简单的教程。它能嵌入汇编语言保留了汇编代码高效,快速的特点。KEIL C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。 下面介绍Keil C51软件的使用方法。 进入 Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界面 启动Keil C51时的屏幕 进入Keil C51后的编辑界面 简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。 1)建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项 2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存。 3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定。 4)完成上一步骤后,屏幕如下图所示 到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。 5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项 新建文件后屏幕如下图所示 此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。 6)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单 然后单击“Add File to Group ‘Source Group 1’” 屏幕如下图所示 选中Test.c,然后单击“Add ”屏幕好下图所示 注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同 7)现在,请输入如下的C语言源程序: #include 《reg52.h》 //包含文件 #include 《stdio.h》 void main(void) { SCON=0x52;   TMOD=0x20;   TH1=0xf3;   TR1=1;   //此行及以上3行为PRINTF函数所必须 printf(“Hello I am KEIL. \n”);   //打印程序执行的信息 printf(“I will be your friend.\n”); while(1); } 在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示 8)在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如下所示 9)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以看到程序运行后的结果,其结果如下图所示 至此,我们在Keil C51上做了一个完整工程的全过程。但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢? 10)单击“Project”菜单,再在下拉菜单中单击 在下图中,单击“Output”中单击“Create HEX File” 选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89S51单片机中。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对keil单片机编程软件的使用方法具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-08-14 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(19),keil单片机编程软件3点介绍

    单片机编程软件的使用尤为必要,每一款单片机编程软件都有各自特色。大家在选用单片机编程软件时,可依据自身情况而定。本文对单片机编程软件的介绍基于Keil,主要在于介绍keil单片机编程软件如何将hex下载进STM32,如何烧写hex文件以及如何直接使用二进制数。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 一、使用Keil下载Hex文件进STM32 初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载,这也是一种不错的方法,这里我要介绍的是使用JLink调试器和Keil MDK-ARM来下载Hex文件,无需源代码,只需要一个调试器。 所需要的工具和软件 Hex文件,如Demo_STM32.hex Keil软件,v4或v5版本,如Keil v5.16a ARM调试器,Jlink或ST-Link,如Jlink v9 STM32开发板,如STM32F103RET6 1.准备一个完整的工程 准备一个完整的工程,注意,这个工程的芯片型号、开发板的芯片型号、Hex文件对应的芯片型号,这三者的芯片型号要保持一致,否则会出现不能正确运行的问题。如都是STM32F103RET6。 2.确定Jlink已经检测到芯片 如图,先选择调试器类型,然后点击 Setting,如果连接上芯片,会在右侧显示芯片的ID号。 3.确定这个工程的Hex文件的输出路径 打开工程配置界面中的,Output选项,可以看出我这个工程输出文件存放的路径是在OBJ目录下,名称是NiceDay 打开OBJ目录可以看到这个工程生成的hex文件名称为NiceDay.hex 4.把要下载的Hex文件放到OBJ目录下 5.把Output界面的NiceDay改为Demo_STM32.hex 注意末尾的扩展名.hex不要少。 6.不要编译工程,直接点击下载按钮。 在输出窗口可以看到下载完成: 如果程序没有运行,可以在下载界面查看是否勾选了下载完成后复位运行。 二、烧写hex文件 开发单片机的第一步就是用Keil软件编写汇编程序,并形成最终的“*.hex”目标文件,然后用编程器将该文件烧写到单片机中就行了,最后将烧写好的单片机插到电路板上,一接通电源就可以工作了。 1、将hex文件转成elf文件,方法要自行先搜索一下。 2、新建一个工程,选好CPU,不要添加启动代码。 3、把生成的hex文件或elf文件复制到新工程的目录下。 4、在工程的opTIons-》Output选项里,把Name of Executable:设成您的hex文件名。 5、设置好opTIons-》UTIliTIes的选项。 5、直接点Load就行了。 三、Keil C51使用二进制数 在Keil C51中数不能直接以二进制形式赋值,虽然在8051的汇编中是可以的。二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。于是很多人怀念了8051的汇编,很想在C51中使用二进制。没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。 方法一: 建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义:binary(右键>>“目标另存为”>>下载)。 方法二: 做一个带参数宏定义,将输入的类二进制数变换为对应的16进制数,整个定义和使用实例请见下文,可以直接使用,如果想研究原理又看不懂带参宏定义的朋友们请参考谭浩强的《C程序设计》预处理命令一章内容(第三版在P204-P211)。 #define LongToBin(n) \ (\ ((n >> 21) & 0x80) | \ ((n >> 18) & 0x40) | \ ((n >> 15) & 0x20) | \ ((n >> 12) & 0x10) | \ ((n >> 9) & 0x08) | \ ((n >> 6) & 0x04) | \ ((n >> 3) & 0x02) | \ ((n ) & 0x01) \ ) #define Bin(n) LongToBin(0x##n##l) void main(void) { unisigned char c; c = Bin(10101001); //相当于c = 0xA9 } 上面预处理指令中使用了反斜杠\,这里解释一下:每一条预处理语句总是以"#"字符开始,并且不能超过一行,一旦遇到换行符语句就被当做结束,唯一的一种能将预处理语句扩展到多行的办法就是在换行符之前加一个反斜杠('\')。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对上述介绍的小知识具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-08-14 关键词: 单片机编程软件 指数 keil

  • 提高keil串口的调试效率的方法

    做项目要用到单片机的串口的地方的时候,要是有一个有效的提高串口调试的效率调试方案的话,会大大的缩短开发的时间的哦。 运行keil Debug 在命令行加下两句: MODECOM19600,0,8,1 //根据实际情况设置波特率 ASSIGNCOM1SOUT //.......... 然后打开一个串口调试软件,对应串口COM1,9600,0.就可以看到结果了 modecom19600,0,8,1//无校验位,8位数据位,1个停止位 assigncom1sout//意思就是uVision把模拟的单片机串口对应到Serialwindow 和#1上(在serialwindow里输入字符,就是模拟对单片机串口输入数据) modecom19600 assigncom1sout 因为用的本本没有串口,也没法去试试,有空找个台式的试一把哦!o(∩_∩)o...! 1 调试前的准备工作 下面介绍一种利用的功能来实现51单片机用户程序的方法。使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。所需的只是: ① 硬件。1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线时RXD、TXD要相互交叉)。 ② 串口软件可以是自己编写的专用调试或上下位机通信软件,也可以是通用的串口软件(如串口助手、串口调试等)。 2 基本调试命令介绍 这个串口调试方法主要是利用了Keil强大的软件仿真功能。在新版本(高于6.0)的Keil软件中,增强了软件的仿真能力,可以利用软件仿真更多的单片机功能。在这些功能中,其中有一个很重要的功能就是利用计算机的串口来模拟单片机的串口(这不同于很多软件在仿真时使用的激励文件方式,可以直接与其他串口进行通信,更加方便、灵活)。首先要介绍仿真时需要使用的两个命令:ASSIGN和MODE。 2.1 ASSIGN命令 将单片机的串口绑定到计算机的串口。基本使用方式为: ASSIGN channeloutreg 其中: channel代表计算机的串口,可以是COM1、COM2、COM3或COM4;而inreg和outreg代表单片机的串口。对于只有一个串口的普通单片机,即SIN和SOUT;对于有两个或者多个串口的单片机,即SnIN和SnOUT(n=0,1,…即单片机的串口号)。 图1 串口连线示意图 例如: ASSIGN COM1SOUT 将计算机的串口1绑定到单片机的串口(针对只有一个串口的单片机)。 ASSIGN COM2S0OUT 将计算机的串口2绑定到单片机的串口0(针对有多个串口的单片机,注意串口号的位置)。 需要注意的是,参数的括号是不能省略的,而outreg则是没有括号的。 2.2 MODE命令 设置被绑定计算机串口的参数。基本使用方式为: MODE COMx baudrate, parity, databits, stopbits 其中: COMx(x = 1,2,…)代表计算机的串口号;baudrate代表串口的波特率;parity代表校验方式;databits代表数据位长度;stopbits代表停止位长度。 例如: MODE COM1 9600, n, 8, 1 设置串口1。波特率为9 600,无校验位,8位数据,1位停止位。 MODE COM2 19200, 1, 8, 1 设置串口2。波特率为19 200,奇校验,8位数据,1位停止位。 使用以上两个命令,就能够将计算机的串口模拟成单片机的串口了。在进行时,所有发送到被绑定的计算机串口上的数据都会转发到模拟的单片机串口上,用户程序可以通过中断处理程序或查询方式接收到这些数据;同样,单片机程序中发送到单片机串口上的数据也会通过被绑定的计算机串口发送出来,可以被其他软件所接收。利用这个特点,就可以方便地仿真、调试单片机的串口部分程序。要注意的是,这两个命令需要一起使用。 2.3 仿真步骤 首先,用串口线将计算机的两个串口连接起来(或者是两台计算机上的两个串口)。这两个串口一个用来模拟单片机串口,另一个给调试程序使用。这个由用户自己分配,没有特殊要求。 其次,编写好用户程序,并编译通过。 然后,设置工程文件(Project)的相关参数,如图2和图3所示。主要是选择软件仿真模式(Use Simulator)以及晶振参数。 图2 仿真参数设置 为了不必每次进入仿真状态后,都需要输入串口参数设置命令,可以建立一个初始化文件。初始化文件是一个普通的文本文件,内容就是仿真时需要的命令,按照顺序一行输入一条。如图2所示,建立了一个debug.ini的初始化文件。这样,当每次进入仿真调试状态时,Keil就会自动载入 debug.ini的内容进行初始化。 图3 晶振参数设置 为了正确仿真串口,在软件仿真调试时,在用户的Keil工程文件的属性中,还需要设置实际使用的晶振频率。这个参数非常重要,直接影响通信的波特率,可以按照实际使用的参数进行设置。要注意,这个参数的单位是MHz。 设置好参数后,就可以进行仿真了。单击工具栏的图标按此在新窗口浏览图片进入Debug(仿真调试)状态,在Output window窗口中的command文本框(一般是在左下角)中输入上面介绍的命令。例如,将PC机的串口1设置为单片机的串口: mode com1 9600,0,8,1 assign com1Sout 然后设置断点,一般是在关键地方或与串口相关联的地方设置。再单击图标运行(Run)用户程序,使用户程序运转起来(不然是接收不到串口数据的)。这时再使用软件或用户调试软件,发送通信命令或者数据包,看用户程序是否进入断点,以及相关的变量是否正确。还可以有意发送带有错误数据的数据包,以观察用户程序的异常处理部分是否正常。一旦发现程序中的错误,可以马上停止仿真调试,立即修改代码,然后再次重复上面的步骤进行仿真。因为不需要与用户目标板联机,也不用下载代码到用户板上,所以速度非常高。以上这些步骤和使用硬件仿真器的基本一样,只不过现在使用的是软件仿真。 需要注意的是:仿真时单片机串口实际的波特率由MODE命令来指定,单片机程序中的TMOD、SCON等参数是不影响串口仿真状态的(也就是说这些参数不影响仿真的波特率,即使它们是错误的)。但是中断的使能位(如ES、EA等)还是起作用的,如果ES或EA被禁止,那么就不会进入串口中断。 因为这种方法是利用计算机的串口来仿真单片机的串口,而仿真是通过Keil软件来转换串口上的数据,不是直接转发数据的,所以在实际仿真时,处理速度会比实际单片机运行时稍微低一点。比方说仿真状态时1 s只能发送/接收10个数据帧,但在单片机硬件上运行时可能1 s就可以接收/发送50个数据帧。这与使用的计算机的速度有关,但对仿真来说,是没有任何影响的。 对于多串口的单片机,从理论上来说,可以一次绑定多个串口,只要计算机有足够多的串口。基本上,使用这种方法需要占用计算机的串口数量是单片机绑定串口的2倍。一个串口被Keil占用,用来模拟单片机的串口;另外一个串口被计算机占用,用来给单片机的串口收发数据。 3 小结 这里介绍的方法对C51和汇编语言都是适合的。它最大的好处就是简单、方便,容易使用,不需要使用任何电路,也没有特殊的要求;甚至可以在硬件电路制作好之前就将串口部分的程序编写、调试完毕。笔者使用这种方法已经很长时间了,事实证明这种方法确实非常有效。其实对于51单片机,Keil的仿真功能实在是太强大了,只要充分掌握其特点,能够熟练利用它,就可以解决工作中的大部分问题。很多工作都可以使用软件仿真来完成,根本无需任何硬件仿真器;只有一些新的外部器件的时序、接口的调试才有可能需要用到硬件仿真器。目前介绍Keil软件仿真这方面的参考书籍很少,有些讲的还是老版本的用法,不过没有关系,Keil的帮助文件写得很详细、很清楚,只要认真看明白就会使用了。使用熟练后

    时间:2020-07-17 关键词: 串口 keil

  • 单片机编程软件很简单(18),Keil单片机编程软件对ANSIC的扩展学习

    单片机编程软件对于大家并不陌生,想必大家对于IAR单片机编程软件、Keil单片机编程软件等均有所了解。为增进大家对单片机编程软件的认识,本文将对Keil单片机编程软件相关内容予以介绍,主要为Keil C51对标准ANSIC的扩展的学习。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 深入理解并应用Keil C51对标准ANSIC的扩展是学习Keil C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8类: 1. 8051存储类型及存储区域 2. 存储模式 3. 存储器类型声明 4. 变量类型声明 5. 位变量与位寻址 6. 特殊功能寄存器(SFR) 7. Keil C51指针 8. 函数属性 具体说明如下(8031为缺省CPU)。 一、Keil C51扩展关键字 C51 V4.0版本有以下扩展关键字(共19个): _at_ idata sfr16 alien interrupt small bdata large _task_ Code bit pdata using reentrant xdata compact sbit data sfr 二、内存区域(Memory Areas): 1. Pragram Area: 由Code说明可有多达64kBytes的程序存储器 2. Internal Data Memory: 内部数据存储器可用以下关键字说明: data:直接寻址区,为内部RAM的低128字节 00H~7FH idata:间接寻址区,包括整个内部RAM区 00H~FFH bdata:可位寻址区, 20H~2FH 3. External Data Memory 外部RAM视使用情况可由以下关键字标识: xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFH pdata:能访问1页(25bBytes)的外部RAM,主要用于紧凑模式(Compact Model)。 4. Speciac FuncTIon Register Memory 8051提供128Bytes的SFR寻址区,这区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、I/O及其它部件,可由以下几种关键字说明: sfr:字节寻址 比如 sfr P0=0x80;为PO口地址为80H,“=”后H~FFH之间的常数。 sfr16:字寻址,如sfr16 T2=0xcc;指定TImer2口地址T2L=0xcc T2H=0xCD sbit:位寻址,如sbit EA=0xAF;指定第0xAF位为EA,即中断允许 还可以有如下定义方法: sbit 0V=PSW^2;(定义0V为PSW的第2位) sbit 0V=0XDO^2;(同上) 或bit 0V-=0xD2(同上)。 三、存储模式 存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种: 1. Small模式 所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。 2. Compact模式 所有缺省变量均位于外部RAM区的一页(256Bytes),具体哪一页可由P2口指定,在STARTUP.A51文件中说明,也可用pdata指定,优点是空间较Small为宽裕速度较Small慢,较large要快,是一种中间状态。 3. large模式 所有缺省变量可放在多达64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。 提示:存储模式在C51编译器选项中选择。 四、存储类型声明 变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:code,data,idata,xdata,pdata说明,例: data uar1 char code array[ ]=“hello!”; unsigned char xdata arr[10][4][4]; 五、变量或数据类型 C51提供以下几种扩展数据类型: bit 位变量值为0或1 sbit 从字节中定义的位变量 0或1 sfr sfr字节地址 0~255 sfr16 sfr字地址 0~65535 其余数据类型如:char,enum,short,int,long,float等与ANSI C相同。 六、位变量与声明 1. bit型变量 bit型变量可用变量类型,函数声明、函数返回值等,存贮于内部RAM20H~2FH。 注意: (1) 用#pragma dISAble说明函数和用“usign”指定的函数,不能返回bit值。 (2) 一个bit变量不能声明为指针,如bit *ptr;是错误的 (3) 不能有bit数组如:bit arr[5];错误。 2. 可位寻址区说明20H-2FH 可作如下定义: int bdata i; char bdata arr[3], 然后: sbit bito=in0;sbit bit15=I^15; sbit arr07=arr[0]^7;sbit arr15=arr[i]^7; 七、Keil C51指针 C51支持一般指针(Generic Pointer)和存储器指针(Memory_Specific Pointer). 1. 一般指针 一般指针的声明和使用均与标准C相同,不过同时还可以说明指针的存储类型,例如: long * state;为一个指向long型整数的指针,而state本身则依存储模式存放。 char * xdata ptr;ptr为一个指向char数据的指针,而ptr本身放于外部RAM区,以上的long,char等指针指向的数据可存放于任何存储器中。 一般指针本身用3个字节存放,分别为存储器类型,高位偏移,低位偏移量。 2. 存储器指针 基于存储器的指针说明时即指定了存贮类型,例如: char data * str;str指向data区中char型数据 int xdata * pow; pow指向外部RAM的int型整数。 这种指针存放时,只需一个字节或2个字节就够了,因为只需存放偏移量。 3. 指针转换 即指针在上两种类型之间转化: · 当基于存储器的指针作为一个实参传递给需要一般指针的函数时,指针自动转化。 · 如果不说明外部函数原形,基于存储器的指针自动转化为一般指针,导致错误,因而请用“#include”说明所有函数原形。 · 可以强行改变指针类型。 八、Keil C51函数 C51函数声明对ANSI C作了扩展,具体包括: 1. 中断函数声明: 中断声明方法如下: void serial_ISR () interrupt 4 [using 1] { /* ISR */ } 为提高代码的容错能力,在没用到的中断入口处生成iret语句,定义没用到的中断。 /* define not used interrupt, so generate IRET in their entrance */ void extern0_ISR() interrupt 0{} /* not used */ void TImer0_ISR () interrupt 1{} /* not used */ void extern1_ISR() interrupt 2{} /* not used */ void TImer1_ISR () interrupt 3{} /* not used */ void serial_ISR () interrupt 4{} /* not used */ 2. 通用存储工作区 3. 选通用存储工作区由using x声明,见上例。 4. 指定存储模式 由small compact 及large说明,例如: void fun1(void) small { } 提示:small说明的函数内部变量全部使用内部RAM。关键的经常性的耗时的地方可以这样声明,以提高运行速度。 5. #pragma dISAble 在函数前声明,只对一个函数有效。该函数调用过程中将不可被中断。 6. 递归或可重入函数指定 在主程序和中断中都可调用的函数,容易产生问题。因为51和PC不同,PC使用堆栈传递参数,且静态变量以外的内部变量都在堆栈中;而51一般使用寄存器传递参数,内部变量一般在RAM中,函数重入时会破坏上次调用的数据。可以用以下两址椒ń饩龊??厝耄?br />a、在相应的函数前使用前述“#pragma dISAble”声明,即只允许主程序或中断之一调用该函数; b、将该函数说明为可重入的。如下: void func(param...) reentrant; KeilC51编译后将生成一个可重入变量堆栈,然后就可以模拟通过堆栈传递变量的方法。 由于一般可重入函数由主程序和中断调用,所以通常中断使用与主程序不同的R寄存器组。 另外,对可重入函数,在相应的函数前面加上开关“#pragma noaregs”,以禁止编译器使用绝对寄存器寻址,可生成不依赖于寄存器组的代码。 7. 指定PL/M-51函数 由alien指定。 以上便是此次小编带来的“单片机编程软件”相关内容,希望大家对本文内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-06-29 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(17),Keil单片机编程软件之编译、链接

    单片机编程软件使用较多,诸多朋友大学期间便接触单片机编程软件。因此,大家对于单片机编程软件或多或少有所了解。本文中,将对Keil单片机编程软件加以介绍,主要在于介绍如何在这款单片机编程软件中进行项目设置以及如何进行编译、链接。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 一、工程的详细设置 工程建立好以后,还要对工程进行进一步的设置,以满足要求。 首先点击左边Project 窗口的Target 1,然后使用菜单“Project->OpTIon for target ‘target1’”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有8 个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了。设置对话框中的Target 页面,如图1所示,Xtal 后面的数值是晶振频率值,默认值是所选目标CPU 的最高可用频率值, 对于我们所选的AT89C51 而言是24M,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为12。 Memory Model 用于设置RAM 使用情况,有三个选择项,Small 是所有变量都在单片机的内部RAM 中;Compact 是可以使用一页外部扩展RAM,而Larget 则是可以使用全部外部的扩展RAM。Code Model 用于设置ROM 空间的使用,同样也有三个选择项,即Small模式,只用低于2K 的程序空间;Compact 模式,单个函数的代码量不能超过2K,整个程序可以使用64K 程序空间;Larget 模式,可用全部64K 空间。Use on-chip ROM 选择项,确认是否仅使用片内ROM(注意:选中该项并不会影响最终生成的目标代码量);OperaTIng 项是操作系统选择,Keil 提供了两种操作系统:Rtx TIny 和Rtx full,关于操作系统是另外一个很大的话题了,通常我们不使用任何操作系统,即使用该项的默认值:None(不使用任何操作系统);Off Chip Code memory 用以确定系统扩展ROM 的地址范围,Off Chip xData memory 组用于确定系统扩展RAM 的地址范围,这些选择项必须根据所用硬件来决定,由于该例是单片应用,未进行任何扩展,所以均不重新选择,按默认值设置。设置对话框中的OutPut 页面,如图2所示,这里面也有多个选择项,其中Creat Hex file 用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX 格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。选中Debug information 将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。Browse information 是产生浏览信息,该信息可以用菜单view->Browse 来查看,这里取默认值。按钮“ Select Folder for objects” 图1 对目标进行设置 图2 对输出进行控制 是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。Name of Executable 用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改。工程设置对话框中的其它各页面与C51 编译选项、A51 的汇编选项、BL51 连接器的连接选项等用法有关,这里均取默认值,不作任何修改。以下仅对一些有关页面中常用的选项作一个简单介绍。Listing 标签页用于调整生成的列表文件选项。在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是“C Compile Listing”下的“Assamble Code”项,选中该项可以在列表文件中生成C 语言源程序所对应的汇编代码。C51 标签页用于对Keil 的C51 编译器的编译过程进行控制,其中比较常用的是“Code Optimization”组,如图3所示,该组中Level 是优化等级,C51 在对源程序进行编译时,可以对代码多至9 级优化,默认使用第8 级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别试一试。Emphasis 是选择编译优先方式,第一项是代码量优化(最终生成的代码量小);第二项是速度优先(最终生成的代码速度快);第三项是缺省。默认的是速度优先,可根据需要更改。设置完成后按确认返回主界面,工程文件建立、设置完毕。 图3 代码生成控制 二、编译、链接 在设置好工程后,即可进行编译、链接。选择菜单Project->Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Translate … .项则仅对该文件进行编译,不进行连接。以上操作也可以通过工具栏按钮直接进行。编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。编译过程中的信息将出现在输出窗口中的Build 页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图4所示的结果,提示获得了名为exam1.hex 的文件,该文件即可被编程器读 入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil 的仿真与调试,这时可以进入下一步调试的工作。 图4 正确编译、连接之后的结果 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对Keil单片机编程软件如何编译、链接具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-06-29 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(16),Keil单片机编程软件建立工程项目

    单片机编程软件为单片机的使用提供便利,缺少单片机编程软件,单片机程序的编写将十分困难。对于单片机编程软件,小编在往期文章中有所介绍,如IAR单片机编程软件等。本文对于单片机编程软件的讲解将基于Keil,主要内容在于阐述如何建立Keil工程。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 一、 Keil简介 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51 单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。Keil 提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil 软件需要PenTIum 或以上的CPU,16MB或更多RAM、20M 以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51 系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 我们将通过一些实例来学习Keil 软件的使用,在这一部份我们将学习如何输入源程序,建立工程,图1 所示电路图使用89C51 单片机作为主芯片,这种单片机性属于MCS-51 系列,其内部有4K 的FLASH ROM, 可以反复擦写,非常适于做实验。89C51 的P1 引脚上接8 个发光二极管,P3.2~P3.4 引脚上接4 个按钮开关,我们的第一个任务是让接在P1 引脚上的发光二极管依次循环点亮。 二、Keil 工程的建立 首先启动Keil 软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision 的图标以启动该软件。 UVison启动后,程序窗口的左边有一个工程管理窗口,该窗口有3 个标签,分别是Files、Regs、和Books,这三个标签页分别显示当前项目的文件结构、CPU 的寄存器及部份特殊功能寄存器的值(调试时才出现)和所选CPU 的附加说明文件,如果是第一次启动Keil,那么这三个标签页全是空的。 1、源文件的建立 使用菜单“File->New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入以下汇编语言源程序,例1: MOV A,#0FEH MAIN: MOV P1,A RL A LCALL DELAY AJMP MAIN DELAY: MOV R7,#255 D1: MOV R6,#255 DJNZ R6,$ 图1 简单的键盘、显示板 DJNZ R7,D1 RET END 保存该文件,注意必须加上扩展名(汇编语言源程序一般用asm 或a51 为扩展名),这里假定将文件保存为exam1.asm。需要说明的是,源文件就是一般的文本文件,不一定使用Keil 软件编写,可以使用任意文本编缉器编写,而且,Keil 的编缉器对汉字的支持不好,建议使用UltraEdit 之类的编缉软件进行源程序的输入。 2、建立工程文件 在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择CPU(Keil 支持数百种CPU,而这些CPU 的特性并不完全相同),确定编译、汇编、连接的参数,指定调试的方式,有一些项目还会有多个文件组成等,为管理和使用方便,Keil 使用工程(Project)这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一 的源程序进行编译(汇编)和连接等操作,下面我们就一步一步地来建立工程。 点击“Project->New Project… ”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字(设为exam1),不需要扩展名。点击“保存”按钮,出现第二个对话框,如图2所示,这个对话框要求选择目标CPU(即你所用芯片的型号),Keil 支持的CPU很多,我们选择Atmel 公司的89C51 芯片。点击ATMEL 前面的“+”号,展开该层,点击其中的89C51,然后再点击“确定”按钮,回到主界面,此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“ Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Source Group1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图3 所示。选中其中的“Add file toGroup”Source Group1”,出现一个对话框,要求寻找源文件,注意,该对话框下面的“文件类型”默认为C source file(*.c),也就是以C 为扩展名的文件,而我们的文件是以asm 为扩展名的,所以在列表框中找不到exam1.asm,要将文件类型改掉,点击对话框中“文件类型”后的下拉列表,找到并选中“Asm Source File(*.a51,*.asm),这样,在列表框中就可以找到exam1.asm 文件了。 双击exam1.asm 文件,将文件加入项目,如 图2 选择目标CPU 图3 加入文件 注意,在文件加入项目后,该对话框并不消失,等待继续加入其它文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图4 所示的对话框,提示你所选文件已在列表中,此时应点击“确定”,返回前一对话框,然后点击“Close”即可返回主界面,返回后,点击“SourceGroup 1”前的加号,会发现exam1.asm 文件已在其中。双击文件名,即打开该源程序。 图4 重复加入文件的错误 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对如何建立Keil工程项目文件具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-06-29 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(14),Keil单片机编程软件断点设置

    单片机编程软件十分常用,对于单片机编程软件,小编于往期文章中做过诸多介绍。本文对于单片机编程软件的介绍基于Keil,主要内容在于介绍该单片机编程软件的在线汇编功能以及断点设置。如果你对Keil单片机编程软件抑或本文即将涉及的内容存在兴趣,都不妨继续往下阅读哦。 一、在线汇编 在进入Keil 的调试环境以后,如果发现程序有错,可以直接对源程序进行修改,但是要使修改后的代码起作用,必须先退出调试环境,重新进行编译、连接后再次进入调试,如果只是需要对某些程序行进行测试,或仅需对源程序进行临时的修改,这样的过程未免有些麻烦,为此Keil 软件提供了在线汇编的能力,将光标定位于需要修改的程序行上,用菜单Debug->Inline Assambly… 即可出现如图1 的对话框,在Enter New 后面的编缉框内直接输入需更改的程序语句,输入完后键入回车将自动指向下一条语句,可以继续修改,如果不再需要修改,可以点击右上角的关闭按钮关闭窗口。 二、断点设置 程序调试时,一些程序行必须满足一定的条件才能被执行到(如程序中某变量达到一定的值、按键被按下、串口接收到数据、有中断产生等),这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法——断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug->Insert/Remove BreakPoint 设置或移除断点(也可以用鼠标在该行双击实现同样的功能);Debug->Enable/Disable Breakpoint 是开启或暂停光标所在行的断点功能;Debug->Disable All Breakpoint 暂停所有断点;Debug->Kill All BreakPoint 清除所有的断点设置。这些功能也可以用工具条上的快捷按钮进行设置。除了在某程序行设置断点这一基本方法以外,Keil 软件还提供了多种设置断点的方法,按Debug->Breakpoints… 即出现一个对话框,该对话框用于对断点进行详细的设置,如图2所示。 图2中Expression 后的编缉框内用于输入表达式,该表达式用于确定程序停止运行的条件,这里表达式的定义功能非常强大,涉及到Keil 内置的一套调试语法,这里不作详细说明,仅举若干实例,希望读者可以举一反三。 1) 在Experssion 中键入a==0xf7,再点击Define 即定义了一个断点, 注意,a 后有两个等号,意即相等。该表达式的含义是:如果a 的值到达0xf7 则停止程序运行。 图1在线汇编窗口 图1 除使用相等符号之外,还可以使用>,>=,<,<=,!=(不等于),&(两值按位与),&&(两值相与)等运算符号。 2) 在Experssion 后中键入Delay 再点击Define,其含义是如果执行标号为Delay 的行则中断。 3) 在Experssion 后中键入Delay,按Count后的微调按钮,将值调到3,其意义是当第三次执行到Delay 时才停止程序运行。 4) 在Experssion 后键入Delay , 在Command 后键入printf(“SubRouTIne‘Delay’ has been Called\n”)主程序每次调用Delay 程序时并不停止运行,但会在输出窗口Command 页输出一行字符,即SubRouTIne ‘Delay’ has been Called。其中“\n”的用途是回车换行,使窗口输出的字符整齐。 5) 设置断点前先在输出窗口的Command页中键入DEFINE int I,然后在断点设置时同4),但是Command 后键入printf(“SubRouTIne ‘Delay’ has been Called %d times\n”,++I),则主程序每次调用Delay 时将会在Command 窗口输出该字符及被调用的次数,如SubRoutine ‘Delay’ has been Called 10 times。 对于使用C 源程序语言的调试,表达式中可以直接使用变量名,但必须要注意,设置时只能使用全局变量名和调试箭头所指模块中的局部变量名。 三、实例调试 为进行程序的调试,我们首先给源程序制造一个错误,将延时子程序的第三行“DJNZ R6,$”后的$改为D1,然后重新编译,由于程序中并无语法错误,所以编译时不会有任何出错提示,但由于转移目的地出错,所以子程序将陷入无限循环中。 进入调试状态后,按F10 以过程单步的形式执行程序,当执行到LCALL DELAY 行时,程序不能继续往下执行,同时发现调试工具条上的Halt 按钮变成了红色,说明程序在此不断地执行着,而我们预期这一行程序执行完后将停止,这个结果与预期不同,可以看出所调用的子程序出了差错。为查明出错原因,按Halt 按钮使程序停止执行,然后按RST 按钮使程序复位,再次按下F10 单步执行,但在执行到LCALL DELAY 行时,改按F11 键跟踪到子程序内部(如果按下F11 键没有反应,请在源程序窗口中用鼠标点一下),单步执行程序,可以发现在执行到“DJNZ R6,D1”行时,程序不断地从这一行转移到上一行,同时观察左侧的寄存器的值,会发现R6 的值始终在FFH 和FEH 之间变化,不会减小,而我们的预期是R6 的值不断减小,减到0 后往下执行,因此这个结果与预期不符,通过这样的观察,不难发现问题是因为标号写错而产生的,发现问题即可以修改,为了验证即将进行的修改是否正确,可以先使用在线汇编功能测试一下。把光标定位于程序行“DJNZ R6,D1”,打开在线汇编的对话框,将程序改为“DJNZ R7,0EH”,即转回本条指令所在行继续执行,其中0EH 是本条指令在程序存储器中的位置,这个值可以通过在线汇编窗口看到,如图2所示。 然后关闭窗口,再进行调试,发现程序能够正确地执行了,这说明修改是正确的。注意,这时候的源程序并没有修改,此时应该退出调试程序,将源程序更改过来,并重新编译连接,以获得正确的目标代码。 图2 断点设置对话框 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对Keil单片机编程软件的断点调试功能具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-05-22 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(13),Keil单片机编程软件常用调试命令

    单片机编程软件有多款可供使用,对于单片机编程软件,自动化专业朋友自然熟悉。为增进大家对单片机编程软件的了解,本文将对单片机编程软件Keil予以介绍,主要内容在于该单片机编程软件的常用调试命令,以帮助大家更好地调试源程序。如果你对本文内容存在兴趣,不妨继续往下阅读哦。 在对工程成功地进行汇编、连接以后,按Ctrl+F5 或者使用菜单Debug->Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试 功能。不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。 进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图1 所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。 图1 调试工具条 学习程序调试,必须明确两个重要的概念,即单步执行与全速运行。全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。单步执行是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与我们写该行程序所想要得到的结果相同,借此可以找到程序中问题所在。程序调试中,这两种运行方式都要用到。 使用菜单STEP 或相应的命令按钮或使用快捷键F11 可以单步执行程序,使用菜单STEP OVER 或功能键F10 可以以过程单步形式执行命令。所谓过程单步,是指将汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行。 按下F11 键,可以看到源程序窗口的左边出现了一个黄色调试箭头,指向源程序的第一行,如图2 所示。每按一次F11,即执行该箭头所指程序行,然后箭头指向下一行,当箭头指向LCALL DELAY 行时,再次按下F11,会发现,箭头指向了延时子程序DELAY 的第一行。不断按F11 键,即可逐步执行延时子程序。 通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错有时是困难的,或虽能查出错误但效率很低,为此必须辅之以其它的方法。 图2 调试窗口 将D2: DJNZ R6,D2 这一行程序执行六万多次来达到延时的目的,如果用按F11 六万多次的方法来执行完该程序行,显然不合适,为此,可以采取以下一些方法,第一,用鼠标在子程序的最后一行( ret)点一下,把光标定位于该行,然后用菜单Debug->Run to Cursor line(执行到光标所在行),即可全速执行完黄色箭头与光标之间的程序行。第二,在进入该子程序后,使用菜单Debug->Step Out of Current FuncTIon(单步执行到该函数外),使用该命令后,即全速执行完调试光标所在的子程序或子函数并指向主程序中的下一行程序(这里是JMP LOOP 行)。第三种方法,在开始调试的,按F10 而非F11,程序也将单步执行。不同的是,执行到lcall delay 行时,按下F10 键,调试光标不进入子程序的内部,而是全速执行完该子程序,然后直接指向下一行“JMP LOOP”。灵活应用这几种方法,可以大大提高查错的效率。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对Keil单片机编程软件的常用调试命令具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-05-22 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(12),Keil单片机编程软件配置操作

    单片机的使用离不开单片机编程软件,相关器件的开发同样离不开单片机编程软件。往期文章中,小编对多款单片机编程软件做过阐述。本文对于单片机编程软件的介绍同样基于keil,主要内容在于介绍这款单片机编程软件的配置问题。如果你对本文的内容存在一定兴趣,不妨继续往下阅读哦。 一、前言 我们常见的字体大小、颜色、关键字、快捷键等这些都是在“Configuration”中进行设置。本文讲述Configuration中的前面3项Editor、Colors & Fonts、User KeyWords。 本文讲述的Configuration配置和前面文章Options for Target目标选项在保存上有一个明显的区别:Configuration修改过后并保存的配置是保存在你Keil(电脑)软件上;而Options for Target修改过后并保存的配置是保存在你(.uvprojx和.uvoptx)工程文件中。 二、本文主要内容 1.本文主要内容 为了不让文章的篇幅过多而显得繁杂,本文将只对“Configuration”前三项Editor、Colors & Fonts、User KeyWords进行讲述。 2.打开“Configuration”方法 1.点击Configuration快捷按钮,如下图: 2.从菜单中打开,Edit-> Configuration,如下图: 三、Editor编辑 我将Edit分为五部分来讲述,分为General Editor Settings、Function Display、Look & Feel、File & Project Handing、C/C++ & ASM & Other File五个部分,如下图: 1.General Editor Settings General Editor Settings是通用编辑设置的意思,这个选项里面内容比较实用,可以参看下面动画效果。 Dncoding:编码方式选择。 Keil提供十几种编码方式供大家选择,一般我们选择标准的:Dncode in ANSI. Auto Indent:自动缩进。 也就是换行时自动缩进(对齐)功能,提供3个选项。 None:不对对齐,光标每次换行在第一列。 Smart:灵活对齐(常用)。包含大括号自动对齐。 Block:光标对齐于前一行。 Virtual Spaces:虚拟空间。 光标在上下移动时不管有没有“空间”都对齐。也就是说光标可以在任何位置。 View White Space:显示空白(空格)。 也就是显示一个点为空格。 View End of Line:显示结束行。 也就是在行结束位置显示换行符 Dncoding、Auto Indent动画效果: Virtual Spaces、View White Space、View End of Line动画效果: 2.Function Display Function Display是函数显示的意思,就是如何在Function Display窗口显示函数。 这一区域是三个参数组合(1配2)的配置,【显示方式Display Modules】和【显示内容Scan function names in project files、Scan function names in current editor files】进行组合可以4种显示效果。 Display Modules:显示模块【显示方式】。 勾选:以模块(分组/文件夹)方式显示。 不选:以函数名方式显示。 简单的说模块显示就是显示C源文件名,将函数名折叠在文件里面。 Scan function names in project files:浏览工程项目中所有函数【显示内容】。 就是显示工程中所有函数。 Scan function names in current editor files:浏览当前(打开)编辑文件的函数【显示内容】。 比如:我打开了main.c和bsp.c两个文件来编辑,那么就显示这两个文件的内容(函数)。 Function Display动画效果: 3.Look & Feel Look & Feel是看&感觉(视觉)设置的意思,看下面描述就能直观的理解这一区域意思。 Show Message Dialog during Find:在查找时显示消息对话框。 就是在查找结束,或未查找到相关内时容弹出的提示框。 比如:我在main.c文件中查找main1(文件中实际是没有main1),勾选上就会弹出消息对话框(如下图),不勾选就不会弹出高亮对话框。 Highlight Current Line:高亮当前行。 光标放在那一行,这一行就高亮的意思。如下图: Highlight matching and mismatched braces:高亮显示匹配和不匹配括号。 将光标放在括号处,会高亮括号,如下图: Print with syntax coloring:打印语法颜色。 打印颜色对应为编辑器中的颜色。 Colored Editor Tabs:颜色编辑器选项卡。 启用或禁用文件名称标签的颜色。 Right Margin:右边距。 编辑分隔符标记的位置号。位置号的默认值是80,范围[1-999]。 None:无标记; Vertical Line:虚线标记; Colored Background:背景颜色标记。 4.File and Project Handling File and Project Handling是文件和工程管理的意思,针对的是文件和工程。 Create Backup files:创建备份文件(* . bak)。 勾选该选项会影响文件和项目管理,一般我们不勾选。 Automatic reload of externally modified files:自动加载(不提示)修改过的文件。 比如:Keil软件打开了main.c文件,再使用文本编辑器打开该main,c文件修改其中内容并保存,这时Keil软件自动加载修改过后的main.c文件。 Save Project before entering Debug:进入调试之前保存工程项目。 Save Files before entering Debug:进入调试之前保存所有文件。 Auto save modified File every [x] Minutes:每x分钟自动保存文件。 5.C/C++ & ASM & Other File 这里三组配置类似,只讲述一组,比较简单。 Use syntax coloring:使用语法颜色。 不使用语法就等于txt文本那种纯黑色。见下图不使用和使用区别: Insert spaces for tabs:符插入空格。 这个符号需要配合上面第一处General Editor Settings的View White Space显示出来才能看到效果。 Tab Size:Tab符大小。 一个Tab符占几个空格。 Show Line Numbers:显示行数。 Use monospaced Font:使用等宽字体。 Open with Outlining:打开伦廓。 Ⅳ、Colors & Fonts颜色和字体 这个选项里面的配置就是我们很多都说的修改字体和颜色。我这里整体讲述一下里面内容。【个人习惯使用默认设置,也建议大家尽量使用默认设置】 Window窗口:列出所有可配置窗口名称或窗口类型。这个列表是预定义的,用户不能修改。我们常见修改的地方就是“C/C++ Edit files”。 Element元素:一个窗口的列表元素。这个列表是预定义的,用户不能修改。 Font字体:包含Font字体、Size大小和Style风格三项。 Colors颜色:包含Foreground 前景色、Background 背景色。 Ⅴ、User Keywords用户关键字 这个选项比较简单,就是用户自定义关键字。 Text File Types:文本文件类型。 User Keywords:用户关键字。 举例:我们定义C/C++类型关键字为“abcedf”,在编辑的时候就会显示关键字颜色。 以上便是此次小编带来的“单片机编程软件”相关内容,希望大家对本文介绍的内容具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-04-02 关键词: configuration 单片机编程软件 指数 keil

  • 单片机编程软件很简单(11),Keil单片机编程软件在线调试

    单片机编程软件的使用促进了社会发展,每款单片机编程软件各有千秋。在选择单片机编程软件时,大家可依据个人喜好和项目需求。本文对于单片机编程软件的介绍将基于keil,主要在于介绍这款单片机编程软件的在线调试功能。如果你对本文即将涉及的内容存在一定兴趣,或者以下部分正是你的疑虑所在,都不妨继续往下阅读哦。 一、前言 Keil在线调试的内容有很多,本文带来在线调试常用的内容:Debug Toolbar调试工具栏(复位、全速运行、停止运行、单步调试、逐行调试、跳出调试、运行到光标行、跳转到暂停行、调试窗口)快捷按钮的详细内容。 Keil工具栏总共有三种:文件工具栏(File Toolbar)、编译工具栏(Build Toolbar)、调试工具栏(Debug Toolbar)。编译工具栏只在编辑模式有效,调试工具栏只在调试模式下有效。文件工具栏在两种模式下都有效。 文件工具栏可以参看文章:Keil(MDK-ARM)系列教程(二)_工具栏详细说明. 二、本文要点 调试工具栏是我们在线调试时常用的工具栏(按钮),掌握这些按钮就能快速的调试代码,也即能快速的定位我们程序哪些地方存在不足。 1.编译,进入调试 编辑(或修改)代码之后,我们需要编译代码(F7)查看是否有错误,编译无误后点击调试按钮(Ctrl + F5)进入在线调试。 编译,进入调试动画效果: 2.复位,全速运行,停止运行 复位:让程序复位到起点,调试设置恢复到初始状态。这里可以参看文章Keil(MDK-ARM)系列教程(四)_工程目标选项配置(Ⅱ)Debug选项。 全速运行(F5):可以让程序运行常看运行状态,也可以在特定位置打断点,让程序运行到特定位置,查看运行状态。 停止运行:程序全速运行时(有效),点击该按钮可让程序停止运行。 复位,全速运行动画效果: 3.单步调试 单步调试(F11)也就是每点一次按钮,程序运行一步,遇到函数会跳进函数执行。 单步调试动画效果: 4.逐步调试 逐行调试(F10)也就是每点一次按钮,程序运行一行,遇到函数跳过函数执行。 逐步调试动画效果: 5.跳出调试 跳出调试(Ctrl + F11)也就是每点一次按钮,程序跳出当前函数执行,直到跳出最外面的函数(main函数)。 跳出调试动画效果: 6.运行到光标行 运行到光标处(Ctrl + F10)即将光标放在某一行,Ctrl + F11,程序执行到光标的位置就会停止下来(前提是程序能执行到光标的位置)。 运行到光标行动画效果: 7.跳转到暂停行 这个功能在程序停止运行时有效,主要的作用就是我们打开了很多文件,不知道将程序翻到哪里去了,点击改按钮即可知道我们的程序暂停在那个位置。 跳转到暂停行动画效果: 8.调试窗口 【调试窗口】是在调试的时候可以查看的窗口,这里有别于平时编辑状态下的窗口。平时编辑时View菜单下面的选项很少,但是进入调试模式,这里就多了很多选项,这些选项就是调试时查看的窗口(见下图)。 下面简述一下常用的调试窗口: A.watch查看窗口 Watch查看窗口也就是我们常用于查看变量的窗口。 B.系统外设窗口 这个窗口用于查看外设寄存器数值的窗口。 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对keil单片机编程软件的在线调试功能具备一定的认知,并在以后使用keil单片机编程软件的过程中可熟练使用它的在线调试功能。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-04-02 关键词: 在线调试 单片机编程软件 指数 keil

  • 单片机编程软件很简单(10),Keil单片机编程软件常见文件介绍

    单片机编程软件使用广泛,操作单片机编程软件的人员往往需具备专业知识。市场上有多款单片机编程软件可供大家选择,而小编较为推荐keil单片机编程软件。本文中,将主要为大家介绍这款单片机编程软件中的一些常见文件的作用和功能。如果你对本文即将探讨的内容存在一定兴趣,不妨继续往下阅读哦。 相信大部分朋友看见过类似上图“凌乱”的现象。工程文件和编译过程文件杂乱放在一起,其实只有.uvoptx和.uvprojx这两个比较重要,其他大部分都不重要。 小编我习惯在工程文件中放一个“删除编译产生垃圾文件.bat”文件,在最后源代码存档时删除编译过程产生的文件。 一、简介 本文说的“文件类型”指的是像.uvoptx、 .uvprojx、 .hex、 .map、 .axf、.ini、.c、.h···等一些后缀不同的文件,他们各自的作用和功能。 有时打开从其他地方获取的源文件,发现除了工程文件“.uvprojx”之外还有很大杂七杂八的文件,如:.crf、.d、.o···等一些让人看了都“烦躁”的源文件。 其实有很多文件都是在建立工程及编译之后产生的“中间文件”,对于我们来说,并不需要保存,只是在编译调试的过程中需要使用到。 当我们需要使用保存一个工程及相关源代码时,就需要把有些不必要的中间文件删除掉。于是,我们就需要知道这些文件的意思,哪些文件可以删除,哪些不能删除。 我们使用Go to Definition Of使用到的文件为.crf文件,有时候Go to Definition Of不能使用(或按F12不起作用),有可能就是相关的.crf文件被删除了,或者没有。 在线调试的时候,不能跟踪调试,很有可能是没有调试类型文件。 二、Keil中使用到的文件类型 大体可以分为7类: 1、Project Files工程类型文件; 2、Source Files源代码类型文件; 3、Listing Files链接类型文件; 4、Object and HEX Files目标和Hex类型文件; 5、Build Files编译类型文件; 6、Debugger Files调试类型文件; 7、Other Files其他类型文件。 下面章节会将常见的一些文件类型做详细说明。 三、Project Files工程类型文件 工程类型文件是比较重要的,一般不能删除。删除之后有可能打不开软件工程,所以,不能轻易删除这一类文件。 .uvmpw:多工程(工作空间)文件; .uvprojx:工程文件(Keil V5) .uvproj:工程文件(Keil V4) .uvoptx:工程选项配置文件(Keil V5) .uvopt:工程选项配置文件(Keil V4) .uv2:工程文件(Keil V3) 四、Source Files源代码类型文件 这一类源文件,我想,应该不用多说。主要就是源文件和头文件,大体上有如下一些类型: .c、 .h、 .cpp、 .inc、 .a51、 .s、 .a66、 .src等。 五、Listing Files链接类型文件 Project -> Options for Target -> Listing,如图: 这类文件的输出就在上图的地方配置,需要输出就勾选上。常见文件类型有如下几种: .map:MAP文件就是存储镜像文件,这个文件非常重要。当代码出现异常,对分析代码非常有帮助,我打算后面专门写一篇文章来讲述这个文件。 .i:C语言预处理器输出文件; .lst:C编译器或汇编程序生成的文件; .cod:包括混合C和汇编代码的完整的程序清单文件; 六、Object and HEX Files目标和Hex类型文件 Project -> Options for Target -> Output,如图: 这一类文件比较重要,调试信息、预览信息、可执行文件等都在这里面。 .hex:可执行文件(和.bin类似 用于下载到芯片的程序文件); .axf:包含调试信息的程序文件,有时候我们在调试时出现错误,可能是axf没有文件; .d:编译生成的依赖文件,一般一个.c文件对应一个.d文件; .o:也是目标的依赖文件(重定位定址的依赖文件); .lib:库文件,生成库就在这里; .elf:ELF/DWARF链接的文件; .crf:浏览信息文件,在文章开头说了,使用Go to Definition Of功能,就需要有这类文件。 七、剩下一些类型文件 Build Files编译类型文件: 这一类文件重点提一下“bat批处理文件”,也就是说在编译的时候,可以配合bat文件一起编译。Bat文件主要就是一些命令,如拷贝、新建等。 Debugger Files调试类型文件: .ini:调试加载类文件。就是在调试时加载的文件: Other Files其他类型文件: .pack:支持包文件; .sct:链接控制文件; .lnp:连接器传递命令文件; ······· 这类文件还有很多,重要性不强,不一一说明了。 以上便是此次小编带来的“单片机编程软件”相关内容,希望大家对本文讲解的内容具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-04-02 关键词: 单片机编程软件 指数 keil

  • 单片机编程软件很简单(九),Keil单片机编程软件高级调试技巧讲解

    单片机编程软件必不可少,近来文章中,小编主要为大家讲解Keil单片机编程软件。上篇中,主要阐述了Keil单片机编程软件的辅助功能。而在本文中,将介绍Keil单片机编程软件的高级调试技巧。如果你对单片机编程软件存在一定兴趣,不妨继续往下阅读哦。 Keil 内置了一套调试语言,很多高级调试技巧与此有关,但是全面学习这套语言并不现实,这不是这么几期连载可以胜任的,这里仅介绍部份较为实用的功能,如要获得更详细的信息,请参考Keil 自带的帮助文件GS51.PDF。 1、串行窗口与实际硬件相连 Keil 的串行窗口除可以模拟串行口的输入和输出功能外还可以与PC 机上实际的串口相连,接受串口输入的内容,并将输出送到串口。这需要在Keil 中进行设置。方法是首先在输出窗口的Command 页用MODE 命令设置串口的工作方式,然后用ASSIGN 命令将串行窗口与实际的串口相关联,下面我们通过一个实例来说明如何操作。例1: ORG 0000H JMP START ORG 3+4*8 ;串行中断入口 JMP SER_INT START: MOV SP,#5FH ;堆栈初始化 CALL SER_INIT ;串行口初始化A SETB EA ; SETB ES ; JMP $ ;主程序到此结束 SER_INT: JBC RI,NEXT ;如果串口接收到字 符,转 JMP SEND ;否则转发送处理 NEXT: MOV A,SBUF ;从SBUF 中取字符 MOV SBUF,A ;回送到发送SBUF 中 JMP OVER SEND: clr ti OVER: reti SER_INIT: ;中断初始化 MOV SCON,#50H ORL TMOD,#20H ORL PCON,#80H MOV TH1,#0FDH ;设定波特率 SETB TR1 ;定时器1 开始运行 SETB REN ;允许接收 SETB SM2 RET END 这个程序使用了中断方式编写串行口输入/输出程序,它的功能是将接串行口收到的字符回送,即再通过串行口发送出去。 正确输入源文件、建立工程、编译连接没有错后,可进行调试,使用Keil 自带的串行窗口测试功能是否正确,如果正确,可以进行下一步的连机试验。 为简单实用,我们不借助于其它的硬件,而是让PC 机上的两个串口互换数据,即COM1发送COM2 接收,而COM2 发送则由COM1 接收,为此,需要做一根连接线将这两个串口连起来,做法很简单,找两个可以插入PC 机串口的DIN9 插座(母),然后用一根3 芯线将它们连起来,连线的方法是: 2——3 3——2 5——5 接好线把两个插头分别插入PC 机上的串口1 与串口2。找一个PC 机上的串口终端调试软件,如串口精灵之类,运行该软件,设置好串口参数,其中串口选择2,串口参数设置,为: 19200,n,8,1 其含义是波特率为19200,无奇偶校验,8 位数据,1 位停止位。 在Keil 调试窗口的command 页中输入: >mode com1 19200,0,8,1 >assign com1 sout 注意两行最前面的“>”是提示符,不要输入,第二行中的“”即“小于”和 “大于”符号,中间的是字母“s”和“input”的前两个字母,最后是字母“s”和“output”的前三个字母。 第一行命令定义串口1 的波特率为19200,无奇偶校验,8 位数据,1 位停止位。第二行是将串口1(com1)分配给串行窗口。 全速运行程序,然后切换串口精灵,开始发送,会看到发送后的数据会立即回显到窗口中,说明已接收到了发送过来的数据。切换到uVison,查看串行窗口1,会看到这里的确接 收到了串口精灵送来的内容。 2、从端口送入信号 程序调试中如果需要有信号输入,比如数据采集类程序,需要从外界获得数据,由于Keil 的调试完全是一个软件调试工具,没有硬件与之相连,所以不可能直接获得数据,为此必须采用一些替代的方法,例如,某电路用P1 口作为数据采集口,那么可以使用的一种方法是利用外围接口,打开PORT 1,用鼠标在点击相应端口位,使其变为高电平或低电平,就能输入数据。显然,这种方法对于要输获得数据而不是作位处理来说太麻烦了,另一种方法是直接在command 页输入port1=数值,以下是一个小小的验证程序。例2: LOOP: MOV A,P1 JZ NEXT MOV R0,#55H JMP LOOP NEXT: MOV R0,#0AAH JMP LOOP END 该程序从P1 口获得数据,如果P1 口的值是0,那么就让R0 的值为0AAH,否则让R0的值为55H。输入源程序并建立工程,进入调试后,在观察窗口加入R0,然后全速运行程序,注意确保View->Periodic Window Updata 处于选中状态,然后在Command 后输入PORT1=0 回车后可以发现观察窗口中的R0 的值变成了0AAH,然后再输入PORT1=1 或其它非零值,则R0 的值会变为55H。同样的道理,可以用port0、port2、port3 分别向端口0、2、3 输入信号。 3、直接更改内存值 在程序运行中,另一种输入数据的方法是直接更改相应的内存单元的值,例如,某数据采集程序,使用30H 和31H 作为存储单元,采入的数据由这两个单元保存,那么我们更改了30H 和31H 单元的值就相当于这个数据采集程序采集到了数据,这可以在内存窗口中直接修改(参考上一讲),也可以通过命令进行修改,命令的形式是: _WBYTE (地址,数据),其中地址是指待写入内存单元的地址, 而数据则是待写入该地址的数据。例如_WBYTE(0x30,11)会将值11 写入内存地址十六进制30H 单元中。 以上便是此次小编带来的“单片机编程软件”相关内容,希望大家对本文讲解的内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-03-10 关键词: 调试技巧 单片机编程软件 指数 keil

  • 单片机编程软件很简单(八),Keil单片机编程软件辅助功能讲解

    单片机编程软件的应用很多,在单片机编程软件的帮助下,我们对单片机的控制才变得如此简单。在市场上流通的单片机编程软件中,小编最为喜爱Keil单片机编程软件。在本文中,小编将为大家介绍Keil单片机编程软件的辅助工具。如果你对本文将要探讨的内容存在一定兴趣,不妨继续往下阅读哦。 这部份功能并不是直接用来进行程序调试的,但可以帮助我们进行程序的调试、程序性能的分析,同样是一些很有用的工具。 1、外围接口 为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端口等常用外设的使用情况,Keil 提供了一些外围接口对话框,通过Peripherals 菜单选择,该菜单的下拉菜单内容与你建立项目时所选的CPU有关,如果是选择的89C51 这一类“标准”的51 机,那么将会有Interrupt(中断)、I/O Ports(并行I/O 口)、Serial(串行口)、TImer(定时/计数器)这四个外围设 备菜单。打开这些对话框,列出了外围设备的当前使用情况,各标志位的情况等,可以在这些对话框中直观地观察和更改各外围设备的运行情况。 下面我们通过一个简单例子看一看并行端口的外围设备对话框的使用。例4: MOV A,#0FEH LOOP: MOV P1,A RL A CALL DELAY ;延时100 毫秒 JMP LOOP 其中延时100 毫秒的子程序请自行编写。 编译、连接进入调试后,点击Peripherals->I/O-Ports->Port 1 打开,如图1 所示,全速运行,可以看到代表各位的勾在不断变化(如果看不到变化,请点击View->Periodic Window Updata),这样可以形象地看出程序执行的结果。 注:如果你看到的变化极快,甚至看不太清楚,那么说明你的计算机性能好,模拟执行的速度快,你可以试着将加长延时程序的时间以放慢速度。模拟运行速度与实际运行的速度无法相同是软件模拟的一个固有弱点。 点击Peripherals->I/O-Ports->TImer0 即出现图2 所示定时/计数器0 的外围接口界面,可以直接选择Mode 组中的下拉列表以确定定时/计数工作方式,0-3 四种工作方式。 图1 外围设备之并行端口 图2 外围设备之定时器 设定定时初值等,点击选中TR0,status 后的stop 就变成了run,如果全速运行程序,此时th0,tl0 后的值也快速地开始变化(同样要求Periodic Window Updata 处于选中状态),直观地演示了定时/计数器的工作情况(当然,由于你的程序未对此写任何代码,所以程序不会对此定时/计数器的工作进行处理)。 2、性能分析 Keil 提供了一个性能分析工具,利用该工具,我们可以了解程序中哪些部份的执行时间最长,调用次数最多,从而了解影响整个程序中执行速度的瓶颈。下面通过一个实例来看一看这个工具如何使用,例5: #include "reg51.h" sbit P1_0=P1^0; //定义P1.0 void mDelay(unsigned char DelayTIme) { unsigned int j=0; for(;DelayTIme>0;DelayTime--) { for(j=0;j0;DelayTime--) { for(j=0;jPerformance Analyzer Window,打开性能分析对话框,进入该对话框后,只有一项unspecified,点鼠标右键,在快捷菜单中选择Setup PA即打开性能分析设置对话框,对于C 语言程序,该对话框右侧的“Function Symbol”下的列表框给出函数符号,双击某一符号,该符号即出现在Define Performance Analyzer 下的编缉框中,每输入一个符号名字,点击Define 按钮,即将该函数加入其上的分析列表框。对于汇编语言源程序,Function Symbol 下的列表框中不会出现子程序名,可以直接在编缉框中输入子程序名,点击Close 关闭窗口,回到性能分析窗口,此时窗口共有4 个选项。全速执行程序,可以看到mDelay 和mDelay1 后出现一个蓝色指示条,配合上面的标尺可以直观地看出每个函数占整个执行时间的比例,点击相应的函数名,可以在该窗口的状态栏看到更 详细的数据,其中各项的含义如下: Min:该段程序执行所需的最短时间;Max:该段程序执行所需的最长时间;Avg:该段程序执行所花平均时间;Total:该段程序到目前为目总共执行的时间;%:占整个执行时间的百分比;count:被调用的次数。 本程序中,函数mDelay 和mDelay1 每次被调用都花费同样的时间,看不出Min、Max、和Avg 的意义,实际上,由于条件的变化,某些函数执行的时间不一定是一个固定的值,借助于这些信息,可以对程序有更详细的了解。下面将mDelay1 函数略作修改作一演示。 void mDelay1(unsigned char DelayTime) { static unsigned char k; unsigned int j=0; for(;DelayTime>0;DelayTime--) { for(;j {;} } k++; } 程序中定义了一个静态变量K,每次调用该变量加1,而j 的循环条件与k的大小有关,这使每次执行该程序所花的时间不一样。编译、执行该程序,再次观察性能分析窗口,可以看出Min、Max、Avg 的意义。 3、变量来源浏览 该窗口用于观察程序中变量名的有关信息,如该变量名在那一个函数中被定义、在哪里被调用,共出现多少次等。在Source Browse 窗口中提供了完善的管理方法,如过滤器可以分门别类地列出各种类别的变量名,可以对这些变量按Class(组)、Type(类型)、Space(所在空间)、Use(调用次数)排序,点击变量名,可以在窗口的右侧看到该变量名的更详细的信息。 4、代码作用范围分析 在你写的程序中,有些代码可能永远不会被执行到(这是无效的代码),也有一些代码必须在满足一定条件后才能被执行到,借助于代码范围分析工具,可以快速地了解代码的执行情况。进入调试后,全速运行,然后按停止按钮,停下来后,可以看到在源程序的左列有三种颜色,灰、淡灰和绿,其中淡灰所指的行并不是可执行代码,如变量或函数定义、注释行等等,而灰色行是可执行但从未执行过的代码,而绿色则是已执行过的程序行。使用调试工具条上的Code Coverage Window 可打开代码作用范围分析的对话框,里面有各个模块代码执行情况的更详细的分析。如果你发现全速运行后有一些未被执行到的代码,那么就要仔细分析,这些代码究竟是无效的代码还是因为条件没有满足而没有被执行到。 以上便是此次小编带来的“单片机编程软件”相关内容,希望大家对本文讲解的内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-03-10 关键词: 辅助功能 单片机编程软件 指数 keil

  • 单片机编程软件很简单(七),Keil单片机编程软件软件仿真+硬件仿真

    单片机编程软件的重要性不言而喻,对于单片机编程软件,大家或多或少有所接触。在往期单片机编程软件文章中,小编介绍过IAR单片机编程软件、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:堆栈局部变量窗口,通过该按钮可以显示Call Stack+Locals窗口,显示当前函数的局部变量及其值,方便查看。 10:观察窗口,MDK5提供2个观察窗口(下拉选择),该按钮按下则弹出一个显示变量的窗口。输入想观察的变量或表达式,即可查看其值,是很常用的调试窗口。 11:内存查看窗口,MDK5提供4个内存查看窗口,按下按钮,则弹出一个内存查看窗口,可以在里面输入要查看的内存地址,然后观察这一片内存的变化情况。 12:串口打印窗口,MDK5提供4个串口打印窗口。按下该按钮,则弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。 13:逻辑分析窗口,该图标下面有3个选项,一般用第一个,也就是逻辑分析窗口。通过SETUP按钮新建一些IO口,于是可以观察这些IO的电平变化情况,并以多种形式显示出来,比较直观。 14:系统查看窗口,该按钮可以提供各种外设寄存器的查看窗口(通过下拉选择),选择对应外设即可调出该外设的相关寄存器表,并显示这些寄存器的值,方便查看设置是否正确。 二、硬件仿真 硬件仿真则是程序下载到单片机中,进行的仿真,是程序实际在单片机中运行的情况。 需要选择后面那个选项,然后在下拉单里选择自己的仿真器。然后后面步骤和软件仿真一样。 注:要在逻辑硬件仿真里使用逻辑分析仪之类的工具,要开“Trace” 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对Keil单片机编程软件的软件仿真和硬件仿真具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-03-10 关键词: 软件仿真 单片机编程软件 指数 keil

  • 单片机编程软件很简单(六),V5.29 keil mdk单片机编程软件新特性+烧写程序

    单片机编程软件使用广泛,市场上最为流通的单片机编程软件为IAR、keil。往期中,小编曾对keil单片机编程软件带来诸多介绍,想必大家对这款单片机编程软件早已熟悉。但是大家了解keil mdk单片机编程软件吗?本文中,小编将对keil mdk v5.29版本单片机编程软件的新特性加以讲解。此外,文章第四部分将对keil单片机如何烧写程序予以介绍。如果你对本文即将涉及的两大部分存在兴趣,请继续往下阅读哦。 一、keil mdk新特性 关注Keil的读者应该知道MDK升级至V5.29的消息了。我看到升级消息也是第一时间去下载更新体验了一下。 升级之后的,用户使用上没有太多变化,主要是升级了一些组件,简单的说,就是一些小改动。 现在MDK也在搜集用户信息了,说的是用于分析产品,比如:平时的遇到的一些BUG,但具体会搜集哪些信息,还未知。 一般装好之后,启动时会有这么一个提示,若不想被收集,点击“否”。下面讲讲升级的内容,共四项。 1.编译器Arm Compile升级至V6.13.1主要增加的功能是对Armv8.1-M和可选的M-profile Vector Extension(MVE)的支持。 MVE带来了几个独特的架构功能,这些功能可以在DSP和机器学习内核中实现更高的性能。 二、中间件MDK-Middleware升级至V7.10.0这次升级,中间件升级内容最多,包括文件系统、网络、USB等。 1.文件系统组件 添加了用于管理文件或目录时间戳的 ftime_set 和 ftime_get 函数。 添加了状态代码fsAlreadyExists和fsNotDirectory,可以在使用fmkdir,frmdir和fchdir时进行更多控制。 添加了功能fversion,用于检索FileSystem组件的版本。 增强了标准I / O例程使用的文件系统功能的错误报告(使用errno检索上一个错误代码)。 使用选项 /S 和名称缓存时,已纠正frmdir中的错误,该错误可能导致重命名操作后无法访问文件。 2.网络组件 在客户端模式下使用PPP接口并且服务器生成小于16字节的CHAP质询时,已纠正CHAP身份验证中可能的内存损坏。 在HTTP服务器摘要身份验证中增加了对用户帐户的支持。 增加了对存储为MD5哈希值HA1的密码的支持。 在HTTP服务器中增加了对摘要访问身份验证的支持。 收到分段的广播消息时,更正了内存问题。 如果未创建BSD套接字,则从BSD_EINVAL到BSD_ESOCK的更正返回码。 提高了BSD插槽的坚固性。 纠正了对链接层寻址的UDP消息的过滤(不再收到具有正确MAC地址和无效IP地址的数据报)。 3.USB组件 USB设备/主机:为USB堆栈创建的所有线程添加了线程名称。 USB主机:更正后的USBH_Device_GetController / Port / Speed / Address / VID / PID函数可用于设备枚举初始化回调。 二、改进µVision µVision调试器现在支持 ADI v6(在ULINKplus,ULINKpro和CMSIS-DAP中)。 在反汇编程序中支持Armv8.1-M体系结构扩展。 自动生成的分散文件可以管理具有相同名称的多个模块。 如果所有包含的对象都是最新的,则跳过在构建过程中运行Lib。 三、更新调试驱动程序和模型 ULINKpro固件v1.59 ST-Link驱动程序v3.0.7.0 NULink驱动程序v3.01.6951 删减了对Stellaris ICDI的支持 快速模型11.8 四、keil c51软件烧写操作说明 1、适用范围 适用于以51系列芯片作为软件运行载体的所有设备。 2、运行环境 WIN98、NT、WIN2000、WINXP、WIN7等操作系统。 3、辅助工具 PC机1台、KEIL C51 安装软件、编程器(UEC-5)1个、USB转RS232数据线(电脑无串口时需配备)1条 4、软件安装 Keil C51软件在首次使用时需要安装,使用的工装(电脑PC)上已安装好软件此步骤可以省略。 5、KEIL C51设置 6、产品软件烧写 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对keil mdk v5.29版本单片机编程软件的新特性具备一定的认知,并对keil c51烧写程序的步骤有所了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-01-20 关键词: 烧写程序 mdk 单片机编程软件 keil

  • 单片机编程软件很简单(五),keil单片机编程软件变量用法(下)

    对于单片机编程软件,想必大家均有所了解。针对单片机编程软件,小编曾对keil、IAR予以介绍。本文对于单片机编程软件的讲解,同样基于keil。本文中,将介绍keil单片机编程软件变量用法下篇。如果你对单片机编程软件相关内容存在一定兴趣,不妨继续往下阅读哦。 一、Keil C51中使用变量存储模式的必要性 在Keil C51中,变量的存储模式是一个可选项,如果不使用这个选项,则Keil C51在编译时自动进行优选分配。但这种处理方法有以下缺点: ①系统不知道各种变量的使用频度,有可能对使用频度高的变量使用了访问速度慢的片外存储方式,而对使用频高的变量使用了片内存储方式,使得程序的运行效率降低; ②在使用指针寻址时,由于不知道寻址对象的存储方式,只好使用一般指针,在Keil C51中一般指针要多占用1~2个字节,并且使用时还要对存储方式进行判断,增加了寻址操作时间。 如果能够在定义变量的同时定义其存储类型,可以高效地使用51内核单片机的存储空间,获得高质量的目标代码。 二、Keil C51变量的使用方法 2.1 全局变量和静态局部变量 全局变量一般会在多个函数中被使用,并在整个程序运行期间内有效,静态局部变量虽然只在一个函数中使用,但也是在整个程序运行期间有效。对于这些变量,应尽量选择data型,这样在目标代码中就可以用直接寻址指令访问,获得最高的访问速度,提高程序的工作效率。例如一个保存人数的全局变量n_g,在多个函数中都被经常用到,可以这样定义: unsigned int data n_g;//对n_g赋值时使用“MOV XXH,……”指令 2.2 数组(包括全局和局部) 定义数组一般用idata存储类型,在目标代码中使用“MOV@Ri”指令进行间接寻址。如果因数组元素过多而在编译时报错,可以改用pdata和xdata存储类型。 数组定义为data存储类型意义不大,因为既然使用数组,就是希望能够根据某一自变量访问数组元素。如定义X[100],一般都是为了能够使用X(i是一个变量)来访问,这样在目标代码中就必须使用问接寻址,所以数组没有必要使用data存储类型,即便使用了data存储类型,在目标代码中也仍然要用间接寻址指令。数组定义成idata存储类型,在使用52内核且片内数据存储器不够时,会使用只能间接寻址的片内数据存储空间。这样,既不能降低处理速度,又扩大了可使用的存储空间。 2.3 供查表用的数据 这类数据的特点是需要始终保持不变,且使用时只读,因此应定义为code型。例如一个字形表: 全局或局部code型变量在存储时无区别。 2.4 非静态局部变量 非静态局部变量仅在某一函数内使用,退出该函数时变量也被释放。 若系统使用small存储模式,对于这些变量可以不加存储说明,由编译软件自行按最优原则决定,因为仅在函数内使用的非静态局部变量,有可能使用工作寄存器R0~R7,这样会更快速和更节省存储空间。例如: unsigned char i,j; //系统尽可能会用R0~R7存储i和j 若系统使用了compact或large存储模式,则应将这些变量定义为data存储模式,以防系统自行决定时被定义为pdagta或xdata模式而降低工作效率。 2.5 指针 如前所述,定义指针变量时有2个存储类型:数据存储类型,说明被寻址对象的存储类型;指针存储类型,说明指针自身的存储类型。当数据存储类型为xdata时,指针自身占用2个字节;当数据存储类型为pdata以及idata等片内存储类型时,指针自身占用1个字节;若不说明数据存储类型,指针自身就要占用3个字节。因此,在KeilC51中使用指针时,应尽量定义数据存储类型,但要特别注意指针中的数据存储类型与被寻址对象的存储类型必须一致。指针都是频繁使用的,它要不断被设置、修改和使用,因此它自身的存储类型应选择data型。例如定义一个数组时就同时定义其存储类型,以后用指针对其寻址时就将数组的存储类型添加到指针的数据类型中。方法如下: 2.6 二义性变量 在标准C中如果要使用一个二义性变量,只能用枚举类型。如: 以上程序在Keil C51中使用时,变量t虽然仅有0和1两种状态,但在目标代码中仍占用一个字节。此处理方法既浪费存储资源,又延长了处理时间,这对于8086内核算不上多大问题,但在资源有限、运行速度不高的51内核中就不能不考虑了。在Keil C51中可使用以下方法: 这两种方式效果是完全相同的,但在目标代码中变量t仅占用1位(即1/8字节),而且因为51内核单片机指令系统中有位处理指令,生成的目标代码占用内存少、运行速度快。 2.7 特殊功能寄存器变量(包括位变量) 特殊功能寄存器中,累加器A、寄存器B、堆栈指针SP和数据指针DPTR是归系统使用的,在C51中不提供给用户。其他的特殊功能寄存器都可以用sfr定义成变量,其中地址可以被8整除者的各位,还可以用bsfr定义成位变量。访问这些变量,就可以对特殊功能寄存器及其可以位寻址的各位进行读写,达到操作单片机内部各硬件的目的。对于标准的51内核单片机,头文件reg51.h、reg52.h或其他头文件中已对这些特殊功能寄存器变量作了定义,用户可以用#include将此头文件包含进来,然后就可以使用了。现在很多51内核兼容型单片机扩展了更多的特殊功能寄存器,这些就需要用户自行定义,具体方法可参考器件的使用说明。 2.8 外部数据存储器变量 若设置成pdata和xdata存储类型,将把变量存储在片外数据存储器中。这两种存储类型的访问速度最慢,非迫不得已不要使用。在使用这两种存储类型时,注意尽量只用它保存原始数据或最终结果,尽量减少对其访问的次数,需要频繁访问的中间结果不要用它。 2.9 用外部数据存储器地址扩展的其他硬件 在单片机外部扩展的其他硬件,一般都借用外部数据存储器地址,表现为外部数据存储器单元形式。对于这些硬件,可以用指针进行读写操作。例如: 以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对本文讲解的内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-01-20 关键词: 变量用法 单片机编程软件 keil

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站