keil C51 基本头文件
C51常用头文件
C51常用头文件C51常用头文件1.字符处理函数本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换头文件 ctype.h函数列表<>函数类别函数用途详细说明字符测试是否字母和数字 isalnum是否字母 isalpha是否控制字符 iscntrl是否数字 isdigit是否可显示字符(除空格外) isgraph是否可显示字符(包括空格) isprint是否既不是空格,又不是字母和数字的可显示字符 ispunct是否空格 isspace是否大写字母 isupper是否16进制数字(0-9,A-F)字符 isxdigit字符大小写转换函数转换为大写字母 toupper转换为小写字母 tolower2.地区化本类别的函数用于处理不同国家的语言差异。
头文件 local.h函数列表函数类别函数用途详细说明地区控制地区设置 setlocale数字格式约定查询国家的货币、日期、时间等的格式转换localeconv3.数学函数本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51)头文件 math.h函数列表函数类别函数用途详细说明错误条件处理定义域错误(函数的输入参数值不在规定的范围内)值域错误(函数的返回值不在规定的范围内)三角函数反余弦 acos反正弦 asin反正切 atan反正切2 atan2余弦 cos正弦 sin正切 tan双曲函数双曲余弦 cosh双曲正弦 sinh双曲正切 tanh指数和对数指数函数 exp指数分解函数 frexp乘积指数函数 fdexp自然对数 log以10为底的对数 log10浮点数分解函数 modf幂函数幂函数 pow平方根函数 sqrt整数截断,绝对值和求余数函数求下限接近整数 ceil绝对值 fabs求上限接近整数 floor求余数 fmod4.本分类函数用于实现在不同底函数之间直接跳转代码。
keil c51 详细中文手册
Keil C51使用详解V1.0第一章 Keil C51开发系统基本知识 (6)第一节系统概述 (6)第二节Keil C51单片机软件开发系统的整体结构 (6)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第二节内存区域(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使用详解
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声明,见上例。
C51常用头文件
C51常用头文件在KEIL 中,对于单片机所使用的头文件,除了reg51 reg52以外,还有一些从各芯片制商的官网下载与reg51,reg52功能类似的头文件,需了解透外,还要对各类型单片机均可通用且相当有用的的头文件,做相应的了解。
因为,内部所包含的函数与宏定义,可以及大的方便我们编写应用程序1字符函数 ctype.h1 extern bit isalpha(char);功能:检查参数字符是否为英文字母,是则返回12 extern bit isalnum(char)功能:检查字符是否为英文字母或数字字符,是则返回13 extern bit iscntrl(char)功能:检查参数值是否在0x00~0x1f 之间或等于0x7f,是则返回14 extern bit isdigit(char)功能:检查参数是否为数字字符,是则返回15 extern bit isgraph(char)功能:检查参数值是否为可打印字符,是则返回1,可打印字符为0x21~0x7e 6 extern bit isprint(char)功能:除了与isgraph相同之外,还接受空格符0x207 extern bit ispunct(char)功能:不做介绍。
8 extern bit islower(char)功能:检查参数字符的值是否为小写英文字母,是则返回19 extern bit isupper(char)功能:检查参数字符的值是否为大写英文字母,是则返回110 extern bit isspace(char)功能:检查字符是否为下列之一,空格,制表符,回车,换行,垂直制表符和送纸。
如果为真则返回111 extern bit isxdigit(char)功能:检查参数字符是否为16进制数字字符,是则返回112 extern char toint(char)功能:将ASCII字符0~9 a~f(大小写无关)转换成对应的16进制数字,返回值00H~0FH13 extern char tolower(char)功能:将大写字符转换成小写形式,如字符变量不在A~Z之间,则不作转换而直接返回该字符14 extern char toupper(char)功能:将小写字符转换成大写形式,如字符变量不在a~z之间,则不作转换而直接返回该字符15 define toascii(c) ((c)&0x7f)功能:该宏将任何整形数值缩小到有效的ASCII范围之内,它将变量和0x7f相与从而去掉第7位以上的所有数位16 #define tolower(c) (c-‘A’+’a’)功能:该宏将字符与常数0x20 逐位相或17 #define toupper(c) ((c)-‘a’+’A’)功能:该宏将字符与常数0xdf 逐位相与2数学函数 math.hextern int abs (int val);extern char cabs (char val);extern long labs (long val);extern float fabs (float val);功能:返回绝对值。
Keil-C51的使用ppt课件
1
我想知道
• Keil C51是什么? • 我们用它用来做什么? • 怎么用?
2
☺解答问题1
Keil C51是德国Keil 来自oftware公司出品的51系列兼容单片 机C语言软件开发系统。
该软件提供丰富的库函数和功能强大的集成开发调试工具, 全Windows界面。通过该软件可以完成编辑,编译,仿真, 连接,调试等整个开发流程。
参见教材《单片机的C51应用程序设计》第 310 页 14
弹出添加文件对话框,要求寻找源文件。 通过“查找范围”列表栏找到文件所在的文件夹,
再单击“文件类型”中下拉列表框,从中选取合 适的文件类型。 默认的“文件类型”为C Source file(*.c),也 就是以C为扩展名的C51文件。 若需要汇编语言文件,请点击对话框中“文件类 型”后的下拉列表,找到并选中Asm Source file (*.s*; *.src; *.a*)项。 在列表中找到需要的文件,选中文件再单击 “Add”,或双击文件也可添加成功。
要的所有文件都放在这个目录下。
参见教材《单片机的C51应用程序设计》第 308 页 9
3、选择器件
工程建立完毕,uVision2会立即弹出一个对话框, 要求选择单片机的型号。
器件选择的目的是告诉uVision2最终使用的单片机 芯片的型号是哪一个公司的哪一个型号,因为不同 型号的芯片内部资源是不同的;uVision2可根据选 择进行SFR的预定义,在软硬件仿真中提供易于操 作的外设浮动窗口等。
目前常使用的Keil C51开发系统是uVersion IDE版本,开 发人员可以用IDE或其他编辑器编辑汇编或C语言程序,然 后分别由A51或C51编译器编译生成目标代码(.OBJ)。 目标文件可以由LIB51创建生成库文件,也可以与库文件一 起经过L51连接定位生成绝对目标文件(.ABS)。ABS文 件由OH51转换称标准的HEX文件,以供调试器 (dScope51或tScope51)进行代码级调试,也可用仿真 器直接对目标般调试,还可以直接写入程序存储器中。
keil C51入门教程
第三章 C51语言作者:彭保基 西安交通大学 电信学院 电子2002级 版本:V1.1 写作时间:2004年12月---2005年3月本章主要介绍在Keil 的集成环境下用C 语言编程,并对C51语言与标准的C 语言的异同进行比较。
由于篇幅有限并考虑到读者大部分已经学过标准的C 语言,不再对C 语言进行深入的讲解;如果读者想深入了解和掌握C 语言,则可查阅和参考其他相关资料。
第一节 C51简介汇编语言是编写单片机程序的常用语言之一,很多老的单片机开发者使用汇编语言已经成为了一种习惯;汇编语言编写的程序所生成的代码效率很高,能直接操作硬件,指令的执行速度快。
但其指令系统的固有格式受硬件结构的限制很大,且难于编写与调试,可移植性也差。
随着单片机硬件性能的提高,其工作速度越来越快,因此在编写单片机应用系统程序时,更着重于程序本身的编写效率。
与汇编语言相比,C 语言在功能、结构、可读性和可维护性上有明显的优势,因而易学易用;在开发大型软件时更能体现其高级语言的优势。
因此,近些年来越来越多地人喜欢用C 语言来编写单片机的应用程序。
本章所说的C51语言就是标准C 语言的变种,是标准C 语言的扩展;关于两者的区别,将在下一节中详细的介绍。
第二节 C51与ANSI C 的比较Keil C51编译器是一个完全支持ANSI 标准C 语言的编译器,除了少数关键的地方之外,Keil C51和标准ANSI C 语言是基本类似的;但由于51单片机的特殊性,Keil C51在标准C 语言基础上进行了扩展,使其能够更有效地利用单片机各种有限的资源。
深入理解和掌握C51对标准C 语言的扩展,是学好C51语言的关键。
一、 Keil C51扩展关键字关键字 用 途 说 明bit 声明一个位标量或位类型的函数sbit 位标量声明声明一个可位寻址变量 Sfr 声明一个特殊功能寄存器 Sfr16 特殊功能寄存器声明声明一个16位的特殊功能寄存器 data 直接寻址的内部数据存储器 bdata可位寻址的内部数据存储器idata 间接寻址的内部数据存储器 pdata 分页寻址的外部数据存储器xdata 外部数据存储器 code 存储器类型说明 程序存储器interrupt 中断函数说明 定义一个中断函数 reentrant 再入函数说明 定义一个再入函数 using 寄存器组定义定义芯片的工作寄存器_at_ 绝对定位_task_ alien small compact large存储模式附表3- C51编译器的扩展关键字二、 数据类型Keil C51编译器支持下表列出的数据类型。
Keil-C51-基本使用方法 (1) 。。。。2
、Keil C51工程建立与仿真1、建立一个工程项目,选择芯片并确定选项双击Keil uVision2快捷图标后进入Keil C51开发环境,单击“工程”菜单,在弹出的下拉菜单选中“新工程”选项,屏幕显示为图1。
附录:一图1 建立一个工程项目在文件名中输入一个项目名“my-test”,选择保存路径(可在“我的文档”中先建立一个同名的文件夹),单击保存。
在随后弹出的“为目标target选择设备”(Select Device for Target “Target1”)对话框中用鼠标单击Atmel前的“+”号,选择“89C51”单片机后按确定,如图2所示。
图 2 选择单片机后按确定选择主菜单栏中的“工程”,选中下拉菜单中“Options for Target ‘Target1’”,出现图3所示的界面。
单击“target”页面,在晶体Xtal(MHz)栏中选择试验板的晶振频率,默认为24MHz,我们讲座试验板的晶振频率为11.0592MHz,因此要将24.0改为11.0592。
然后单击输出“Output”页面,在“建立hex格式文件”前打勾选中,如图3-4。
其它采用默认设置,然后点确定。
图3 选择Target页面图4 选择Output页面2、建立源程序文件图 5 建立源程序文件程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(如my-test.asm)保存在刚才所建立的一个文件夹中(my-test)。
3、添加文件到当前项目组中单击工程管理器中“Target 1”前的“+”号,出现“Source Group1”后再单击,加亮后右击。
在出现的下拉窗口中选择“Add Files to Group‘Source Group1’”,如图6所示。
在增加文件窗口中选择刚才以asm格式编辑的文件my-test.asm,鼠标单击“ADD”按钮,这时my-test.asm文件便加入到Source Group1这个组里了,随后关闭此对话窗口。
C51中头文件的写法
C51中头文件的写法一、头文件位置#include ; 优先在系统默认路径查找头文件#include“xxx.h”有现在项目路径查找头文件二、#ifndef和#endif通常形式为#ifndef _xxxx_h_#define _xxxx_h_.........(头文件具体内容)#endif这样的写法表示,如果_xxxx_h_还没有被定义,那么头文件内容将被执行,如果已经定义过了,那么头文件内容就不执行了。
作用在于,如果某头文件被不同c文件同时调用,那么里面的内容不至于因为重复定义而出错,因为不管调用几次头文件,其内容只有在第一次出现时被执行,同时定义一个_xxxx_h_,以后再次调用时,头文件内容被忽略。
三、函数和宏假设有如下文件 main.caaa.caaa.h其中,,aaa.c里面有一个宏X,一个函数Y,且函数Y 中使用了Xaaa.h里面申明了函数Ymain.c里包含了aaa.h文件,调用了函数Y,但没有定义宏X那么,编译时不会出错,这表示,函数Y中出现宏X 时,它会在自身所在的c文件,即aaa.c里面查找宏变化1:如上情况不变,但是在main.c里面将整个函数Y重新写一遍编译出错,提示 “error C202: 'X': undefined identifier”说明此时函数Y在main.c文件中找不到宏X,因此提示为未定义的符号变化2:将aaa.c中的宏剪切到main.c,其余情况不变编译出错,同样提示“error C202: 'X': undefined identifier”结论:函数中如果出现宏,那么该函数能且只能在其自身所在的c文件中查找该宏,如果二者不在同个c 文件,必然出错。
C51编程头文件的使用方法
C51编程中头文件的使用头文件在C51的编程中是不可缺少的部分。
本文将对keil C中常用头文件予以说明,并就如何编写头文件进行初步介绍。
一、C51常见本征函数库一些常见的头文件都是keil C自带的,在安装目录下的C51文件夹的INC中可以找到keilC中所有的芯片所对应的头文件。
51系列单片机在编程中常用的头文件有:AT89X51.H、INTRINS.H、ABSACC.H、MATH.H。
1、AT89X51.H——本征函数库头文件AT89X51.H是编程中必需要用到的专用寄存器文件。
它与INC中的头文件REG51.H所定义的内容是一样的。
主要用来定义特殊功能寄存器的位地址、程序状态寄存器的位地址、定时器/计数器控制寄存器的位地址、中断使能控制器位地址、单片机P3引脚特殊功能位地址、中断优先权控制寄存器位地址、串行口控制寄存器位地址。
Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.#ifndef __REG51_H_#define __REG51_H_BYTE Register 特殊功能寄存器的位地址sfr P0 = 0x80 P0口锁存器的地址sfr P1 = 0x90 P1口锁存器的地址sfr P2 = 0xA0 P2口锁存器的地址sfr P3 = 0xB0 P3口锁存器的地址sfr PSW = 0xD0 程序状态字sfr ACC = 0xE0 累加器sfr B = 0xF0 B寄存器sfr SP = 0x81 堆栈指针sfr DPL = 0x82 数据指针低位sfr DPH = 0x83 数据指针高位sfr PCON = 0x87 电源控制寄存器sfr TCON = 0x88 定时器/计数器控制寄存器sfr TMOD = 0x89 定时器/计数器方式控制寄存器sfr TL0 = 0x8A 定时器/计数器0(低字节)sfr TL1 = 0x8B 定时器/计数器1(低字节)sfr TH0 = 0x8C 定时器/计数器0(高字节)sfr TH1 = 0x8D 定时器/计数器1(高字节)sfr IE = 0xA8 中断允许控制寄存器sfr IP = 0xB8 中断优先级控制寄存器sfr SCON = 0x98 串行控制寄存器sfr SBUF = 0x99 串行缓冲器BIT Register 程序状态寄存器的地址sbit CY = 0xD7 进位标志sbit AC = 0xD6 辅助进位标志sbit F0 = 0xD5 标志位(可自行定义)sbit RS1 = 0xD4 寄存器选择控制位sbit RS0 = 0xD3 寄存器选择控制位sbit OV = 0xD2 溢出标志位sbit P = 0xD0 奇偶标志位TCON 定时器/计数器控制寄存器的地址sbit TF1 = 0x8F T1计数溢出标志位sbit TR1 = 0x8E T1计数运行控制位sbit TF0 = 0x8D T0计数溢出标志位sbit TR0 = 0x8C T0计数运行控制位sbit IE1 = 0x8B 中断1边沿标志sbit IT1 = 0x8A 中断1控制位sbit IE0 = 0x89 中断0边沿标志位sbit IT0 = 0x88 中断0控制位IE 中断使能控制器位地址sbit EA = 0xAF 总中断控标志位sbit ES = 0xAC 串行中断标志位sbit ET1 = 0xAB T1计数中断标志位sbit EX1 = 0xAA 外部中断1标志位sbit ET0 = 0xA9 T0计数中断标志位sbit EX0 = 0xA8 外部中断0标志位IP 中断优先权控制寄存器位地址sbit PS = 0xBC 串行中断优先标志位sbit PT1 = 0xBB 计数器1中断优先标志位sbit PX1 = 0xBA 外部中断1优先标志位sbit PT0 = 0xB9 计数器0中断优先标志位sbit PX0 = 0xB8 外部中断0优先标志位P3 单片机P3引脚特殊功能位地址sbit RD = 0xB7 外部数据存储器的写入控制信号sbit WR = 0xB6 外部数据存储器的读取控制信号sbit T1 = 0xB5 定时器1外部中断sbit T0 = 0xB4 定时器0外部中断sbit INT1 = 0xB3 外部中断0sbit INT0 = 0xB2 外部中断1sbit TXD = 0xB1 串行输出口sbit RXD = 0xB0 串行输入口SCON 串行口控制寄存器位地址sbit SM0 = 0x9F 串行口模式的选择位sbit SM1 = 0x9E 串行口模式的选择位sbit SM2 = 0x9D 允许模式2和3的多机通讯控制位sbit REN = 0x9C 允许串行接收位sbit TB8 = 0x9B 在模式2和3下传送第9数据位sbit RB8 = 0x9A 在模式2和3下存放第9数据位sbit TI = 0x99 传送中断标志位sbit RI = 0x98 接收中断标志位#endif2、INTRINS.H——本征函数库头文件INTRINS.H主要用来定义空操作、判断并清零和字符及数字的循环移动。
单片机开发与仿真软件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 的基础上扩展了许多增强功能。
开发工具KeilC51介绍
目录
• Keil C51简介 • Keil C51开发环境 • Keil C51的编程语言 • Keil C51的实践应用 • Keil C51的未来发展
01 Keil C51简介
什么是Keil C
01
Keil C51是一款针对8051微控制器 的集成开发环境(IDE),由德国 Keil Software公司开发。
THANKS FOR WATCHING
感谢您的观看
制系统、工业控制系统等。
单片机应用开发
03
使用Keil C51开发工具进行单片机应用开发,如电子门锁、智
能仪表等。
常见问题及解决方案
01
编译错误
检查代码中是否有语法错误或拼 写错误,确保代码符合C语言规 范。
链接错误
02
03
调试错误
检查链接器设置是否正确,确保 目标硬件平台和编译器之间的兼 容性。
习和使用。
02 Keil C51开发环境
界面介绍
菜单栏
包含文件、编辑、工程、查看 、工具等常用菜单,方便用户
进行操作。
工具栏
提供常用操作按钮,如新建、 打开、保存、编译等,方便用 户快速执行操作。
工程管理器
展示工程文件和文件夹结构, 方便用户管理工程文件。
编辑器
提供代码编写和编辑功能,支 持语法高亮、自动缩进等功能
嵌入式C语言编程规范
内存管理
由于嵌入式系统资源有限,程序员需要谨慎管理内存,避免内存 泄漏和非法访问。
实时性
嵌入式系统通常要求实时响应,因此程序应尽量减少不必要的延 时和计算。
可靠性
程序应具备错误处理和异常处理机制,确保系统稳定可靠。
KEIL中常用库函数头文件的说明
INTRINS.H详细说明:c51中的intrins.h库函数 _crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移_lrol_ 长整数循环左移 _lror_ 长整数循环右移_nop_ 空操作8051 NOP 指令_testbit_ 测试并清零位8051 JB C 指令-C51 in the library function intrins.h cycle _crol_ characters characters left _cror_ cycle shifted to right _irol_ the left circle _iror_ integer integer integer cycle shifted to right _lrol_ long cycle of the left circle _lror_ long integer _nop_ air operation shifted to right 8051 NOP instructions _testbit_ tested and cleared 8051 JBC-bit instruction/*--------------------------------------------------------------------------INTRINS.H 本征库函数Intrinsic functions for C51.Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/extern void _nop_ (void); //空操作,相当于8051的NOP指令extern bit _testbit_ (bit); //测试并清零位,相当于8051的JBC指令extern unsigned char _cror_ (unsigned char, unsigned char); //字符循环右移extern unsigned int _iror_ (unsigned int, unsigned char); //整数循环右移extern unsigned long _lror_ (unsigned long, unsigned char); //长整数循环右移extern unsigned char _crol_ (unsigned char, unsigned char); //字符循环左移extern unsigned int _irol_ (unsigned int, unsigned char); //整数循环左移extern unsigned long _lrol_ (unsigned long, unsigned char); //长整数循环左移extern unsigned char _chkfloat_(float); //测试并返回源点数状态/***************************************************************************详解函数: _crol_,_irol_,_lrol_原型: unsigned char _crol_(unsigned char val,unsigned char n);unsigned int _irol_(unsigned int val,unsigned char n);unsigned int _lrol_(unsigned int val,unsigned char n);功能: _crol_,_irol_,_lrol_以位形式将变量val循环左移n位。
C51资料-头文件
c51头文件的作用与c头文件的作用类似。
absacc。
h——-包含允许直接访问8051不同存储区的宏定义assert。
h-——文件定义assert宏,可以用来建立程序的测试条件ctype.h—--字符转换和分类程序intins。
h——-文件包含指示编译器产生嵌入式固有代码的程序的原型math.h—-—数学程序reg51.h--—51的特殊寄存器reg52。
h---52的特殊寄存器setjmp。
h—-—定义jmp_buf类型和setjmp和longjmp程序的原型stdarg.h—--可变长度参数列表程序stdlib.h—--存储器分配程序stdio。
h--—流输入和输出程序string。
h———字符转操作程序,缓冲区操作程序单片机中用c编程时头文件reg51。
h及reg52。
h解析我们在用c语言编程是往往第一行就是reg51.h或者其他的自定义头文件,我们怎么样来理解呢?1)“文件包含”处理。
程序的第一行是一个“文件包含”处理。
所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来。
程序中包含REG51.h文件的目的是为了要使用P1 (还有其他更多的符号)这个符号,即通知C 编译器,程序中所写的P1 是指80C51 单片机的P1 端口而不是其它变量。
这是如何做到的呢?打开reg51。
h 可以看到这样的一些内容:(此文件一般在C:\KEIL\C51\INC下,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件.如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了.) #ifndef __REG51_H__#define __REG51_H__sfr P0 = 0x80;。
.。
.。
.。
.。
.。
..sbit TI = 0x99;sbit RI = 0x98;#endif熟悉80C51 内部结构的读者不难看出,这里都是一些符号的定义,即规定符号名与地址的对应关系.注意其中有sfr P1 = 0x90;这样的一行,即定义P1 与地址0x90 对应,P1 口的地址就是0x90(0x90 是C 语言中十六进制数的写法,相当于汇编语言中写90H)。
Keil_C51中C语言编程的头文件包含方法
Keil C51中C语言编程的头文件包含方法一、首先摘抄一写keil官方网站的说明,了解其系统自带的头文件在哪里及如何预处理。
1、译文:主页/µVision4用户手册文件夹结构主页»关于µVision»文件夹结构安装程序复制开发工具到基础文件夹的子文件夹。
默认的基础文件夹包含:C:\Keil。
下面的表格列出了所有uVision开发工具的文件夹结构。
安装结果可能根据您安装的产品和组件有所变化。
译文:C51开发工具(为经典8051和其扩展种类)文件夹内容C:\KEIL\C51\ASM Assembler Source Template and Include files for the Macro Assembler.C:\KEIL\C51\BIN Executable files of theµVision/C51toolchain.C:\KEIL\C51\Examples Example programs.C:\KEIL\C51\FlashMon Configuration files for Flash Monitor and pre-configured versions.C:\KEIL\C51\HLP Online documentation forµVision/C51.C:\KEIL\C51\INC为C编译器的包含文件C:\KEIL\C51\ISD51Files for ISD51In-System Debugger and pre-configured versions.C:\KEIL\C51\LIB Run-time libraries and CPU startup files.C:\KEIL\C51\Mon51Configuration files for Monitor-51(for Classic8051Devices).C:\KEIL\C51\Mon390Configuration files for Monitor-390(for Dallas Contiguous Mode).C:\KEIL\C51\RtxTiny2RTX51Tiny Version2Real-Time Operation System.2、译文:头文件主页»预处理器»头文件头文件或包含文件被预处理器包含和处理。
keil软件数据类型
数据类型在标准C语言中,存在着如下六种基本数据类型:1、char:字符型;2、short = short int:短整型3、int:整型4、long = long int:长整型5、float:单精度浮点型6、double:双精度浮点型而面向51单片机的Keil uVision4对此进行了简化,因此,可以理解为只存在如下四种基本数据类型:1、char:字符型2、int = short = short int:整型3、long = long int:长整型4、float = double:单精度浮点型其中,基本整型数据类型又可以通过signed关键词扩展为有符号的signed char、signed int、signed long类型,或通过unsigned关键词扩展为无符号的unsigned char、unsigned int、unsigned long类型;而对于不加关键词扩展的char、int、long 本身,Keil uVision4则一律认为是signed类型(和c语言一致,均是默认为是有符号数字类型)。
应对51单片机硬件的一些特点,Keil uVision4还扩展了bit、sbit、sfr、sfr16等四种特殊基本数据类型,它们都是标准C中所没有的。
其中:1、bit:声明一个普通的位变量。
例如:"bit flag;"。
2、sbit:声明特殊功能寄存器中的某一位。
例如,使用"sbit TI = SCON^0;",就声明了TI为特殊功能寄存器SCON的第0位。
3、sfr:声明一个8位寄存器为特殊功能寄存器。
例如,将51单片机内存地址0x98处的存储单元声明为8位特殊功能寄存器SCON,可以使用"sfr SCON = 0x98;"语句。
4、sfr16:声明一个16位的寄存器为特殊功能寄存器。
为了将51单片机内存地址0xCC处开始的连续两个存储单元声明为一个统一的16位特殊功能寄存器T2,可以使用"sfr16 T2 = 0xCC;"语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
----------------------------------- REG51.HHeader file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __REG51_H__#define __REG51_H__/* BYTE Register */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;/* BIT Register *//* PSW */sbit CY = 0xD7;sbit AC = 0xD6; sbit RS1 = 0xD4;sbit RS0 = 0xD3;sbit OV = 0xD2;sbit P = 0xD0;/* TCON */sbit TF1 = 0x8F;sbit TR1 = 0x8E;sbit TF0 = 0x8D;sbit TR0 = 0x8C;sbit IE1 = 0x8B;sbit IT1 = 0x8A;sbit IE0 = 0x89;sbit IT0 = 0x88;/* IE */sbit EA = 0xAF;sbit ES = 0xAC;sbit ET1 = 0xAB;sbit EX1 = 0xAA;sbit ET0 = 0xA9;sbit EX0 = 0xA8;/* IP */sbit PS = 0xBC;sbit PT1 = 0xBB;sbit PX1 = 0xBA;sbit PT0 = 0xB9;sbit PX0 = 0xB8;/* P3 */sbit RD = 0xB7;sbit WR = 0xB6;sbit T1 = 0xB5;sbit T0 = 0xB4;sbit INT1 = 0xB3;sbit INT0 = 0xB2;sbit TXD = 0xB1;sbit RXD = 0xB0;/* SCON */sbit SM0 = 0x9F;sbit SM1 = 0x9E;sbit REN = 0x9C;sbit TB8 = 0x9B;sbit RB8 = 0x9A;sbit TI = 0x99;sbit RI = 0x98;#endif----------------------------------- REG52.HHeader file for generic 80C52 and 80C32 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __REG52_H__#define __REG52_H__/* BYTE Registers */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;/* 8052 Extensions */sfr T2CON = 0xC8;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC; /* BIT Registers *//* PSW */sbit CY = PSW^7;sbit AC = PSW^6;sbit F0 = PSW^5;sbit RS1 = PSW^4;sbit RS0 = PSW^3;sbit OV = PSW^2;sbit P = PSW^0; //8052 only/* TCON */sbit TF1 = TCON^7;sbit TR1 = TCON^6;sbit TF0 = TCON^5;sbit TR0 = TCON^4;sbit IE1 = TCON^3;sbit IT1 = TCON^2;sbit IE0 = TCON^1;sbit IT0 = TCON^0;/* IE */sbit EA = IE^7;sbit ET2 = IE^5; //8052 onlysbit ES = IE^4;sbit ET1 = IE^3;sbit EX1 = IE^2;sbit ET0 = IE^1;sbit EX0 = IE^0;/* IP */sbit PT2 = IP^5;sbit PS = IP^4;sbit PT1 = IP^3;sbit PX1 = IP^2;sbit PT0 = IP^1;sbit PX0 = IP^0;/* P3 */sbit RD = P3^7;sbit WR = P3^6;sbit T1 = P3^5;sbit INT1 = P3^3;sbit INT0 = P3^2;sbit TXD = P3^1;sbit RXD = P3^0;/* SCON */sbit SM0 = SCON^7;sbit SM1 = SCON^6;sbit SM2 = SCON^5;sbit REN = SCON^4;sbit TB8 = SCON^3;sbit RB8 = SCON^2;sbit TI = SCON^1;sbit RI = SCON^0;/* P1 */sbit T2EX = P1^1; // 8052 onlysbit T2 = P1^0; // 8052 only/* T2CON */sbit TF2 = T2CON^7;sbit EXF2 = T2CON^6;sbit RCLK = T2CON^5;sbit TCLK = T2CON^4;sbit EXEN2 = T2CON^3;sbit TR2 = T2CON^2;sbit C_T2 = T2CON^1;sbit CP_RL2 = T2CON^0;#endif/*-------------------------------------------------------------------------- INTRINS.HIntrinsic functions for C51. Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __INTRINS_H__#define __INTRINS_H__extern void _nop_ (void);extern bit _testbit_ (bit);extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float);extern void _push_ (unsigned char _sfr);extern void _pop_ (unsigned char _sfr);#endif /*--------------------------------------------------------------------------STRING.HString functions.Copyright (c) 1988-2002 KeilElektronik GmbH and KeilSoftware, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __STRING_H__#define __STRING_H__#ifndef _SIZE_T#define _SIZE_Ttypedef unsigned int size_t;#endif#ifndef NULL#define NULL ((void *) 0L)#endif#pragma SA VE#pragma REGPARMSextern char *strcat (char *s1, char*s2);extern char *strncat (char *s1,char *s2, int n);extern char strcmp (char *s1, char*s2);extern char strncmp (char *s1,char *s2, int n);extern char *strcpy (char *s1, char*s2);extern char *strncpy (char *s1,char *s2, int n);extern int strlen (char *);extern char *strchr (const char *s,char c);extern int strpos (const char *s,char c);extern char *strrchr (const char *s,char c);extern int strrpos (const char *s,char c);extern int strspn (char *s, char*set);extern int strcspn (char *s, char*set);extern char *strpbrk (char *s, char*set);extern char *strrpbrk (char *s,char *set);extern char *strstr (char *s, char*sub);extern char *strtok (char *str,const char *set);extern char memcmp (void *s1,void *s2, int n);extern void *memcpy (void *s1,void *s2, int n);extern void *memchr (void *s,char val, int n);extern void *memccpy (void *s1,void *s2, char val, int n);extern void *memmove (void *s1,void *s2, int n);extern void *memset (void *s,char val, int n);#pragma RESTORE#endif。