keil下C51启动代码详解

合集下载

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使用详解

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 使用详解

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  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单片机启动代码

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程序在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的详解

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程序的

keil c51是如何启动c程序的
17:return Z;;由寄存器R6和R7里返回函数的值
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:;该段程序把内存清零
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档