keil快速入门到精通.docx
- 文档编号:11517296
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:9
- 大小:21.16KB
keil快速入门到精通.docx
《keil快速入门到精通.docx》由会员分享,可在线阅读,更多相关《keil快速入门到精通.docx(9页珍藏版)》请在冰豆网上搜索。
keil快速入门到精通
Keil快速入门到精通
KEIL的使用
1.51(52)的编程语言常用的有二种:
汇编语言;C语言。
汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。
对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。
2.KEIL开发软件,建立C项目
数据类型
数据类型
长度
值域
unsignedchar
单字节
0~255
signedchar
单字节
-128~+127
unsignedint
双字节
0~65535
signedint
双字节
-32768~+32767
unsignedlong
四字节
0~4294967295
signedlong
四字节
-2147483648~+2147483647
float
四字节
±1.175494E-38~±3.402823E+38
*
1~3字节
对象的地址
bit
位
0或1
sfr
单字节
0~255
sfr16
双字节
0~65535
sbit
位
0或1
1.char字符类型
char类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。
分无符号字符类型unsignedchar和有符号字符类型signedchar,默认值为signedchar类型。
unsignedchar类型用字节中所有的位来表示数值,所可以表达的数值范围是0~255。
signedchar类型用字节中最高位字节表示数据的符号,"0"表示正数,"1"表示负数,负数用补码表示。
所能表示的数值范围是-128~+127。
unsignedchar常用于处理ASCII字符或用于处理小于或等于255的整型数。
2.int整型
int整型长度为两个字节,用于存放一个双字节数据。
分有符号int整型数signedint和无符号整型数unsignedint,默认值为signedint类型。
signedint表示的数值范围是-32768~+32767,字节中最高位表示数据的符号,"0"表示正数,"1"表示负数。
unsignedint表示的数值范围是0~65535。
3.long长整型
long长整型长度为四个字节,用于存放一个四字节数据。
分有符号long长整型signedlong和无符号长整型unsignedlong,默认值为signedlong类型。
signedint表示的数值范围是-2147483648~+2147483647,字节中最高位表示数据的符号,"0"表示正数,"1"表示负数。
unsignedlong表示的数值范围是0~4294967295。
4.float浮点型
float浮点型在十进制中具有7位有效数字,占用四个字节。
5.*指针型
指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。
这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同,在C51中它的长度一般为1~3个字节。
指针变量也具有类型
6.bit位标量
bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。
它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。
7.sfr特殊功能寄存器
sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。
利用它可以访问51单片机内部的所有特殊功能寄存器。
如用sfrP1=0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1=255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
8.sfr1616位特殊功能寄存器
sfr16占用两个内存单元,值域为0~65535。
sfr16和sfr一样用于操作特殊功能寄存器,所不同的是它用于操作占两个字节的寄存器,好定时器T0和T1。
9.Sbit寻址位
sbit同位是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。
如先前我们定义了
sfrP1=0x90;//因P1端口的寄存器是可位寻址的,所以我们可以定义
sbitP1_1=P1^1;//P1_1为P1中的P1.1引脚
//同样我们可以用P1.1的地址去写,如sbitP1_1=0x91;
1.整型常量可以表示为十进制如123,0,-89等。
十六进制则以0x开头如0x34,-0x3B等。
长整型就在数字后面加字母L,如104L,034L,0xF340等。
2.浮点型常量可分为十进制和指数表示形式。
十进制由数字和小数点组成,如0.888,3345.345,0.0等,整数或小数部分为0,可以省略但必须有小数点。
指数表示形式为[±]数字[.数字]e[±]数字,[]中的内容为可选项,其中内容根据具体情况可有可无,但其余部分必须有,如125e3,7e9,-3.0e-3。
3.字符型常量是单引号内的字符,如'a','d'等,不可以显示的控制字符,可以在该字符前面加一个反斜杠"\"组成专用转义字符。
4.字符串型常量由双引号内的字符组成,如"test","OK"等。
当引号内的没有字符时,为空字符串。
在使用特殊字符时同样要使用转义字符如双引号。
在C中字符串常量是做为字符类型数组来处理的,在存储字符串时系统会在字符串尾部加上\o转义字符以作为该字符串的结束符。
字符串常量"A"和字符常量'A'是不同的,前者在存储时多占用一个字节的字间。
5.位标量,它的值是一个二进制。
常量可用在不必改变值的场合,如固定的数据表,字库等。
常量的定义方式有几种,下面来加以说明。
#defineFalse0x0;//用预定义语句可以定义常量
#defineTrue0x1;//这里定义False为0,True为1
//在程序中用到False编译时自动用0替换,同理True替换为1
unsignedintcodea=100;//这一句用code把a定义在程序存储器中并赋值
constunsignedintc=100;//用const定义c为无符号int常量并赋值
变量
定义一个变量的格式:
[存储种类]数据类型[存储器类型]变量名表
在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。
存储种类有四种:
自动(auto),外部(extern),静态(static)和寄存器(register),缺省类型为自动(auto)。
而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。
说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。
存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确的定位。
表中是KEILuVision2所能认别的存储器类型。
注意的是在AT89C51芯片中RAM只有低128位,位于80H到FFH的高128位则在52芯片中才有用,并和特殊寄存器地址重叠。
存储器类型
说明
data
直接访问内部数据存储器(128字节),访问速度最快
bdata
可位寻址内部数据存储器(16字节),允许位与字节混合访问
idata
间接访问内部数据存储器(256字节),允许访问全部内部地址
pdata
分页访问外部数据存储器(256字节),用MOVX@Ri指令访问
xdata
外部数据存储器(64KB),用MOVX@DPTR指令访问
code
程序存储器(64KB),用MOVC@A+DPTR指令访问
如果省略存储器类型,系统则会按编译模式SMALL,COMPACT或LARGE所规定的默认存储器类型去指定变量的存储区域。
无论什么存储模式都可以声明变量在任何的8051存储区范围,然而把最常用的命令如循环计数器和队列索引放在内部数据区可以显著的提高系统性能。
还有要指出的就是变量的存储种类与存储器类型是完全无关的。
sfr和sfr16可以直接对51单片机的特殊寄存器进行定义,定义方法如下:
sfr特殊功能寄存器名=特殊功能寄存器地址常数;
sfr16特殊功能寄存器名=特殊功能寄存器地址常数;
sfrP1=0x90;//定义P1I/O口,其地址90H
sfr关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1口可以用P1为名,这样程序会变的好读好多。
等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表。
sfr是定义8位的特殊功能寄存器而sfr16则是用来定义16位特殊功能寄存器,如8052的T2定时器,可以定义为:
sfr16T2=0xCC;//这里定义8052定时器2,地址为T2L=CCH,T2H=CDH
用sfr16定义16位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上。
注意的是不能用于定时器0和1的定义。
sbit可定义可位寻址对象。
如访问特殊功能寄存器中的某位。
其实这样应用是经常要用的如要访问P1口中的第2个引脚P1.1。
我们可以照以下的方法去定义:
(1)sbit位变量名=位地址
sbitP1_1=Ox91;
这样是把位的绝对地址赋给位变量。
同sfr一样sbit的位地址必须位于80H-FFH之间。
(2)Sbit位变量名=特殊功能寄存器名^位位置
sftP1=0x90;
sbitP1_1=P1^1;//先定义一个特殊功能寄存器名再指定位变量名所在的位置
当可寻址位位于特殊功能寄存器中时可采用这种方法
(3)sbit位变量名=字节地址^位位置
sbitP1_1=0x90^1;
这种方法其实和2是一样的,只是把特殊功能寄存器的位址直接用常数表示。
在C51存储器类型中提供有一个bdata的存储器类型,这个是指可位寻址的数据存储器,位于单片机的可位寻址区中,可以将要求可位录址的数据定义为bdata,如:
unsignedcharbdataib;//在可位寻址区定义ucsignedchar类型的变量ib
intbdataab[2];//在可位寻址区定义数组ab[2],这些也称为可寻址位对象
sbitib7=ib^7//用关键字sbit定义位变量来独立访问可寻址位对象的其中一位
sbitab12=ab[1]^12;
操作符"^"后面的位位置的最大值取决于指定的基址类型,char0-7,int0-15,long0-31。
重新定义数据类型typedef已有的数据类型新的数据类型名
typedefintinteger;
一、注释
1,采用中文;
2,开始的注释:
文件(模块)注释内容:
公司名称、版权、作者名称、修改时间、模块功能、背景介绍等,复杂的算法需要加上流程说明;
比如:
/*模块名:
LCD模块LCD型号:
HD44780*/
/*创建人:
zhaojunjie日期:
2001-06-08*/
/*版本:
函数开头的注释内容:
函数名称、功能、说明输入、返回、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明;
/*********************************************************************
*
*函数名:
v_LcdInit
*功能描述:
LCD初始化
*函数说明:
初始化命令:
0x3c,0x08,0x01,0x06,0x10,0x0c
*调用函数:
v_Delaymsec(),v_LcdCmd()
*全局变量:
*输入:
无
*返回:
无
*设计者:
zhao日期:
2001-12-09
*修改者:
zhao日期:
2001-12-09
*版本:
***********************************************************************/
3、程序中的注释内容:
修改时间和作者、方便理解的注释等。
注释内容应简炼、清楚、明了,一目了然的语句不加注释。
二、命名:
命名必须具有一定的实际意义。
1、常量的命名:
全部用大写。
2、变量的命名:
变量名加前缀,前缀反映变量的数据类型,用小写,反映变量意义的第一个字母大写,其他小写。
其中变量数据类型:
unsignedchar前缀ucsignedchar前缀sc
unsignedint前缀uisignedint前缀si
unsignedlong前缀ulsignedlong前缀sl
bit前缀b指针前缀p
例:
ucReceiveData接收数据
3、结构体命名:
4、函数的命名:
函数名首字大写,若包含有两个单词的每个单词首字母大写。
函数原型说明包括:
引用外来函数及内部函数,外部引用必须在右侧注明函数来源:
模块名及文件名,内部函数,只要注释其定义文件名;
三、编辑风格
1、缩进:
缩进以Tab为单位,一个Tab为四个空格大小。
预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。
语句块的“{”“}”配对对齐,并与其前一行对齐;
2、空格:
数据和函数在其类型,修饰名称之间适当空格并据情况对齐。
关键字原则上空一格,如:
if(...)等,运算符的空格规定如下:
“->”、“[”、“]”、“++”、“--”、“~”、“!
”、“+”、“-”(指正负号),“&”(取址或引用)、“*”(指使用指针时)等几个运算符两边不空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括大多数二目运算符和三目运算符“?
:
”两边均空一格,“(”、“)”运算符在其内侧空一格,在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。
“,”运算符只在其后空一格,需对齐时也可不空或多空格,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。
3、对齐:
原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。
另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在“,”处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。
4、空行:
程序文件结构各部分之间空两行,若不必要也可只空一行,各函数实现之间一般空两行
5、修改:
版本封存以后的修改一定要将老语句用封闭,不能自行删除或修改,并要在文件及函数的修改记录中加以记录。
6、形参:
在定义函数时,在函数名后面括号中直接进行形式参数说明,不再另行说明。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- keil 快速 入门 精通