使用Keil软件模拟调试单片机串行口
keil软件调试单片机程序
先说一个概念:调试,在企业程序设计里(我把企业商务类型的软件开发叫企业程序设计,把单片机与驱动程序这样接触底层汇编与硬件相关的程序设计叫底层程序设计),调试一般都用来跟踪变量的赋值过程,以及查看内存堆栈的内容,查看这些内容的目的在于观察变量的赋值过程与赋值情况从而达到调试的目的。
由于企业程序的宿主就是开发它的计算机本身,因此企业程序设计比起底层程序设计,特别是单片机的程序设计调试来的更直观,调试也更方便。
单片机的程序设计调试分为两种,一种是使用软件模拟调试,意思就是用开发单片机程序的计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的,但是软件调试存在一些问题,如计算机本身是多任务系统,划分执行时间片是由操作系统本身完成的,无法得到控制,这样就无法时时的模拟单片机的执行时序,也就是说,不可能像真正的单片机运行环境那样执行的指令在同样一个时间能完成(往往要完成的比单片机慢)。
为了解决软件调试的问题,第二种是硬件调试,硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到硬件调试设备中(这个设备叫仿真器),仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出),仿真器可以接入实际的电路中,然后与单片机一样执行。
同时,仿真器也会返回单片机内部内存与时序等情况给计算机的辅助软件,这样就可以在软件里看到真实的执行情况。
不仅如此,还可以通过计算机断的软件实现单步、全速、运行到光标的常规调试手段。
图1:仿真器总结一下两者的不同与相同:相同点:1:都可以检测单片机执行时序下的片内资源情况(如R0-R7 、PC计数器等)2:可以实现断点、全速、单步、运行到光标等常规调试手段。
不同:1:软件调试无法实现直接连接硬件电路的调试,只能通过软件窗口虚拟硬件端口的电平输出情况而仿真器可以实现与单片机一样的功能的硬件连接,从某种意义上说这个时候仿真器就是一个单片机。
英飞凌单片机关于keilC166的使用
关于Keil C166的使用单片机开发除了必要的硬件同样也离不开软件,我们写的程序要转化成CPU所能执行的机器码有两种方法:一是手工汇编,二是机器汇编。
机器汇编是通过汇编软件将源程序编程机器码。
Keil软件是目前最流行的开发单片机的软件工具,Keil编译器提供了包括C编译器,宏汇编,连接器,库管理和一个功能强大的仿真调试器等在内的完整的开发方案。
通过一个集成开发环境(uVision)将这些部分组合在一起。
KEIL软件有支持8位单片机的Keil C 51系列和支持16位单片机的Keil C 166系列。
在项目开发过程中并不是仅有一个源程序就足够了,还要为项目选择CPU确定编译,汇编,连接的参数,指定调试的方式,有一些项目还会由多个文件组成。
为管理和使用方便,Keil 引入了工程(Project)概念。
将这些参数和所需要的文件都加在一个工程中,只能对工程进行编译和连接等操作。
工程的详细设置:以下针对在使用XC164CS评估板过程中在Keil C166环境下的一些设置谈一下。
首先点击Project窗口中的Target1 Project->Option for Target1 “target 1”即出现对工程设置的对话框。
菜单如下图1:图1以下针对各个标签详细说明:Device选择所使用的CPU(即所选用的芯片)。
KEIL支持很多种CPU,当选中一款芯片以后右侧窗口还会有相应的芯片介绍。
此处选择Infineon XC164CS.系列芯片作为CPU。
Target窗口设置如下:图2这里可以设置时钟频率,片内和片外资源的选择及地址的设置。
其中Memory Model用于设置RAM使用情况,KEIL C 166编译器可支持7种存储类型。
TINY CPU处于非分段工作方式下,可产生高效的16位线性地址,并把代码和数据限制在64KB种。
不能使用far, huge, xhuge存储类型。
SAMLL 使用分段CPU方式,同样产生高效的代码,但代码和数据不再限制再64KB中,用户可通过far, huge, xhuge引用变量和函数COMPACT 一般用于代码少而数据多的场合HCOMPACT 一般用于代码多而数据少的场合MEDIUM 所有的函数调用默认为far调用,一般用于代码多而数据少的场合 LARGE 所有的函数调用默认为far调用,一般用于代码和数据多的场合HLARGE 所有的函数调用默认为far调用,一般用于代码和数据多的场合,不适合于C166系列CPU在仿真过程中如果使用片内FLASH,则选中Use On-chip ROM在仿真过程中如果使用片外RAM,则取消Use On-chip ROM复选框并设置ROM和RAM 空间起始地址及大小。
单片机串行通信实验报告(实验要求、原理、仿真图及例程)
《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。
2.掌握Keil与Proteus的联调技巧。
3.掌握串行通信在单片机系统中的使用。
4.掌握调度器设计的基础知识:函数指针。
二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。
b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。
i.甲机发送“A”,控制乙机LED1闪烁。
ii.甲机发送“B”,控制乙机LED2闪烁。
iii.甲机发送“C”,控制乙机LED1,LED2闪烁。
iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。
c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。
两机的程序要分别编写。
d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。
(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。
2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。
b.单片机把计算结果向PC机发送字符串。
c.PC机接收计算结果并显示出来。
d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。
单片机原理keil使用教程
keil教程Keil 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
下面介绍Keil软件的使用方法,这应该算一个入门教程,进入Keil 后,屏幕如下列图所示。
几秒钟后出现编辑界启动Keil uVision4时的屏幕。
简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。
1) 对于单片机程序来说,每个功能程序,都必须要有一个配套的工程〔Project〕,即使是点亮LED这样简单的功能程序也不例外,因此我们首先要新建一个工程,打开我们的Keil软件后,点击:Project-->New uVision Project...然后会出现一个新建工程的界面,如图2-8所示。
2)因为是第一个实验,所以我们在硬盘上建立了一个实验1 的目录,然后把LED这个工程的路径指定到这里,这样方便今后管理程序,不同的功能程序放到不同的文件夹下,并且给这个工程起一个名字叫做LED,软件会自动添加扩展名LED.uvproj。
如图2-9所示。
下次要打开LED这个工程时,可以直接找到文件夹,双击这个.uvproj 文件就可以直接打开了。
图2-9 保存工程3〕保存之后会弹出一个对话框,这个对话框让我们选择单片机型号。
因为Keil软件是外国人开发的,所以我们国内的STC89C52RC并没有上榜,但是只要选择同类型号就可以了。
Keil 几乎支持所有的51核的单片机,这里还是以大家用的比较多的Atmel 的AT89S51来说明,如下列图2-10、图2-11所示,选择AT89S51之后,右边栏是对这个单片机的基本的说明,然后点击确定。
图2-10 选择芯片公司图2-11 选择具体芯片4〕点击OK之后,会弹出一个对话框,如图2-12所示,每个工程都需要一段启动代码,如果点“否”编译器会自动处理这个问题,如果点“是”,这部分代码会提供应我们用户,我们就可以按需要自己去处理这部分代码,那这部分代码在我们初学51的这段时间内,一般是不需要去修改的,但是随着技术的提高和知识的扩展,我们就有可能会需要了解这块内容,因此这个地方我们选一下“是”,让这段代码出现,但是我们暂时不需要修改它,大家知道这么回事就可以了。
使用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单片机串口调试用户程序的方法
介绍利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。
通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。
RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是很大的场合,串口通信仍然是很好的选择,有着广阔的使用前景。
在单片机编程中,串口占了很重要的地位。
传统方式串口程序的调试,往往是利用专用的单片机硬件仿真器。
在编写好程序后,利用仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,修正错误。
使用硬件仿真器的确是很有效的方法,但是也有一些缺点:很多仿真器不能做到完全硬件仿真,因而会造成仿真时正常,而实际运行时出现错误的情况;也有仿真不能通过,但是实际运行正常的情况。
对于一些较新的芯片或者是表面贴装的芯片,要么没有合适的仿真器或仿真头;要么就是硬件仿真器非常昂贵,且不容易买到。
有时由于设备内部结构空间的限制,仿真头不方便接入。
有的仿真器属于简单的在线仿真型,仿真时有很多限制。
例如速度不高,实时性或稳定性不好,对断点有限制等,造成仿真起来不太方便。
1、调试前的准备工作下面介绍一种利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法。
使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。
所需的只是:①硬件。
1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线关系如图1所示)。
②串口软件可以是自己编写的专用调试或上下位机通信软件,也可以是通用的串口软件(如串口助手、串口调试等),主要用来收发数据。
如果没有合适的串口调试软件,则可使。
单片机实验报告KeilC的使用与汇编语言上机操作
单片机实验报告KeilC的使用与汇编语言上机操作单片机实验报告:Keil C的使用与汇编语言上机操作一、实验目的1.掌握Keil C的使用方法,了解其集成开发环境下的单片机编程流程。
2.掌握汇编语言的基本语法和指令,通过上机操作熟悉其应用。
3.通过实际操作,增强动手能力和解决问题的能力。
二、实验设备1.单片机开发板2.Keil C软件3.电脑及编程器三、实验原理及步骤1.Keil C使用介绍Keil C是一款广泛使用的单片机集成开发环境,它提供了包括编译器、调试器、仿真器等在内的全套开发工具。
使用Keil C可以方便地进行代码编写、编译、调试和模拟,适用于多种单片机开发。
2.汇编语言基础汇编语言是一种直接与硬件相关的编程语言,它通过特定的指令集直接控制硬件进行操作。
汇编语言具有高效、直接的特点,但编写和理解相对困难。
本实验主要学习并熟悉汇编语言的基本语法和指令。
3.实验步骤(1) 在Keil C中创建新项目,选择合适的单片机型号。
(2) 创建源文件,编写汇编程序。
(3) 对源文件进行编译,生成目标文件。
(4) 将目标文件下载到单片机开发板进行调试和运行。
四、实验内容及分析1.在Keil C中创建新项目并选择单片机型号。
在创建项目时,需要选择正确的单片机型号,这将直接影响到程序的编写和运行。
根据实际需要,我们选择了AT89C51作为实验用的单片机。
2.创建源文件并编写汇编程序。
在Keil C中,可以方便地创建新的源文件,并在其中编写汇编程序。
例如,下面是一个简单的汇编程序,用于点亮开发板上的LED灯:MOV P1, #1 // 将1赋值给P1端口此程序将使P1端口的所有引脚输出高电平,从而点亮LED灯。
3.对源文件进行编译并生成目标文件。
在Keil C中,可以通过简单的点击完成编译操作。
编译成功后,将生成一个目标文件(如*.obj文件)。
4.将目标文件下载到单片机开发板进行调试和运行。
在Keil C中,可以通过仿真功能模拟程序的运行,也可以通过调试功能查看程序运行过程中的细节信息。
单片机开发与仿真软件keilc51的使用
单片机开发与仿真软件Keil C51的使用一、Keil C51 操作入门Keil C51 简介Keil C51 是德国知名软件公司Keil(现已并入ARM 公司)开发的基于8051 内核的微控制器软件开发平台,是目前开发8051 内核单片机的主流工具。
Keil 51支持汇编语言、C语言等各种开发语言。
其中,uVision2集成开发环境包含项目管理、源代码编辑和强大的程序调试环境。
uVision2调试器是一个强大的全特性调试器,允许用户在PC机上完全模拟目标程序、指令集和片内外围功能。
实验所用的是Keil C51 评估版。
Keil C51 的启动双击桌面上的“Keil uVision2”图标,启动Keil C51程序,启动界面如图1所示。
图1 Keil C51的启动界面建立第1 个Keil C51 程序Keil C51 是一个功能很强大的软件,但是使用起来并不复杂。
现在就通过建立一个简单的LED(发光二极管)闪烁发光的实例来初步掌握Keil C51的基本用法。
硬件电路参见图2,单片机I/O 输出低电平可点亮LED。
图2 LED 闪烁发光电路●新建工程。
执行Keil C51 软件的菜单“Project | N ew Project…”,弹出一个名为“Create New Project”的对话框。
先选择一个合适的文件夹准备来存放工程文件,比如“E:\Project\LedFlash”,其中“LedFlash”是新建的文件夹。
建议:今后每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理,并养成良好的习惯。
最后,为工程取名为“LedFlash”,并保存。
参见图3。
图3 新建Keil C51 工程●选择CPU。
紧接着,Keil C51 提示选择CPU 器件。
8051 内核单片机最早是由鼎鼎大名的Intel 公司发明的,后来其他厂商如Philips 、Atmel 、Winbond 等先后推出其兼容产品,并在8051 的基础上扩展了许多增强功能。
C语言基础知识,Keil软件的使用,流水灯、数码管、74HC573、74HC595介绍.doc
第一节单片机的用途单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统.这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务.单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
早期的单片机都是8位或4位的。
其中最成功的是INTEL 的8031,因为简单可靠而性能不错获得了很大的好评。
此后在8031上发展出了MCS51系列单片机系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。
随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。
keilc51集成开发环境的使用
Keil C51集成开发环境的使用Keil C51软件可以从相关网站下载并安装。
安装好后,双击桌面快捷图标或在“开始”菜单中选择Keil μVision3,启动Keil μVision3集成开发环境,启动后界面如图4-3所示。
图4-3 Keil μVision3启动后的集成开发环境界面(一)创建项目Keil μVision3中有一个项目管理器,用于对项目文件进行管理。
它包含了程序段环境变量和编程有关的全部信息,为单片机程序的管理带来了很大的方便。
创建一个新项目的操作步骤如下:(1)启动μVision3,创建一个项目文件,并从器件数据库中选择一款合适的单片机型号。
(2)创建一个新的源程序文件,并把这个源文件添加到项目中;(3)为该单片机芯片添加或配置启动程序代码;(4)设置工具选项,使之适合目标硬件;(5)编译项目并创建一个*.hex文件。
下面以本章任务为例分别介绍每一步的具体操作。
1.新建项目文件单击菜单“Project”→“New Project”命令,弹出如图4-4所示的新建项目对话框,指定保存路径,建议每个项目使用一个独立文件夹,例如本项目保存在“第4章”文件夹;然后,在“文件中名”输入项目名称,例如“4-1”,单击“保存”按钮即完成新项目的创建(系统默认扩展名为“.uv2”)。
输入文件图4-4 新建项目对话框此时弹出选择单片机的型号对话框,如图4-5所示,展开Atmel系列单片机,选择“AT89C51”,单击“确定”按钮完成设备的选择。
图4-5 选择单片机的型号对话框单片机型号选择结束后,在μVision3工作界面左边的项目管理器中新增加了一个“Target 1”目标1文件夹,如图4-6所示。
图4-6 项目管理器中新增“Target 1”对话框2.新建源程序文件单击菜单“File”→“New”命令,就可以创建一个源程序文件。
该命令会打开一个空的编辑器窗口,默认名为“Text 1”,输入如下源程序:/******************************************************************名称:流水灯控制模块名:AT89C51,74LS373功能描述:当开关打开时,LED自上而下依次点亮;当开关闭合时,LED从下向上依次点亮。
KEIL中如何用虚拟串口调试串口程序
KEIL中如何用虚拟串口调试串口程序以前没接触过串口,一直都以为串口很复杂。
最近在做一个新项目,用单片机控制GSM模块。
单片机和GSM模块接口就是串口。
调试完后觉得串口其实很简单。
“不过如此”。
这可能是工程师做完一个项目后的共同心态吧。
下面详细介绍下如何用虚拟串口调试串口发送接收程序。
需要用到三个软件:KEIL,VSPD XP5(virtual serial ports driver xp5.1虚拟串口软件),串口调试助手。
1、首先在KEIL里编译写好的程序。
2、打开VSPD,界面如下图所示:左边栏最上面的是电脑自带的物理串口。
点右边的add pair,可以添加成对的串口。
一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。
3、接下来的一步很关键。
把KEIL和虚拟出来的串口绑定。
现在把COM3和KEIL绑定。
在KEIL中进入DEBUG模式。
在最下面的COMMAND命令行,输入MODE COM3 4800,0,8,1(设置串口3的波特率、奇偶校验位、数据位、停止位,打开COM3串口,注意设置的波特率和程序里设置的波特率应该一样)ASSIGN COM3 <SIN> SOUT(把单片机的串口和COM3绑定到一起。
因为我用的单片机是AT892051,只有一个串口,所以用SIN,SOUT,如果单片机有几个串口,可以选择S0IN,S0OUT,S1IN,S1OUT。
)4、打开串口调试助手可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率4800,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。
打开COM4。
现在就可以开始调试串口发送接收程序了。
可以通过KEIL发送数据,在串口调试助手中就可以显示出来。
也可以通过串口调试助手发送数据,在KEIL中接收。
这种方法的好处是不用硬件就可以调试。
这是网上一篇文章介绍的方法,联系我实际的使用做了整理。
如何使用串口调试助手Keil软件仿真的串口调试技巧
在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的构成部分。
凡是使用单片机串口通过RS232/ RS485电平转换芯片与上位机毗连,以进行上位机与下位机的数值互换、参量设置、构成收集以及各种外部设备的毗连等。
RS232/ RS485串行接口总线具备成本低、简略可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数值量不是很大的场所,串口通信仍然是很好的选择,有着广阔的使用远景。
在单片机编程中,串口占了很重要的地位。
传统方式串口程序的调试,往往是哄骗专用的单片机硬件仿真器。
在编写好程序后,哄骗仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,批改错误。
使用硬件仿真器的确是很有效的方法,但是也有一些缺点:很多仿真器不克不及做到完全硬件仿真,因而会造成仿真时正常,而实际运行时呈现错误的环境;也有仿真不克不及通过,但是实际运行正常的环境。
对于一些较新的芯片或者是外貌贴装的芯片,要么没有合适的仿真器或仿真头;要么就是硬件仿真器非常昂贵,且不易买到。
有时候由于设备内部结构空间的限制,仿真头不利便接入。
有的仿真器属于简略的在线仿真型,仿真时有很多限制。
例如速度不高,及时性或不改变性别不好,对断点有限制等,造成仿真起来不太利便。
1 调试前的准备工作底下先容一种哄骗Keil的软件仿真功能来实现51单片机串口调试用户程序的方法。
使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板。
所需的只是:①硬件。
1台普通计算机(需要带有2个标准串口)和1根串口线(两头都是母头,连线瓜葛如图1所示)。
②串口软件可所以自己编写的专用调试或上下位机通信软件,也可所以通用的串口软件( 如串口助手、串口调试等) ,首要用来收发数值。
如果没有合适的串口调试软件,则可使用作者编写的一个免费的串口小工具TurboCom。
除了与其它软件一样的数值收发功能外,它还有定时轮流发送自界说数值帧和自动应答(接收到指定命据帧后,自动返回相应的数值帧)这两个很有用的功能,特别适合于老化测试。
Keil 实例教程(3) -- keil 的程序调试窗口
Keil 程序调试窗口上一讲中我们学习了几种常用的程序调试方法,这一讲中将介绍Keil 提供各种窗口如输出窗口、观察窗口、存储器窗口、反汇编窗口、串行窗口等的用途,以及这些窗口的使用方法,并通过实例介绍这些窗口在调试中的使用。
一、程序调试时的常用窗口Keil 软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows )、观察窗口(Watch&Call Statck Windows )、存储器窗口(Memory Window )、反汇编窗口(Dissambly Window )串行窗口(Serial Window )等。
进入调试模式后,可以通过菜单View 下的相应命令打开或关闭这些窗口。
图1是输出窗口、观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。
进入调试程序后,输出窗口自动切换到Command 页。
该页用于输入调试命令和输出调试信息。
对于初学者,可以暂不学习调试命令的使用方法。
1、存储器窗口存储器窗口中可以显示系统中各种内存中的值,通过在Address 后的编缉框内输入“字母:数字”即可显示相应内存值,其中字母可以是C 、D 、I 、X ,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM 空间,数字代表想要查看的地址。
例如输入D :0即可观察到地址0开始的片内RAM 单元值、键入C :0即可显示从0开始的ROM 单元中的值,即查看程序的二进制代码。
该窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择,该菜单用分隔条分成三部份,其中第一部份与第二部份的三个选项为同一级别,选中第一部份的任一选项,内容将以整数形式显示,而选中第二部份的Ascii 项则将以字符型式显示,选中Float 项将相邻四字节组成的浮点数形式显示、选中Double 项则将相邻8字节组成双精度形式显示。
2014 Keil_C51_软件的使用
(1)新建工程 单击“Project”菜单,在弹出的下拉菜单中选中“New Project”选项,如图11-3所 示,输入工程文件的名字(如ads),选择要保存的路径(如保存到C51目录里),然 后单击“保存”按钮,如图4所示。
图3 新建工程菜单的选择
图4 工程文件的存盘
(2)选择单片机的型号 在第(1)步后会弹出一个对话框,要求选择单片机的型号,如图 11-5所示。Keil C51几乎支持所有的51内核的单片机,如选择Atmel 的“AT89C1051”,右边栏是对这个单片机的基本的说明,然后单击 “确定”按钮。
(2)“Memory Model”有3个选项,如图13所示。
图13 Memory
Model选项
Small:变量存储在内部RAM中,默认选Small。 Compact:变量存储在外部RAM里,使用8位页间接寻址。 Large:变量存储在外部RAM里,使用16位间接寻址。 三种存储方式都支持内部256B和外部64KB的RAM,区别是变量默认的存储位置。
图1
启动Keil C51时的屏幕
图2 Keil C51的应用程序界面
Keil C51是美国Keil Software公司出品的51系列兼容 单片机C语言软件开发系统,与汇编相比,C语言在 功能上、结构性、可读性、可维护性上有明显的优势, 因而易学易用。用过汇编语言后再使用C来开发,体 会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开 发调试工具,全Windows界面。另外重要的一点, 只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的 汇编代码很紧凑,容易理解。在开发大型软件时更能 体现高级语言的优势。
1.2
单片机原理及接口技术试题与答案
1.单片机复位后,SP PC I/O口的内容为()。
= 60H PC = 00H P0 = P1 = P2 = P3 = FFH= 00H PC = 0000H P0 = P1 = P2 = P3 = 00H= 07H PC = 0000H P0 = P1 = P2 = P3 = FFH= 00H PC = 00H P0 = P1 = P2 = P3 = 00H答案:C分数:2题型:单选题有四个工作寄存器区,由PSW状态字中的RS1和RS0两位的状态来决定,单片机复位后,若执行 SETB RS0 指令,此时只能使用()区的工作寄存器。
A.Ⅰ区B.Ⅱ区C.Ⅲ区D.Ⅳ区答案:B分数:2题型:单选题3、ATMEL的89C51驱动能力最强的并行端口为()。
答案:A分数:2题型:单选题4、读片外部数据存储器时,不起作用的信号是()。
A. /RDB. /WEC. /PSEN答案:C分数:2题型:单选题5、利用KEIL软件进行仿真调试时,在执行调用指令时,()调试可跟踪到子程序内部并逐条执行子程序内部的各条指令。
A.暂停B.调试C.单步D.连续运行答案:C分数:2题型:单选题6.已知:MOV A,#28HMOV R0,#20HMOV @R0,AANL A, #0FHORL A, #80HXRL A, @R0执行结果A的内容为()。
A. A0H答案:A分数:2题型:单选题7.在进行BCD码运算时,紧跟加法运算指令后面的指令必须是()指令。
AD.由实际程序确定答案:B分数:2题型:单选题8.在MCS-51中,需要外加电路实现中断撤除的是()。
A.定时中断B.脉冲方式的外部中断C.外部串行中断D.电平方式的外部中断答案:D分数:2题型:单选题9、关于定时器,若振荡频率为12 MHz,在方式1下最大定时时间为()。
B. msC.答案:B分数:2题型:单选题10、控制串行口工作方式的寄存器是()。
答案:C分数:2题型:单选题11、开机复位后,CPU使用的是第0组工作寄存器,地址范围是()。
单片机KEIL软件的使用及P1口控制实验
KEIL软件的使用及P1口控制一实验目的1、学习KEIL软件的使用方法及单片机实验平台2、学习P1口的控制方法3、学习延时子程序的编写和单片机延时计算方法二实验原理1、KEIL软件是德国Keil公司开发的基于Windows平台的单片机集成开发环境软件。
KEIL 软件包括编译器、连接器、库管理器和仿真调试器,通过集成开发环境(μVision)将这些部分组合在一起。
2、P1口是一个八位的准双向I/O口,其中一位的内部结构如图所示,输出驱动电路有一只场效应管和一个上拉电阻组成。
每一根口线都可以分别定义成输入或输出线。
做输出线时,写入“1”,则Q’为“0”,T1截止,P1.X输出高电平,写入“0”,则Q’为“1”,T1导通,P1.X输出低电平。
做输入线时,必须先向该口线写“1”,使T1截止。
3、程序延时分析方法:延时=指令个数X机器周期机器周期=12÷nMHZ n为单片机时钟频率三实验要求与步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
(并口线与右侧的8个插孔是串联等效的。
)2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM 源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、(先接通仿真器电源再开启试验箱电源)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
注:软件具体操作见附录实验(二):用P1.0、P1.1作输入接两个置位开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
单片机KEIL软件的使用及P1口控制实验
KEIL软件的使用及P1口控制一实验目的1、学习KEIL软件的使用方法及单片机实验平台2、学习P1口的控制方法3、学习延时子程序的编写和单片机延时计算方法二实验原理1、KEIL软件是德国Keil公司开发的基于Windows平台的单片机集成开发环境软件。
KEIL 软件包括编译器、连接器、库管理器和仿真调试器,通过集成开发环境(μVision)将这些部分组合在一起。
2、P1口是一个八位的准双向I/O口,其中一位的内部结构如图所示,输出驱动电路有一只场效应管和一个上拉电阻组成。
每一根口线都可以分别定义成输入或输出线。
做输出线时,写入“1”,则Q’为“0”,T1截止,P1.X输出高电平,写入“0”,则Q’为“1”,T1导通,P1.X输出低电平。
做输入线时,必须先向该口线写“1”,使T1截止。
3、程序延时分析方法:延时=指令个数X机器周期机器周期=12÷nMHZ n为单片机时钟频率三实验要求与步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
(并口线与右侧的8个插孔是串联等效的。
)2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM 源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、(先接通仿真器电源再开启试验箱电源)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
注:软件具体操作见附录实验(二):用P1.0、P1.1作输入接两个置位开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
使用keiL中的printf和scanf进行串口的调试
使用keiL中的printf和scanf进行串口的调试1、printf( )和scanf(在包含在stdio.h中库函数printf( )的发送原理:首先在初始化时要把TI置1,如果不这样做,你的程序是会一直在JNB TI,$这条指令上跑,:printf( ) 库函数发送流程图2、使用C51输入输出函数都是通过串行口工作的,因此,要使用这类函数必须对单片机的串行口进行设置和初始化,如串口模式的选择和波特率的设定等等。
在需要使用printf函数时需要对串口进行初始化:SCON= 0x52; /*0101,0010:方式1,REN=1允许接收,8-bit UART,TI= 1;RI=0 */ PCON=0; /*SMOD=0*/TMOD |= 0x20; /*TMOD:定时器T1,工作模式2, 8位自动重载方式,在这里用\是为不影响T0的工作*/TH1= 0xf3; /*当波特率为2400时,定时器初值*/ TL1= 0xf3; TR1= 1; /*定时器T1开始运行*/TI= 1; /*在SCON中已经设置,允许发送数据*/3、proteus中仿真电路 RXDTXD库函数scanf( )的接收原理:U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/ A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/ INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111 21314151617RTSCTS18XTAL2P116273849DCDDSRRXDRTSTXDCTSDTRRI9RST293031PSENALEEAER RORCOMPIM12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C31RXDTXDRTSCTS1(1)(2)(3)(4)数码管,用于观察是否从串口读得数据上面虚拟终端观察单片机接受的外部信号是否有下面虚拟终端观察单片机发送的信号P1是虚拟串口COMPIM,必须与虚拟串口软件联用软件虚拟仪器设置2运行(1)产生HEX(2)装载HEX(3)打开虚拟串口3实验结果:实现了单片机此案串口发送提示信号,please input(1-9),等待从串口反馈的的信号,当在串口调试器中发送去输入7,发送后,上面一个虚拟终端显示7,当单片机接受该信号后,显示出来,并进行运算,结果再次送到串口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用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工作在方式2
TH1 = 0XF3; //波特率设为2400bps
TL1 = 0XF3;
TR1 = 1; //启动Timer1
ES = 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. 最后进行模拟
完成串行口配置和数据处理之后,就可以开始模拟调试了。
通过单步执行等调试方法来检查代码的正确性。
在模拟中,我们还可以模拟不同的串口各项参数以及负载大小,来观察程序效率和性能的变化。
三、结论
在这篇文章中,我们学习了如何使用Keil软件模拟调试单片机串行口。
我们可以设置串口方式以及各种参数来实现数据的快速传输和处理。
通过Keil的模拟工具,我们可以大大降低程序运行的风险,并在程序上下推出最佳性能的基础上,优化和扩展其功能。