keil软件调试单片机程序
使用Keil软件模拟调试单片机串行口

使用Keil软件模拟调试单片机串行口单片机串行口是单片机中很常见的接口之一,常用于与外界通讯,如与PC机通讯,接收或发送数据等。
Keil软件可以帮助我们模拟及调试单片机串行口,下面是详细介绍。
一、Keil软件简介Keil是一款强大的单片机编程软件,具有模拟器和仿真器。
其可支持多种嵌入式系统和多种编译器。
同时Keil具有标准C 编译器,专门用于单片机编程,而且具有与某些模拟器和编译器的集成,可提供完整的嵌入式开发环境。
二、使用Keil软件模拟1. 连接软件与硬件在开始模拟之前,需要将单片机与电脑通过串口连接好。
打开“Options for Target”对话框,选择“Debug”选项卡,选择正确的COM 端口,设置存根速度,完成调试设置。
2. 添加串行口文件在Keil软件中打开设计文件,键入“#include <reg52.h>”来添加注册头文件,其中包含了需要使用串口的相关寄存器位。
利用如下代码,可以对串行口的各项参数进行设置,例如波特率、校验位等等。
void init(){SCON = 0X50; //使串口工作在方式1,即8位数据,可变波特率TMOD |= 0X20; //TMOD的高4位设为0010,使Timer1工作在方式2TH1 = 0XF3; //波特率设为2400bpsTL1 = 0XF3;TR1 = 1; //启动Timer1ES = 1; //开启串口中断EA = 1; //打开总中断}3. 编写数据收发代码在调用串口的过程中,我们往往需要使用到接收和发送两个函数。
在接收方面,我们需要设置好接收中断模式以及缓冲区的异步处理。
编写简单的数据接收收发代码如下:void send_data(unsigned char dat){SBUF = sdat; //将数据传输到SBUF当中while(!TI); //等待发送完成TI = 0; //完成发送}unsigned char receive_data(){while(!RI); //等待接收完成RI = 0; // 完成接收return SBUF; // 返回接收缓冲区}4. 最后进行模拟完成串行口配置和数据处理之后,就可以开始模拟调试了。
关于英飞凌单片机的工程建立和程序调试问题

关于英飞凌单片机的工程建立和程序调试问题1.英飞凌单片机的工程文件是通过Dave软件先配置好寄存器,编译生成.dpt文件,再由Keil打开自动转换成.uvproj工程文件。
然后在用户代码区编写用户程序,编译连接成hex 烧写文件。
2.利用MiniWiggler仿真器器,可以在Keil中直接下载调试程序。
在此之前,需先安装好DAS驱动,以识别仿真器。
在设备管理器中可看到仿真器识别信息。
3.在下载程序前,需设置好Keil工程选项。
以16位单片机为例:Option-Utilities选项,下拉按钮选择Infineon DAS Client for XC16x。
点击Setting,在DAS Server选项选择UDAS,正常识别单片机的情况,Device选项会出现单片机信息,如XE166/XC2000-Family。
在下方的Flash Download Option,单击Add,添加对应单片机型号的Flash,如XE16x-48F On-Chip Flash,结果如下之后,通过Keil主菜单Flash-Download便可以下载程序了。
调试程序时,类似地在Option-Debug选项卡中对应设置即可。
4.完整版本MiniWiggler仿真器采用了电平转换处理,可以连接3.3V或5V系统板,故此仿真器不提供给系统板供电功能。
仿真器有三个指示灯,当仿真器和系统板同时上电,电源灯亮;当下载程序或调试程序刚开始时,连接指示灯亮,当调试程序开始Run时,调试指示灯亮。
5.有些时候仿真器连不上系统板,可能是工程原因或电脑原因,可检查工程设置或更换电脑测试。
注意关系到JTAG口的复用引脚,编程中避免占用,以免下次烧写程序时JTAG 口无法连接上,该情况请采用串口下载进行恢复。
6.使用Memtool串口下载程序时,需注意系统板的启动配置,即拨码开关的位置。
在Memtool中,主菜单Target-Change选择对应系统板型号,Browse选项中New-Use a default target configuration,选择对应系统板型号中Bootstrap Loader类型的,完成。
C51程序在Keil C51下的调试步骤

C51程序在Keil C51下的调试步骤现在广泛使用的C51集成开发环境是Keil软件。
要使用Keil软件,首先要正确安装Keil软件,该软件的Eval版本可以直接去http://www. 下载,其步骤与一般Windows 程序安装类似,这里就不再赘述了。
Keil软件的详细说明见相关资料,这里仅作简要说明,以便于读者在后面的章节中实际动手调试、仿真程序。
1.建立工作项目文件图1启动Keil μVison2启动Keil μVison2,如果打开后就有打开的文件,单击“Project->Close Project”菜单将其关闭。
单击“File->New... ",打开一个新的文件输入窗口,在这个窗口里输入上述源程序。
输入完毕之后,选择“File-->Save",给这个文件取名保存,取名字的时候必须要加上扩展名,一般C语言程序均以“.c”为扩展名(一定要加扩展名,否则后面添加文件就找不到该文件,这是初学者很容易忘记的),这里将其命名为mytest.c。
图2 建立工程文件单击“Project->New Project...",出现对话框,要求给将要建立的工程起一个名字,这里起名为test,不需要输入扩展名。
单击“保存”按钮,出现第二个对话框,如图3所示:图3 CPU选择窗口这个对话框要求选择工程中所用的单片机型号,这里选择Atmel公司的89S52芯片。
单击ATMEL前面的“+”号,展开该层,单击其中的89S52,然后再单击“确定”按钮,会出现一个对话框,询问是否要将标准的8052启动代码加入工程,单击“是”按钮。
此时,在工程窗口的文件页中出现了“Target 1”,前面有“+”号,单击“+”号展开,可以看到下一层的“Source Group 1 ",需要手动把刚才编写好的源程序加入,方法如下:单击“Source Group 1 ",使其反白显示,然后单击鼠标右键,出现一个下拉菜单,如图4所示。
使用keil进行stm32单片机开发的流程 -回复

使用keil进行stm32单片机开发的流程-回复keil作为一款嵌入式系统开发工具,广泛应用于STM32单片机的开发过程中。
它具有强大的编译、调试和仿真功能,可以帮助开发者更高效地进行单片机的开发工作。
本文将以“使用keil进行STM32单片机开发的流程”为主题,为读者详细介绍使用keil进行STM32开发的步骤和注意事项,帮助读者轻松入门STM32开发。
一、准备工作1. 软件安装:首先需要安装keil嵌入式开发环境。
你可以从官方网站上下载到keil的安装包,然后按照安装向导进行安装即可。
2. 硬件准备:除了软件准备外,还需要购买一块支持STM32开发的开发板,例如ST公司的ST-LINK开发板。
将开发板连接至电脑。
二、创建项目1. 打开keil:双击桌面上的keil图标,进入keil开发环境。
2. 创建新项目:点击“Project”->“New Project”,选择合适的存储路径和项目名称,并选择你所使用的STM32单片机型号。
单击“OK”完成新项目的创建。
三、配置开发环境1. 配置芯片参数:在左侧的“Project”窗口中,右键点击“Target 1”,选择“Options for Target”。
2. 配置目标选项:在“Debug”选项卡中,选择正确的调试接口,并将“Use Simulator”选项取消勾选。
在“Settings”选项卡中填写正确的时钟频率和连接方式,并启用Flash编程。
3. 配置编译器:在左侧的“Project”窗口中,右键点击“Target 1”,选择“Options for Target”。
在“C/C++”选项卡中,配置编译器的优化级别和其他相关参数。
四、编写代码1. 添加源文件:在“Project”窗口中右键点击“Source Group 1”,选择“Add New Item”,然后添加你的源代码文件,编写代码内容。
注意,为了方便管理,可以按功能将代码分割成多个源代码文件。
keil环境下51单片机定时器应用程序调试

图2 启动ISIS 7 Professional
图3 打开sim51.DSN文件
图4 选择运行的代码
点击打开对话框,选择运行的代 码。
图5 控制程序运行
:连续运行仿真。 :以一个动画帧为单位,单步运行仿真。 :在连续运行时0时刻暂停。
:停止仿真。
图6 用虚拟示波器观察产生的波形
按住黄色箭头拖动,调节扫描速率
定时器程序练习2
要求: ;fosc=6MHz,使用定时器T0产生100ms定时,在P1.0口输出频 率为5Hz的方波,在P1.1口输出频率为2Hz的方波(1/2秒信 号),在P1.2口输出频率为1Hz的方波(秒信号)。 ;参考课本P127页例1。
图1 创建HEX文件选项
调试步骤:
1、在keil中建立项目lianxi,输入源程序保存为lianxi.asm。 2、点击 ,选择“Output”标签,在“Creat HEX File”前打“√”, 如图1所示,再编译,将产生lianxi.hex文件。 3、启动单片机仿真程序“ISIS 7 Professional”,如图2所示。 4、打开 “sim51.DSN”文件,如图3所示。 5、双击U1(80C51),弹出对话框如图4所示,选择要运行的代 码lianxi.hex。 6、按照图5所示,控制程序运行。 7、用虚拟示波器观察产生的波形,如图6。
按照练习1介绍的方法,进行调试运行,观察结果。
keil环境下51单片机定时器应用程序调试单片机定时器单片机定时器程序单片机定时器初值计算单片机定时器中断52单片机定时器2单片机定时器实验单片机定时器延时程序单片机定时器中断程序单片机定时器工作原理
C6定时器应用程序调试
山东职业学院
定时器程序练习1
要求: ;使用定时器T0产生1ms定时,在P1.0口输出频率为 500Hz的方波。 ;参考课本P118页例1。
Keil uVision入门2--程序调试入门

keil教程KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,这个相对简单的教程。
KEIL C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2 IDE可为它们提供单一而灵活的开发环境。
Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
下面介绍Keil C51软件的使用方法,这应该算一个入门教程,奉献给大家,本人建议结合HZ-C51 豪智单片机学习板实现边学边用进入Keil C51 后,屏幕如下图所示。
几秒钟后出现编辑界启动Keil C51时的屏幕进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。
1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存.3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,ke il c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.4)完成上一步骤后,屏幕如下图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
单片机Keil软件仿真与调试技巧

图5程序调试运行 调试程序时的程序运行控制按钮从左到右依次 为复位、连续运行,暂停、单步、过程单步、执行 完当前子程序、运行到光标当前行。复位按钮模拟 芯片的复位,它将使程序回到最开头处执行。当程 序处于停止状态时复位才有效,程序处于运行状态 时停止按钮才有效。 ①为了方便观察程序调试过程中各变量和
琵稳焉击——————————]Ⅲ阴
单片机Keil软件仿真与调试技巧
一、引言
弹出图1窗口.自动进入编辑工作模式。
单片机软件开发过程中,软件调试遇到的各种 问题常令初学者感到不知所措。实际上.各种仿真 开发软件的程序调试基本方法和技巧大同小异,掌 握正确的程序调试基本技巧。对于排查这些程序错 误问题可以起到举一反三、事半功倍的效果。软件 调试是单片机技术人员必须掌握的重要基本技能。 下面以单片机常用开发软件Keil为例,通过一个项 目任务实例来介绍单片机软件仿真与调试的方法。
二、Keil仿真与调试
点击运行软件Keil uVision2。其调试操作步骤 大体可以分为5步:
1.创建工程 在项目开发中,并不是仅有一个用户源程序就 够了,还要为这个项目选择CPU型号、设置编译和 调试参数.有一些项目还会有多个文件组成。因此 将这些参数设置和所需要的所有文件统称为一个工 程,存放于专门的工程文件夹下。这里先建立一个 工程文件夹如F:kexam。 ①创建新工程。鼠标左键单击主菜单Project一 >New Project。弹出。Create New Project”对话框, 用鼠标选择你要保存工程的文件夹(如FAexam), 输入新工程名(如。exam”).单击。保存”按键。 ②在随后弹出的CPU型号设置对话框中选择 单片机的型号(如。AT89C51”),单击“确定”完 成。
电孑舅作 51
介绍利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法

