ImageVerifierCode 换一换
格式:DOCX , 页数:58 ,大小:124.48KB ,
资源ID:10063832      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10063832.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机学习C语言.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

51单片机学习C语言.docx

1、51单片机学习C语言第二课 C51的数据和数据类型(P55)2.1 KEIL51数据类型数据类型基本类型位型(bit)字符型(char)有符号(signed char)无符号(unsigned char)整型(int)有符号(signed int)无符号(unsigned int)长整型(long)有符号(signed long)无符号(unsigned long)浮点型(float)双精度浮点型(double)构造类型数组类型(array)结构类型(struct)共同体(union)枚举(enum)指针类型空类型2.2 KEIL51数据类型数据类型长度/bit长度/byte值 域charun

2、signed char810 255signed char81-128+127intunsigned int1620 65535signed int162-32768+32767longunsigned long3240 4 294 967 295signed long324-2 147 483 648+2 147 483 647float3241.175494E-383.402823E+38(6位数字)double6481.175494E-383.402823E+38(10位数字)一般指针*13bit10或1sbit10或1sfr810 255sfr161620 655352.3 KEIL5

3、1数据的存储类型与存储空间的对应关系数据存储器存储类型长度byte 与存储空间的对应关系片内数据存储器data1片内RAM区低128字节,访问速度快bdata1片内RAM位寻址区(20H2FH),允许位与字节混合访问idata1片内间接寻址区,可访问片内所有RAM地址空间(256字节)片外数据存储器xdata2片外数据存储区(64KB字节)空间,由MOVX DPTR访问pdata2分页寻址片外数据存储区(256字节)由MOVX R0访问片外程序存储器code代码存储区(64KB字节)由MOVC DPTR访问第三课 KEIL51数据的存储类型与存储器结构(P59)3.1 Cx51系列单片机在物理

4、上有四个存储空间(见图3-1) 片内程序存储器空间 片外程序存储器空间 片内数据存储器空间 片外数据存储器空间注:使用片外程序存储器时,单片机引脚EA接地。即 3.2 通用寄存器区:地址(00H 1FH) (P60)组号PSW.4/RS1 PSW.3/RS0地址00000H07H10108H0FH21010H17H31118H1FH3.3 可位寻址区(20H2FH)位地址:00H7FH 共128位(P61)RAM地址 位 地 址2F7F7E7D7C7B7A79782E77767574737271702D6F6E6D6C6B6A69682C67666564636261602B5F5E5D5C5B

5、5A59582A5756555453525150294F4E4D4C4B4A4948284746454443424140273F3E3D3C3B3A3938263736353433323130252F2E2D2C2B2A2928242726252423222120231F1E1D1C1B1A1918221716151413121110210F0E0D0C0B0A09082007060504030201003.4、用户RAM区 Cx51单片机用户RAM区(30H7FH); Cx52单片机用户RAM区(30HFFH)。注:上电复位时,堆栈指针SP指向07H,C51单片机的栈顶和栈底是从小到大 在使

