keil下C51启动代码详解
Keil C51的开关语句目标代码分析
Keil C51的开关语句目标代码分析∗侯济恭【摘要】Keil C5 1 is currently the most popular embedded programming language,this paper analyzes the compiling method and effect of its"switch" sentence.In general,the branches number of the"switch-case" sentence is less than 8,the object codes are divided into three layers,that are the head code,the transfer control code and the switch body.When the branches number of the more complex"switch-case"sentence is more than 8,the target codes are divided into four layers,which are the head code,the transfer control code,the transfer sheet and the switch body.Considering the code execution efficiency,the transfer control code of the system library function is different corresponding to different data types of the selected factor.%分析目前流行的Keil C51对switch 的编译方法及其编译效果。
Keil C51使用详解
Keil C51使用详解keilc51使用详解v1.0电子设计世界!版权所有,热烈欢迎贴文,切勿修正并标明原文。
留存一切权利。
第一章keilc51开发系统基本知识 (6)1第一节系统概述 (6)第二节keilc51单片机软件开发系统的整体结构...6第三节keilc51工具包的加装...71.c51fordos72.c51forwindows的安装及注意事项:...7第四节keilc51工具包各部分功能及使用简介...71.c51与a51.72.l51和bl51.83.dscope51,tscope51及monitor51.84.ishell及uvision.9第二章keilc51软件使用详解 (10)第一节keilc51编译器的控制指令...101.源文件掌控类 (10)2.目标文件(object)控制类:...103.列表文件(listing)控制类:...10第二节dscope51的使用...111.dscope51fordos112.dscopeforwindows12第三节monitor51及其使用...131.monitor51对硬件的要求...132.mon51的使用...133.mon51的配置...134.串口连接图:...135.mon51命令及使用...14第四节集成开发环境(ide)的使用...141.ishellfordos的使用 (14)22.uvisionforwindows的使用 (15)第三章keilc51vs标准c..15第一节keilc51扩展关键字...15第二节内存区域(memoryareas):...161.pragramarea:...162.internaldatamemory:163.externaldatam emory.162.可位串行区表明20h-2fh..18第七节keilc51指针...181.通常指针...182.存储器指针...183.指针切换...18第八节keilc51函数...191.中断函数声明:...192.通用型存储工作区 (19)3.选通用存储工作区由usingx声明,见上例。
Keil C51 使用详解
Keil C51使用详解V1.0第一章KEIL C51开发系统基本知识 (6)第一节系统概述 (6)第二节KEIL C51单片机软件开发系统的整体结构 (6)第三节KEIL C51工具包的安装 (7)1. C51 for Dos (7)2. C51 for Windows的安装及注意事项: (7)第四节KEIL C51工具包各部分功能及使用简介 (7)1. C51与A51 (7)2. L51和BL51 (8)3. DScope51,Tscope51及Monitor51 (8)4. Ishell及uVision (9)第二章KEIL C51软件使用详解 (10)第一节KEIL C51编译器的控制指令 (10)1.源文件控制类 (10)2.目标文件(Object)控制类: (10)3.列表文件(listing)控制类: (10)第二节DSCOPE51的使用 (11)1. dScope51 for Dos (11)2. dScope for Windows (12)第三节MONITOR51及其使用 (13)1. Monitor51对硬件的要求 (13)2. Mon51的使用 (13)3. MON51的配置 (13)4.串口连接图: (13)5. MON51命令及使用 (14)第四节集成开发环境(IDE)的使用 (14)1. Ishell for Dos的使用 (14)2. uVision for windows的使用 (15)第三章KEIL C51 VS 标准C (15)第一节KEIL C51扩展关键字 (15)第二节内存区域(MEMORY AREAS): (16)1. Pragram Area: (16)2. Internal Data Memory: (16)3. External Data Memory (16)4. Speciac Function Register Memory (16)第三节存储模式 (16)1. Small模式 (16)2. Compact模式 (17)3. large模式 (17)第四节存储类型声明 (17)第五节变量或数据类型 (17)第六节位变量与声明 (17)1. bit型变量 (17)2.可位寻址区说明20H-2FH (18)第七节KEIL C51指针 (18)1.一般指针 (18)2.存储器指针 (18)3.指针转换 (18)第八节KEIL C51函数 (19)1.中断函数声明: (19)2.通用存储工作区 (19)3.选通用存储工作区由using x声明,见上例。
Keil C51 使用
Keil 软件的使用一、软件启动在桌面上双击,或在开始→程序→。
二、界面图1、首先建立一个工程点击Project→New Project 如下图所示。
则会出现如下图。
注意工程保存在什么位置(要方便自己查找),输入文件,保存类开会自动生成,不用管,然后点保存,则会出如下图则会出现。
则出现可点是或否,影响不大。
则会出现:这样应建立了一个新的工程。
可在保存的位置找工程文件名。
2、建立一个汇编语言文件。
点击File→New,如下图所示则出现Text1为文件名,先要保存一下。
选为文件保存的位置,文件名要注意一下,用汇编语言编写则后缀(扩展名)为.ASM,如果用C 语言编写则为.C。
设置好后点击保存,则程序文件应建立好了。
在保存的位置可找到该文件。
3、程序录入编辑及编译(1)在程序编辑区录入程序(2)将程序文件添加到工程文件中右键单击Source Group1如下图则出现点击,Add Files to Group Source Group 1 则出现如下图选好文件类型为C Source file (*.C),再在保存位置中找到刚才编辑好的程序文件,然后点Add 即可。
(3)必要的参数设置点击Project→Option for Target则会出现如下图:在Target 选项卡中设置好晶振频率。
再选Output选项卡,如下图:设置好各项后点击确定,必要的参数应设置完毕。
(4) 程序编译检查点击Project→Build target files 如下图所示则在界面的最下面出现指示:如果有错误要改正程序的错误,再进行编译,一直到没有错误为止,要生成HEX文件,我们才能下载到单片机中。
程序下载到单片机的程序应用1、启动软件:在桌面找到图,双击将会出现如下图必须要选择正确的端口及单片机型号,然后调入从KEIL C51编译生成的HEX文件。
2、调入HEX文件:左键单击调入FLASH,如下图所示:将会出现HEX文件选择窗口:选择正确文件后,点打开,则出现如下图3、将HEX文件下载到单片机芯片选择正确后,检查单片机是否连接好,准备好后就点击自动,则会出现如下图,程序下载完成后,就会看到单片机板上LED灯在点亮了。
51单片机启动代码
; Version 8.01
;
; *** <<< Use Configuration Wizard in Context Menu >>> ***
;------------------------------------------------------------------------------
表1
Name
Description
IDATALEN
Specifies the number of bytes of idata to clear to 0. The default is 80h because most 8051 derivatives contain at least 128 bytes of internal data memory. Use a value of 100h for the 8052 and other derivatives that have 256 bytes of internal data memory.
;IDATALEN:IDATA存储区的大小<0-256>,可以根据自己的选择修改
; <i> Note: The absolute start-address of IDATA memory is always 0
; <i> The IDATA space overlaps physically the DATA and BIT areas.
XBPSTACK
Specifies whether or not the large model reentrant stack pointer (?C_XBP) should be initialized. A value of 1 causes this pointer to be initialized. A value of 0 prevents initialization of this pointer. The default is 0.
c51程序在keilc51下的调试步骤
C51程序在Keil C51下的调试步骤此刻普遍利用的C51集成开发环境是Keil软件。
要利用Keil软件,第一要正确安装Keil软件,该软件的Eval版本能够直接去下载,其步骤与一样Windows程序安装类似,那个地址就再也不赘述了。
Keil软件的详细说明见相关资料,那个地址仅作简要说明,以便于读者在后面的章节中实际动手调试、仿真程序。
1.成立工作项目文件图1启动Keil μVison2启动Keil μVison2,若是打开后就有打开的文件,单击“Project->Close Project”菜单将其关闭。
单击“File->New... ",打开一个新的文件输入窗口,在那个窗口里输入上述源程序。
输入完毕以后,选择“File-->Save",给那个文件取名保留,取名字的时候必需要加上扩展名,一样C语言程序均以“.c”为扩展名(必然要加扩展名,不然后面添加文件就找不到该文件,这是初学者很容易忘记的),那个地址将其命名为。
图2 成立工程文件单击“Project->New Project...",显现对话框,要求给将要成立的工程起一个名字,那个地址起名为test,不需要输入扩展名。
单击“保留”按钮,显现第二个对话框,如图3所示:图3 CPU选择窗口那个对话框要求选择工程中所用的单片机型号,那个地址选择Atmel公司的89S52芯片。
单击ATMEL前面的“+”号,展开该层,单击其中的89S52,然后再单击“确信”按钮,会显现一个对话框,询问是不是要将标准的8052启动代码加入工程,单击“是”按钮。
现在,在工程窗口的文件页中显现了“Target 1”,前面有“+”号,单击“+”号展开,能够看到下一层的“Source Group 1 ",需要手动把适才编写好的源程序加入,方式如下:单击“Source Group 1 ",使其反白显示,然后单击鼠标右键,显现一个下拉菜单,如图4所示。
keil C51的详解
Keil C51使用详解1作者:未知文章来源:21ic 点击数:3489 更新时间:2005-3-15 第一章 Keil C51开发系统基本知识 (6)第一节系统概述 (6)第二节 Keil C51单片机软件开发系统的整体结构 (6)第三节 Keil C51工具包的安装 (7)1. C51 for Dos 72. C51 for Windows的安装及注意事项: (7)第四节 Keil C51工具包各部分功能及使用简介 (7)1. C51与A51. 72. L51和BL51. 83. DScope51,Tscope51及Monitor51. 84. Ishell及uVision. 9第二章 Keil C51软件使用详解 (10)第一节 Keil C51编译器的控制指令 (10)1. 源文件控制类 (10)2. 目标文件(Object)控制类: (10)3. 列表文件(listing)控制类: (10)第二节 dScope51的使用 (11)1. dScope51 for Dos 112. dScope for Windows 12第三节 Monitor51及其使用 (13)1. Monitor51对硬件的要求 (13)2. Mon51的使用 (13)3. MON51的配置 (13)4. 串口连接图: (13)5. MON51命令及使用 (14)第四节集成开发环境(IDE)的使用 (14)1. Ishell for Dos的使用 (14)2. uVision for windows的使用 (15)第三章 Keil C51 vs 标准C.. 15第一节 Keil C51扩展关键字 (15)第二节内存区域(Memory Areas): (16)1. Pragram Area: (16)2. Internal Data Memory: 163. External Data Memory. 164. Speciac Function Register Memory. 16第三节存储模式 (16)1. Small模式 (16)2. Compact模式 (17)3. large模式 (17)第四节存储类型声明 (17)第五节变量或数据类型 (17)第六节位变量与声明 (17)1. bit型变量 (17)2. 可位寻址区说明20H-2FH.. 18第七节 Keil C51指针 (18)1. 一般指针 (18)2. 存储器指针 (18)3. 指针转换 (18)第八节 Keil C51函数 (19)1. 中断函数声明: (19)2. 通用存储工作区 (19)3. 选通用存储工作区由using x声明,见上例。
keil c51是如何启动c程序的
C:0x002622RET
151:MOVSP,#?STACK-1
152:; This code is required if you use L51_BANK.A51 with Banking Mode 4
153:; EXTRN CODE(?B_SWITCH0)
154:;CALL?B_SWITCH0; init bank mechanism to code bank 0
C:0x002775810DMOVSP(0x81),#0x0D
155:LJMP?C_START
C:0x002A020003LJMPmain(C:0003)
7:b=0xaa;
C:0x0009750A00MOV0x0A,#0x00;ram地址0x0A和0x0B存放变量b=0x00AA。
C:0x000C750BAAMOV0x0B,#0xAA
8:while(1)
9:{
10:c=SumXY(a,b);
C:0x000FAD0BMOVR5,0x0B;寄存器R4和R5传递变量a的值。
C:0x0000020027LJMPSTARTUP1(C:0027)
4:void main(void)
5:{unsigned int a,b,c;
6:a=0x5500;
C:0x0003750855MOV0x08,#0x55;ram地址0x08和0x09存放变量a=0x5500。
C:0x0006750900MOV0x09,#0x00
C:0x0000020003LJMPSTARTUP1(C:0003)
RSEG?C_C51STARTUP
STARTUP1:;该段程序把内存清零
KeilC51使用教程
Keil C语言程序设计示例教程(开发C8051F310)使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。
KEIL uVISION是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。
在这里以51单片机并结合C程序为例(汇编操作方法类似,唯一不同的是汇编源程序文件名后缀为“.ASM ”),图文描述工程项目的创建和使用方法。
1.首先我们要养成一个习惯:最好先建立一个空文件夹,把您的工程文件放到里面,以避免和其他文件混合,如下图, 创建了一个名为“PRJ_C8051”文件夹2.点击桌面上的Keil uVision4图标,出现启动画面:3.点击“project --- New uVision Project”新建一个工程:4.在对话框,选择放在刚才建立的“PRJ_C8051”文件夹下,给这个工程取个名为Test_C8051F310, 然后保存,工程的后缀为uvporj。
5.弹出一个框,在CPU类型下我们找到并选中“Silicon Laboratories. Inc.”下的C8051F3106.加入C8051起动码7.建立一个源程序文本8.在下面空白区别写入或复制一个完整的C程序:9.输入源程序文件名名称,示例输入“Test_C8051F310.c”,然后保存:10.把刚创建的源程序文件加入到工程项目文件中。
11.设置---目标(第1步~ 第4步)15.工程项目创建和设置全部完成!点击保持并编译16.在C8051F310中的C语言程序示例//-----------------------------------------------------------------------------// Includes// 在c8051f310.h在头文件中定义了C8051F310的寄存器、输入/输出的端口//-----------------------------------------------------------------------------#include <c8051f310.h> // SFR declarations//-----------------------------------------------------------------------------// 16-bit SFR Definitions for 'F30x//-----------------------------------------------------------------------------sfr16 TMR2RL = 0xca; // Timer2 reload valuesfr16 TMR2 = 0xcc; // Timer2 counter//-----------------------------------------------------------------------------// Global CONSTANTS//-----------------------------------------------------------------------------#define SYSCLK 24500000 / 8 // SYSCLK frequency in Hzsbit LED = P0^0; // LED='1' means ON//-----------------------------------------------------------------------------// Function PROTOTYPES//-----------------------------------------------------------------------------void SYSCLK_Init (void);void PORT_Init (void);void Timer2_Init (int counts);void Timer2_ISR (void);//-----------------------------------------------------------------------------// MAIN Routine//-----------------------------------------------------------------------------void main (void){// disable watchdog timerPCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer// enable)SYSCLK_Init (); // Initialize system clock to// 24.5MHzPORT_Init (); // Initialize crossbar and GPIOTimer2_Init (SYSCLK / 12 / 10); // Init Timer2 to generate// interrupts at a 10Hz rate.EA = 1; // enable global interruptswhile (1) // spin forever{}}//-----------------------------------------------------------------------------// SYSCLK_Init//-----------------------------------------------------------------------------//// This routine initializes the system clock to use the internal 24.5MHz / 8// oscillator as its clock source. Also enables missing clock detector reset.//void SYSCLK_Init (void){OSCICN = 0x80; // configure internal oscillator for// its lowest frequency RSTSRC = 0x04; // enable missing clock detector }//-----------------------------------------------------------------------------// PORT_Init//-----------------------------------------------------------------------------//// Configure the Crossbar and GPIO ports.// P3.3 - LED (push-pull)//void PORT_Init (void){// assignmentsXBR0 = 0x00; // no digital peripherals selectedXBR1 = 0x40; // Enable crossbar and weak pull-ups//P3MDOUT |= 0x08;P0MDOUT |= 0x03; // enable LED as a push-pull output}//-----------------------------------------------------------------------------// Timer2_Init//-----------------------------------------------------------------------------//// Configure Timer2 to 16-bit auto-reload and generate an interrupt at// interval specified by <counts> using SYSCLK/48 as its time base.//void Timer2_Init (int counts){TMR2CN = 0x00; // Stop Timer2; Clear TF2;// use SYSCLK/12 as timebase CKCON &= ~0x60; // Timer2 clocked based on T2XCLK;TMR2RL = -counts; // Init reload valuesTMR2 = 0xffff; // set to reload immediatelyET2 = 1; // enable Timer2 interruptsTR2 = 1; // start Timer2}//-----------------------------------------------------------------------------// Interrupt Service Routines//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// Timer2_ISR//-----------------------------------------------------------------------------// This routine changes the state of the LED whenever Timer2 overflows.//void Timer2_ISR (void) interrupt 5{TF2H = 0; // clear Timer2 interrupt flagLED = ~LED; // change state of LED}17.KEIL C语言与汇编语言的混合编程方法C语言中加入汇编语言模块的方法:例子:void func(){C语言代码……#pragma asmMOV R6,#23DELAY2: MOV R7,#191DELAY1: DJNZ R7,DELAY1DJNZ R6,DELAY2RET#pragma endasmC语言代码……}汇编部分需要用#pragma asm和#pragma endasm包起来18.KEIL C混合编程中的错误与解决方法1)Keil提示“asm/endasm”出错的解决方法如果只是像1中那样直接加入汇编代码的话,编译将会报错,错误如下:compiling sendata.c...sendata.c(81): error C272: 'asm/endasm' requires src-control to be active sendata.c(87): error C272: 'asm/endasm' requires src-control to be active Target not created解决方法如下:首先project workspace窗口右键单击包含有汇编部分的c语言文件名,然后在如上图所示的菜单中选择带有红色方框的选项在弹出的对话框中,将上图中红色方框选中的两项打上勾(默认的情况下,前面的勾是灰色的,要让这两项前的勾变为黑色的),点击确定。
图解使用Keil C51软件的九个步骤
2008-11-20 22:04图解使用Keil C51软件的九个步骤keil uvision2 C51软件是目前功能最强大的单片机c语言集成开发环境,下面我们通过图解的方式来Keil C51软件的使用教程,学习最简单的,如何输入源程序→ 新建工程→ 工程详细设置→ 源程序编译得到目标代码文件。
第一步:双击Keil uVision2的桌面快捷方式(图1),启动Keil集成开发开发软件。
软件启动后的界面如图2所示。
图1:启动Keil uVision2单片机集成开发环境图2:软件启动后的界面第二步:新建文本编辑窗。
点击工具栏上的新建文件快捷按键,即可在项目窗口的右侧打开一个新的文本编辑窗,见图3所示。
图3:新建文本编辑窗第三步:输入源程序。
在新的文本编辑窗中输入源程序,可以输入C语言程序,也可以输入汇编语言程序,见图4。
图4:输入源程序第四步:保存源程序。
保存文件时必须加上文件的扩展名,如果你使用汇编语言编程,那么保存时文件的扩展名为“.asm”,如果是C语言程序,文件的扩展名使用“*.C ”。
图5:保存源程序注:第3步和第4步之间的顺序可以互换,即可以先输入源程序后保存,也可以先保存后输入源程序。
第五步:新建立Keil工程。
如图6所示,点击 "工程" → "新建工程" 命令,将出现保存对话框(图7)。
图6:新建工程图7:保存工程对话框在保存工程对话框中输入你的工程的文件名,Keil工程默认扩展名为".uv2",工程名称不用输入扩展名(见图7),一般情况下使工程文件名称和源文件名称相同即可,输入名称后保存,将出现"选择设备"对话框(图8),在对话框中选择CPU的型号。
第六步:选择CPU型号。
如图8所示,为工程选择CPU型号,本新建工程选择了ATMEL公司的AT89C51单片机。
图8:选择CPU型号对话框第七步:加入源程序到工程中。
KEILC51编译软件使用方法
KEILC51编译软件使用方法
2.创建一个新项目
打开KEIL C51软件,点击“Project” -> “New µVision Project”创建一个新的项目。
选择项目所在的文件夹和项目名称,然后点击“Save”。
3.添加源文件
在新创建的项目中,右键点击"Source Group 1",选择"Add New
Item to Group"。
选择您要添加的源文件类型,比如.C文件,然后点击"Add"。
4.编写代码
5.配置单片机参数
在"Project" -> "Options"中选择"Target"选项卡。
选择您正在使用
的目标芯片型号,并配置相关参数,如时钟频率等。
6.编译代码
在工具栏中点击"Build"按钮,或者按下"F7"键来编译代码。
KEIL
C51将会编译源文件,并生成可执行文件。
8.调试程序
9.仿真运行
在工具栏中选择"Start/Stop Simulation"按钮,或按下"F9"键,
KEIL C51将会启动一个仿真器运行您的程序。
您可以在仿真器中监视程
序的运行状态。
10.生成可烧录文件
在成功编译程序后,您可以在工具栏中选择"Output"按钮,或按下CTRL+F7键,KEIL C51将生成可烧录到单片机的HEX文件。
将生成的HEX 文件用于烧录器烧录到目标芯片即可。
keil c51中启动代码详细说明
[ 2006-10-27 18:23:00 | By: CHYB_HSH ]让我们先来看看STARTUP.A51文件(默认设置)吧!根据源文件中的说明文字,我们很容易分析出STARTUP.A51文件的工作方式和作用!让我们把它先汉化一下看看!$NOMOD51;Ax51宏汇编器控制命令:禁止预定义的8051;------------------------------------------------------------------------------; This file is part of the C51 Compiler package; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.;------------------------------------------------------------------------------; STARTUP.A51: This code is executed after processor reset.; STARTUP.A51: STARTUP.A51文件所生成的代码将在单片机复位后被执行!; To translate this file use A51 with the following invocation:; 将按照下面的命令行语句调用A51编译器进行编译产生目标文件; A51 STARTUP.A51;; To link the modified STARTUP.OBJ file to your application use the following; BL51 invocation:; 将按照下面的命令行语句调用BL51连接器把STARTUP.OBJ定位连接到您的程序代码中; BL51 <your object file list>, STARTUP.OBJ <controls>;;;------------------------------------------------------------------------------;; User-defined Power-On Initialization of Memory; 自定义上电后需要初始化的储存区域; With the following EQU statements the initialization of memory; at processor reset can be defined:; 使用下列EQU伪指令定义初始化的存储区域在单片机复位后定义生效; ; the absolute start-address of IDATA memory is always 0IDATALEN EQU 80H ; the length of IDATA memory in bytes.; IDATA(间接寻址区)其起始地址固定为0;IDA TALEN用于指定需要初始化; 的 IDATA区长度(以字节为单位)*XDATASTART EQU 0H ; the absolute start-address of XDATA memoryXDATALEN EQU 0H ; the length of XDA TA memory in bytes.;XDATA (外部直接寻址区)XDA TASTART用于指定需要初始化的XDA TA区起始地;址 XDATALEN 用于指定需要初始化的XDA TA区长度(以字节为单位)*PDATASTART EQU 0H ; the absolute start-address of PDA TA memoryPDATALEN EQU 0H ; the length of PDATA memory in bytes.;PDA TA(页寻址区)PDATASTART用于指定需要初始化的PDA TA区起始地址;PDATALEN 用于指定需要初始化的;PDATA区长度(以字节为单位)*; Notes: The IDA TA space overlaps physically the DATA and BIT areas of the; 8051 CPU. At minimum the memory space occupied from the C51; run-time routines must be set to zero.;注释:8051中 IDATA 区物理上已经包括了DA TA区(直接寻址区)以及 BIT区(位寻址区)。
KEIL C51使用说明
20.1 工程项目的建立、源程序文件的建立及加载Keil C51软件UVision打开后,程序窗口的左边有一个项目工作区管理窗口,该窗口有3个标签,分别是Files、Regs和Books,这3个标签页分别显示当前项目的文件结构、CPU的寄存器及部分特殊功能寄存器的值(调试时才出现)和所选CPU的附加说明文件,如果是第一次启动Keil C51,那么这3个标签页全是空的(图20-1)。
图20-1 Keil C51打开后界面20.1.1 建立工程文件在单片机开发项目中,有时有多个的源程序文件,并且还要为项目选择CPU以确定编译、汇编、连接的参数,指定调试的方式等。
为便于管理,Keil C51使用工程项目(Project)的方法,将这些参数设置和所需的所有文件都放在一个工程项目中,只能对工程项目而不能对单一的源程序进行编译(汇编)和连接等操作。
一、先在硬盘上建立一个需保存工程文件的目录(例如在“我的文档” 中建立一个test的文件夹),为便于管理及使用,目录名称可与工程名称一致。
二、1、选择“工程>新工程”菜单(图20-2)。
弹出对话框,要求给将要建立的工程起一个名字,可以在编辑框中输入一个名字(例如test),扩展名不必输入(默认的扩展名为.uv2)。
点击“保存”按钮(图20-3)。
2、随后弹出一个“为目标target选择设备”(Select Device for Target “Target1”)对话框,这个对话框要求选择目标CPU(即你所用单片机开发板芯片的型号),Keil C51支持的CPU很多,我们选择Atmel公司的AT89C51(或AT89S51)芯片,用鼠标单击Atmel前的“+”号,选择“AT89C51(或AT89S51)”单片机后按确定(图20-4)。
随即系统弹出是否拷贝8051启动代码到工程项目并添加到当前项目组的提示(Copy Standard 8051 Startup Code to Project Folder and Add File to Project ?),我们选否。
Keil C51使用和操作步骤
Keil软件安装完毕后,会在桌面上生成Keil uVision4图标,双 击该图标,或选择“开始”-“程序”-Keil uVision4,卽 可进入Keil软件的集成开发环境。
1、工程项目的建立 (1)点击 “Project->NewProject ”菜单,出现一个对 话框,要求给将要建立的工程起一个名字,你可以在编缉框中 输入一个名字(设为 exam1),不需要扩展名。点击“保存” 按钮,将你的项目文件名存入指定的路径下的文件夹里,此时 会出现第二个对话框。 (需要预先/或即时在指定的路径下建立一个文件夹) (2)选择你所用CPU芯片的型号。 (3)选择 Atmel 公司的 AT89C51 芯片。 (4)点击“OK”确认 (5)点击“否”后建立项目完成
(2)给源文件起个名,请记住,文件名后面一定要加上后缀“.C”,点击快捷键“保存”,将 文件保存在指定的文件夹里。
3、给工程加入源文件
(1)在项目管理窗里,用右键点击“Source Group 1”
出现下一个提示: (2)点击“ (3)选择刚建立的源程序,点击“Add”
4、工程项目的设置
(1)点击项目管理窗中的 出现一个新的对话窗:在Greate HEX File HEXFomat选项上打上勾
” 出现一个新的对话框。
2、源文件的建立
(1)使用菜单“File ->New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个 新的文本编缉窗口,在该窗口中输入以下C语言源程序。
#include <reg51.h> //包含头文件REG51.H,定义了51单片机的 特殊功能寄存器。 sbit P2_0=P2^0; //定义位名称 void delay(unsigned char i); //延时函数声明 void main() //主函数 { while(1) { P2_0=0; //点亮信号灯 delay(255); //调用延时函数,实际变量为255 P2_0=1; //熄灭信号灯 delay(255); //调用延时函数,实际变量为255 } } //函数名:delay //函数功能:实现软件延时 void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数 { unsigned char j,k; //定义无符号字符型变量j和k for(k=0;k<i;k++) //双重for循环语句实现软件延时 for(j=0;j<255;j++); }
单片机KeilC51软件的使用方法
Keil C51软件的使用Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编和 C 语言的程序设计,界面友好、易学易用。
下面介绍Keil C51软件的使用方法:1.启动Keil C51,界面如下图。
启动Keil C51时的屏幕进入Keil C51后的编辑界面2.建立一个新工程。
(1)单击工程菜单,在弹出的下拉菜单中选中新建工程选项。
(2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51,如下图所示,然后点击保存。
(3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,Keil C51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定。
(4)完成上一步骤后,屏幕如下图所示。
(5)单击文件菜单,再在下拉菜单中单击新建选项,屏幕如下图所示。
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,建议首先保存该空白的文件,单击文件菜单,在下拉菜单中选中另存为选项单击,屏幕如下图所示,在文件名栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
编写程序,则扩展名必须为.asm。
然后,单击保存按钮。
回到编辑界面后,单击目标1前面的+号,然后在源程序组1上单击右键,弹出如下菜单,然后单击增加文件到组‘源程序组1’,屏幕如下图所示,选中c51.asm,然后单击Add,屏幕如下图所示,(7)输入如下的汇编语言源程序,程序输入完毕后如下图所示。
(8)单击工程菜单,再在下拉菜单中单击建造目标选项(或者使用快捷键F7),编译成功后,再单击调试菜单,在下拉菜单中单击开始/停止调试(或者使用快捷键Ctrl+F5),屏幕如下所示。
(9)调试程序,在上图中单击调试菜单,在下拉菜单中单击运行到选项(或者使用快捷键F5),然后再单击调试菜单,在下拉菜单中单击停止运行选项(或者使用快捷键Esc),通过寄存器窗口、存储器窗口以及外围设备窗口等就可以看到程序运行后的结果。
Keil C51操作入门
广州周立功单片机发展有限公司
Tel:(020)38730976,38730977
Fax:38730925
“E:\Project\LedFlash” ,其中“LedFlash”是新建的文件夹。我们建议:今后每新建 一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理, 并养成良好的习惯。最后,为工程取名为“LedFlash” ,并保存。参见图 1.3。
图 1.6 保存新建的源程序文件
z 添加源程序文件到工程中。现在,一个空的源程序文件“main.c”已经建立,但是 这个文件与刚才新建的工程之间并没有什么内在联系。我们需要把它添加到工程中 去。单击 Keil C51 软件左边项目工作窗口“Target 1”上的“+” ,将其展开。然后 右击“Source Group 1”文件夹,会弹出如图 1.7 所示的选择菜单。单击其中的“Add Files to Group 'Source Group 1'”项,将弹出如图 1.8 所示的对话框。 z 先选择文件类型为“ C Source file (*.c) ” ,这时,对话框内将出现刚才保存过的 “main.c” 。单击文件“main.c” ,再按一次“Add”按钮(请不要多次点击“Add” 按钮) ,最后按“Close”按钮。这时,源程序文件“main.c”已经出现在项目工作窗 口的“Source Group 1”文件夹内,可以单击左边的“+”展开后查看。
广州周立功单片机发展有限公司
Tel:(020)38730976,38730977
Fax:38730925
z 单击 Keil C51 工具栏的“ ”图标,弹出名为“Options for Target ‘Target 1’”的对 话框。 单击 “Output” 标签页, 选中 “Create HEX File” 项, 然后 “确定” 。 参见图 1.9。
Keil C51使用详解3
Keil C51使用详解34. 串口縞帠~徑有三種方式:(1) Dos行命令方式即先用install對MON51進行配置,然後用MON51進入Monitor狀態,啟用各種命令對Monitor51進行調試。
(2) tScope51方式啟動tScope51裝入TS51目錄下的MON51.IOT驅動檔,與目標板通信。
(3) dScope51 for Windows方式在選CPU驅動文件時,選“MON51.dll”,則檢查目標板並進入MON51狀態。
3. MON51的配置(1) MON51 for Dos的配置運行install檔(在MON51目錄下),不同的參數可以配置不同的硬體環境。
INSTALL Serialtype [xdstastart][codestart][bank][PROMCHECK]],具體說明見MON51幫助文件或使用手冊。
(2) MON51 for Windows的配置在啟用MON51.dll時,會使得系統自動檢查目標板連接,如配置不對,則彈出“Configuration”對話方塊,設置PC串口,串列傳輸速率等,完畢單擊“apply”有效。
4. 串口連接圖:收發交叉互連,RTS、CTS直連,DSR、DTR直連,具體引腳排列參考串口資料。
5. MON51命令及使用詳細的MON51命令可參閱幫助。
第四節集成開發環境(IDE)的使用1. Ishell for Dos的使用進入Ishell之後看到兩個視窗:一個是檔視窗,一個是Dos命令行視窗,視窗上方是下拉式的命令功能表,其中的Files控制檔視窗的顯隱。
使用Ishell,第一步就是配置系統,即要學習兩個檔的修改與創建:(1) Ishell.CFG文件每一個project都有一個Ishell.CFG,其中存放有“Option功能表和Setup功能表下的部分資訊;Bell enabled、Monochrome enabled、Editor Selected、CRT Lines、target enviroment、name of user edit、Automatic load for configuration enabled、file window enabled、file specification for file window、translate command line controls、project name等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由于CPU和程序启动代码文件STARTUP.a51的重要性,一些8051派生的CPU产品要求初始化CPU来满足设计中的相应的硬件,因此,有时候用户需要对STARTUP.a51进行修改,所以进行注释一下:
;---------------------------------------------------
;startup.A51: 用户上电初始化程序
;----------------------------------------------------
;
;使用以下EQU命令可定义在CPU复位时需要用0进行初始化的内存空间
;
;IDA TA存储器的空间的绝对起始地址总是零
IDA TALEN EQU 80H ;需用0进行初始化的IDA TA存储器空间的字节数
;
XDA TASTART EQU 0H ;XDA TA存储器空间的绝对起始地址
XDA TALEN EQU 0H ;需用0进行初始化的XDA TA存储器的空间字节数
;
PDA TASTART EQU 0H ;PDA TA存储器的空间的绝对起始地址
PDA TALEN EQU 0H ;需用0进行初始化的PDA TA存储器的空间字节数
;注意:IDA TA存储器的空间在物理上包括了8051单片机的DA TA和BIT存储空间
;至少要保证与C51编译器运行库有关的存储器的空间进行0初始化
;
;再入函数模拟初始化
;-----------------------------------------------------------
;以下用EQU指令定义了再入函数模拟堆栈指针的初始化
;
;使用SMALL存储器模式时再入函数的堆栈空间
IBPSACK EQU 0 ;使用SMALL存储器模式再入函数时将其设置成1
IBPSTACKTOP EQU 0FFH+1 ;将堆栈顶设置为最高地址加1
;
;使用LARGE存储器模式时再入函数的堆栈空间
XBPSTACK EQU 0 ;使用LARGE存储器模式再入函数时将其设置成1
XBPSTACKTOP WQU 0FFFFH+1 ;将堆栈顶设置为最高地址加1
;
;使用COMPACT存储器模式时再入函数的堆栈空间
PBPSTACK EQU 0 ; 使用COMPACT存储器模式再入函数时将其设置成1
PBPSTACKTOP WQU 0FFFFH+1 ;将堆栈顶设置为最高地址加1
;;----------------------------------------------------
;使用COMPACT存储器模式时,64KB X DA TA存储器空间的分页定义
;
;以下用EQU指令定义PDA TA类型变量在XDA TA存储器空间的页地址
;使用EQU指令定义PFAGE时必须与L51连接定位器PDA TA指令的控制参数一致
;
PPAGEENABLE EQU 0 ;使用PDA TA类型变量时将其设置成1
PPAGE EQU 0 ;定义页号
;
;------------------------------------------------
NAME ? C_STARTUP ;模块名为? C_STARTUP
? C_51STARTUP SEGMENT CODE ;代码段
? STACK SEGMENT IDA TA;堆栈段
RSEG ? STACK ;堆栈
DS 1
EXTRN COE(? C_START) ;程序开始地址
PUBLIC ? C_STARTUP
CSEG A T 0x8000 ;定义用户程序的起始地址,用MON51仿真器时可能有用
? C_STARTUP: LFMP STARTUP1
RSEG ? C_51STARTUP
STARTUP1:
;
;初始化串口
MOV SCOM, #40H
MOV TMOD, #20H
MOV TH1, #0FDH
SETB TR1
CLR T1
;单片机上电IDA TA内存清零,如果不需要上电清零IDA TA,可以注销IF到IFEDN之间的
;语句,或者修改IDTALEN的长度,为了让CPU具有掉电保护功能,需要确定IDTALEN的长度IF IDA TALEN <> 0
MOV R0, # IDA TALEN-1
CLR A
IDA TALOOP: MOV @R0,A
DJNZ R0,IDA TALOOP
ENDIF
;
;单片机上电XDA TA内存清零,如果不需要上电清零XDA TA,可以注销IF到IFEDN之间的;语句,或者修改XDTALEN的长度
IF XDA TALEN <> 0
MOV DPTR, #XDA TASTART
MOV R7,#LOW (XDA TALEN)
IF (LOW(XDA TALEN)) <> 0
MOV R6, #(HIGH(XDA TALEN))+1
ELSE
MOV R6, #HIGH (XDA TALEN)
ENDIF
CLR A
XDA TALOOP: MOVX @DPTR, A
INC DPTR
DJNZ R7, XDA TALOOP
DJNZ R6, XDA TALOOP
END IF
;
;送PDA TA存储器页面高位地址
IF PPAGEENABLE <> 0
MOV P2, #PPAGE
ENDIF
;
;单片机上电PDA TA内存清零,如果不需要上电清零XDA TA,可注销IF到IFEDN之
;间的语句或者修改PDA TALEN的长度
IF PDA TALEN <> 0
MOV R0, #PDA TASTART
MOV R7, #LOW (PDA TALEN)
CLR A
PDA TALOOP: MOV @R0, A
INC R0
DJNZ R7,PDA TALOOP
ENDIF
;
;设置使用SMALL存储器模式时再入函数的堆栈空间
IF IBPSTACK <> 0
EXTRN DA TA(? C_IBP)
MOV ? C_IBP, #LOW IBPSTACKTOP
ENDIF
;
;设置使用LARGE存储器模式时再入函数的堆栈空间
IF XBPSTACK <> 0
EXTRN DA TA (? C_XBP)
MOV ? C_XBP, #HIGH XBPSTACKTOP
MOV ? C_XBP +1, #LOW XBPSTACKTOP
ENDIF
;
;设置使用COMPACT存储器模式时再入函数的堆栈空间IF PBPSTACK <> 0
EXTRN DA TA(? C_PBP)
MOV ? C_PBP, #LOW PBPSTACKTOP
END IF
;
;设置堆栈的起始地址
MOV SP, #? STACK-1 ;例如MOV SP, #4FH
;
;如果程序超过64K,则使用程序分组技术,启动下面的程序;EXTRN CODE(? B_SWITCH0)
;CALL ? B_SWITCH0
;程序从第一组bank 0 块开始执行
;跳转到用户程序MAIN函数
LJMP ? C_START
END。