介绍利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。
通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。
RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是很大的场合,串口通信仍然是很好的选择,有着广阔的使用前景。
在单片机编程中,串口占了很重要的地位。
传统方式串口程序的调试,往往是利用专用的单片机硬件仿真器。
在编写好程序后,利用仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,修正错误。
使用硬件仿真器的确是很有效的方法,但是也有一些缺点:很多仿真器不能做到完全硬件仿真,因而会造成仿真时正常,而实际运行时出现错误的情况;也有仿真不能通过,但是实际运行正常的情况。
对于一些较新的芯片或者是表面贴装的芯片,要么没有合适的仿真器或仿真头;要么就是硬件仿真器非常昂贵,且不容易买到。
有时由于设备内部结构空间的限制,仿真头不方便接入。
有的仿真器属于简单的在线仿真型,仿真时有很多限制。
例如速度不高,实时性或稳定性不好,对断点有限制等,造成仿真起来不太方便。
1、调试前的准备工作下面介绍一种利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法。
使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。
所需的只是:①硬件。
1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线关系如图1所示)。
②串口软件可以是自己编写的专用调试或上下位机通信软件,也可以是通用的串口软件(如串口助手、串口调试等),主要用来收发数据。
如果没有合适的串口调试软件,则可使。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
先说一个概念:调试,在企业程序设计里(我把企业商务类型的软件开发叫企业程序设计,把单片机与驱动程序这样接触底层汇编与硬件相关的程序设计叫底层程序设计),调试一般都用来跟踪变量的赋值过程,以及查看内存堆栈的内容,查看这些内容的目的在于观察变量的赋值过程与赋值情况从而达到调试的目的。
由于企业程序的宿主就是开发它的计算机本身,因此企业程序设计比起底层程序设计,特别是单片机的程序设计调试来的更直观,调试也更方便。
单片机的程序设计调试分为两种,一种是使用软件模拟调试,意思就是用开发单片机程序的计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的,但是软件调试存在一些问题,如计算机本身是多任务系统,划分执行时间片是由操作系统本身完成的,无法得到控制,这样就无法时时的模拟单片机的执行时序,也就是说,不可能像真正的单片机运行环境那样执行的指令在同样一个时间能完成(往往要完成的比单片机慢)。
为了解决软件调试的问题,第二种是硬件调试,硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到硬件调试设备中(这个设备叫仿真器),仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出),仿真器可以接入实际的电路中,然后与单片机一样执行。
同时,仿真器也会返回单片机内部内存与时序等情况给计算机的辅助软件,这样就可以在软件里看到真实的执行情况。
不仅如此,还可以通过计算机断的软件实现单步、全速、运行到光标的常规调试手段。
图1:仿真器
总结一下两者的不同与相同:
相同点:
1:都可以检测单片机执行时序下的片内资源情况(如R0-R7 、PC计数器等)
2:可以实现断点、全速、单步、运行到光标等常规调试手段。
不同:
1:软件调试无法实现直接连接硬件电路的调试,只能通过软件窗口虚拟硬件端口的电
平输出情况而仿真器可以实现与单片机一样的功能的硬件连接,从某种意义上说这个
时候仿真器就是一个单片机。
2:软件调试执行单片机指令的时间无法与真实的单片机执行时间画上等号,也就是说
如果一个程序在单片机中要执行300us,可能在计算机中执行的时间可能会比这个长很
多,而且无法预料。
仿真器则是完全与单片机相同。
3:软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的
程序,软件调试能很好的完成,如果是一个协调系统,可能还需要借助几个单片机仿
真器和相关的仪器才能解决。
4:软件仿真不需要额外花钱,而硬件需要,一个仿真器一般都上千元,同时可以仿真
许多种单片机的工作。
最后,调试一般都是在发生错误与意外的情况下使用的,如果程序能正常执行调试很多时候是用不上的,所以最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。
下面将具体介绍如何使用Keil uVision 来软件调试单片机程序。
首先:打开一个已经编译通过的单片机项目(如何新建与编译单片机程序项目这里省略)
选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试
接下来看到的窗口就是调试窗口了:
下面具体说说相关子窗口的功能:
1:左侧的ProjectWorkspace
Regs是片内内存的相关情况值,Sys是系统一些累加器、计数器等。
Regs很简单就不多说。
具体介绍一下Sys
a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。
b 寄存器B ,主要用于乘法和除法操作
sp
sp_max
dptr 数据指针DPTR
PC $
states 执行指令的数量
sec 执行指令的时间累计(单位秒)
psw 程序状态标志寄存器PSW,八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。
p 奇偶标志P。
反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。
f1
ov 溢出标志位OV。
MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。
rs
f0
ac 辅助进位标志AC。
又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。
cy 进位标志CY(PSW 7)。
它表示了运算是否有进位(或借位)。
如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0
由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)
根据指令执行的不同上述值会有相应的变化,也正是为了监测这些在单片机中看不到的值而达到调试的目的。
虽然软件调试无法实现硬件调试那样的信号输出,但是可以通过软件窗口的模拟监测输出信号的高低电平以及单片机相关端口的变化。
上图所示,Port0,Port1,Port2,Port3就对应于单片机的四个P0,P1,P2,P3 口,共32个针脚。
这是全部打开后的效果。
有了输出,就应该有输入的设置:
这个按钮可以打开输入预设窗口,输入值窗口如下:
选择不同的Int Source 会有不同的Selected Interrupt的变化,通过选择与赋值达到模拟输入的目的。
接下来是串口的设置:
这是设置串口的窗口
监测窗口数据还有一个窗口:
点击:将会出现,这个窗口可以监测从串口输出的ASCII代码。
关于串口的问题,以后我会有专门的文章介绍,这里就这样大致介绍一下。
最下面还有一个定时器的设置:
3个定时器与一个看门狗,设置定时器的数量与工程选择的单片机种类有关系,如果是8051就只有2个定时器,如果是选择8052 就有3个定时器了。
定时器的设置很简单:
参考的数很多,这里暂时省略了,以后以专门的篇幅介绍。
下面再介绍一下一些常用的调试按钮:
就是Reset ,相当于单片机最简系统的复位按钮,按下后,所有的系统状态将变成初始状态
这是全速运行,相当于单片机的通电执行。
这个就是停止全速运行的按钮。
step into 逐语句;进入并单步执行;单步执行
step over 逐过程
step out 跳出
执行到断点处
可以在代码所在窗口的最左边右击按钮插入一个断点,如下图所示:
有了这个功能,你就可以控制监控要执行到某位置时系统的状态。
最后在介绍一下一个很实用的功能:
这个是Disassembly Windows,按下后可以把C51 Disassembly 为相应的汇编语言,如果你有相应的汇编知识的话就可以对比C51 与汇编的对比了。
由于汇编的效率高很多,这也可以作为查看C51执行效率的一个方法。
上图中就可以看出,C51 代码是如何被解释为汇编的。
其实调试还有很多的功能,我这里只是介绍了一小部分,希望能起到抛砖引玉的作用,更多的细节需要你自己去发掘与学习。