6、用汇编语言时,通常将栈顶定位在30H(MOV SP,#30H),在使用C语言编程时堆栈是系统自动分配的,不需用户考虑。3.5 特殊功能寄存器(SFR)(P64)SFRMSB 位地址/位定义 LSB字节地址*BF0H*ACCE0H*PSWD7D6D5D4D3D2D1D0D0HCYACF0RS1RS0OVF1P*T2CONCFCECDCCCBCAC9C8C8HTF2EXF2RCLKTCLKEXEN2TR2CP/RL2*IPBFBEBDBCBBBAB9B8B8H-PSPT1PX1PT0PX0*P3B7B6B5B4B3B2B1B0B0HP3.7/RDP3.6/WRP3.5/T1P3.4/T0P3.3/

7、INT1P3.2/INT0P3.1/TXDP3.0/RXD*IEAFAEADACABAAA9A8A8HEA-ESET1EX1ET0EX0*P2A7A6A5A4A3A2A1A0A0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0SBUF99H*SCON9F9E9D9C9B9A999898HSM0SM1SM2RENTB8RB8TIRI*P1979695949392919090HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0TH18DHTH08CHTL18BHTL08AHTMODGATEM1M0GATEM1M089H*TCON8F8E8D8C8B8A898888H

8、TF1TR1TF0TR0IE1IT1IE0IT0PCON87HDPH83HDPL82HSP81H*P0878685848382818080HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0注1:* 表示可以进行位操作注2:KEIL Cx51提供了一种自主形式的定义方法。这种定义引入关键字“sfr”,语法如下: sfr SCON = 0x98;sfr TMOD = 0x89; /*见头文件reg51.h*/注3:定义 data char x 与定义 char data x是等价的,但应该尽量使用后一种方法。第四课 常量和变量(P56)4.1、 常量-在程序运行的过程中,其值不能改

9、变的量。与变量一样,常量可以有不同的数据类型,可以用一个标识符代表一个常量,习惯上常量标识符用大写字母,例: #define CONST 60 /*即: CONST = 60 */ #define PAI 3.1416 /*即: PAI = 3.1416 */4.2、 变量-在程序运行的过程中,其值可以改变的量。例: #define CONST 60 main() int var1,result; var1=2;result= var1 * CONST;while(1)运行结果result=1204.3、变量在存储器中的物理排列(图4-1) 1)、位变量 2)、整型变量 3)、浮点型变量(1位

10、符号位,8位指数位,23位尾数位)地址+0+1+2+3内容SEEE EEEEEMMM MMMMMMMM MMMMMMMM MMMM其中,S符号位,1表示负,0表示正;E:阶码(在两个字节中)偏移为127;M:23位尾数,最高位为“1”。一个整型变量值为0x1234, 一个长整型变量值为0x12345678,一个浮点变量值为-12.5的十六进制为0xC1480000,它们在内存的排列分别表示在4-1中(书2 P52)注1:AT89C51 芯片中RAM只有低128 位,而AT89C52芯片中RAM另外还有高128位,地址为80H到FFH,并和特殊寄存器SFR地址重叠。注2:在编写程序时,如是使用s

11、igned和unsigned两种数据类型,那么就得使用两种格式类型的库函数,这将使占用的存储空间成倍增长,因此在编程时,如是只强调程序的运算速度而又不进行负数运算,最好采用无符号(unsigned)格式。注3:尽量使用位变量。注4:缩写形式定义: typedef unsigned char ucha typedef unsigned uint uint4.4 存储模式及说明(P63)存储模式说 明SMALL小模式参数及局部变量放入可直接寻址的片内存储器(最大128字节,默认存储类型是data)COMPACT紧凑模式参数及局部变量分页外存储器(最大256字节,默认存储类型是pdata),通过寄存

12、器 R0和R1间接寻址,棧空间位于单片机内部RAM。LARGE大模式参数及局部变量直接放入片外数据存储器(最大64KB,默认存储类型是xdata),通过数据指针DPTR来寻址,访问效率低。第五课 8051并行接口及其Cx51定义(P66)P0-P3口,32根I/O线;输入缓冲器;输出缓冲器;引至芯片外的端口引脚;P0、P1、P3为准双向口;P0为双向三态口;向外扩展存储器要用P0口和P2口,P2口输出地址高8位(A15A8),P0口数据和地址复用;P0P3可以字节寻址,也可以位寻址; 标准8051的端口没有数据方向寄存器。P1、P2、和P3都有内部上拉,都可以作为输入或输出。写端口就是写一个要

13、送端口的值;读端口,必须先向端口写“1”(单片机复位时口线的初值是全“1”)第六课 位变量(P68)6.1、位变量的Cx51的语法及语义如下: bit dir_bit;/*将dir_bit定义为位变量*/6.2、函数可包含类型为bit的参数,也可以将其作为返回值。 例:bit func(bit b0,bit b1) /*/ Return (b1); 6.3、对位变量定义的限制: 位变量不能定义成一个指针,如不能定义 bit *bit_point; 不存在位数组, 如不能定义 bit b_array ;6.4、 可位寻址对象: 是指可以字节或位寻址的对象。位于8051内部RAM中,因此存储类型为

14、idata.6.5、sbit 位变量名位地址sbit P1_1 = Ox91;这样是把位的绝对地址赋给位变量。同sfr 一样sbit 的位地址必须位于80H-FFH 之间。6.6、sbit 位变量名特殊功能寄存器名位位置sft P1 = 0x90;sbit P1_1 = P1 1; /先定义一个特殊功能寄存器名再指定位变量名所在的位置当可寻址位位于特殊功能寄存器中时可采用这种方法6.7、sbit 位变量名字节地址位位置sbit P1_1 = 0x90 1;sbit P1_0 = P1 0; /而是自己定义特殊寄存器sfr P1 = 0x90; /这里没有使用预定义文件,sbit P1_7 =

15、0x90 7; /之前我们使用的预定义文件其实就是这个作用sbit P1_1 = 0x91; /这里分别定义P1 端口和P10,P11,P17 引脚第七课 算术运算符及其表达式(P69)7.1、Cx51算术运算符及其表达式 算术运算符表达式含义+a+b加法运算符,或正值符号 -a-b减法运算符,或负值符号 * a*b乘法运算符, / a/b除法运算符, %9%5余4模(求余)运算符,或正值符号7.2、Cx51关系运算符及其表达式 算术运算符表达式含义a b小于 a b大于 = a = b大于或等于 =a = b测试等于 !=a != b测试不等于7.3、Cx51逻辑运算符及其表达式 算术运算符

16、表达式含义&a & b逻辑“与”(AND) |a | b逻辑“或”(OR) ! a ! b逻辑“非”(NOT)7.4、Cx51位操作及其表达式 算术运算符表达式含义&a & b按位与 |a | b按位或 a b按位异或 a b按位取反 a a 8右移8位 注:左移或右移,空出位补“0”,移出位丢掉。7.5、Cx51自增减运算符及其表达式 自增减运算符含义+i,-i在使用i之前,先使i值加(减)1 i+,i-在使用i之后,再使i值加(减)17.6、Cx51复合运算符及其表达式 算术运算符表达式含义+=a += ba=a+b 加法 -=a -= ba=a-b 减法 *=a *= ba=a*b 乘法

17、 /= a /= ba=a/b 除法 %=a %= ba=a%b 求余 =a = 8a=a=a = 8a=a8右移 &=a &= ba=a&b按位与 =a = ba=ab按位异或 |=a |= ba=a|b按位或 =a = ba=ab按位取反注:优先级说明第八课 Cx51控制语句(P80)81、循环语句 while do while if /elseswitch/case(P90)for语句for (表达式1;表达式2;表达式3)for (i=0;i50;i+)特例1:for (;i50;i+)缺省表达式1,不对i设初值特例2:for (i=1;i+)sum=sum+i不判断循环条件,无休止地

18、进行下去。相当于 i=1; while (1)sum= sum+1;i+;特例3:for ( ;i100;)sum=sum+1;i+相当于 while (i100)sum= sum+1;i+;特例4:for (i=1;i ch01- ch02- ch03- ch04- ch10- ch11- ch12- ch13- ch14-ch20- ch21- ch22- ch23- ch2413.5、二维数组初始化 1、在定义数组时给数组的全部元素赋值 int idata ch34=1,2,3,4,5,6,7,8,9,10,11,12; int idata ch34=1,2,3,4,5,6,7,8,9,10,11,12; 2、在定义数组时给数组的部分元素赋值 int a34=1,5,9;/*赋值后数组元素如下*/ 13.6、字符数组的定义方法 类型说明符 数组名整型表达式 char ch10;13.7、字符数组置初值 1、 char ch10=B,E,I, ,J,I,N,G,0;/*0是结束符,如果定义时未加结束符,C编译器自动在其后面加入,所以定义字符数组的长度要比字符串中最长的串多一个字符,用于装入字符串的结束符0*/2、char ch10=“BEI JING”;3、cha

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2