51单片机学习C语言 联系客服

发布时间 : 星期一 文章51单片机学习C语言更新完毕开始阅读1b39ff8a84868762caaed546

注1:AT89C51 芯片中RAM只有低128 位,而AT89C52芯片中RAM另外还有高128位,地址为

80H到FFH,并和特殊寄存器SFR地址重叠。

注2:在编写程序时,如是使用signed和unsigned两种数据类型,那么就得使用两种格式类型的库

函数,这将使占用的存储空间成倍增长,因此在编程时,如是只强调程序的运算速度而又不进行负数运算,最好采用无符号(unsigned)格式。 注3:尽量使用位变量。

注4:缩写形式定义: typedef unsigned char ucha typedef unsigned uint uint

4.4 存储模式及说明(P63) 存储模式 SMALL 小模式 COMPACT 紧凑模式 LARGE 大模式 说 明 参数及局部变量放入可直接寻址的片内存储器(最大128字节,默认存储类型是data) 参数及局部变量分页外存储器(最大256字节,默认存储类型是pdata),通过寄存器 R0和R1间接寻址,棧空间位于单片机内部RAM。 参数及局部变量直接放入片外数据存储器(最大64KB,默认存储类型是xdata),通过数据指针DPTR来寻址,访问效率低。 第五课 8051并行接口及其Cx51定义(P66)

P0-P3口,32根I/O线;

输入缓冲器;输出缓冲器;引至芯片外的端口引脚; P0、P1、P3为准双向口;P0为双向三态口;

向外扩展存储器要用P0口和P2口,P2口输出地址高8位(A15~A8),P0口数据和地址复用; P0~P3可以字节寻址,也可以位寻址;

标准8051的端口没有数据方向寄存器。P1、P2、和P3都有内部上拉,都可以作为输入或输出。 写端口就是写一个要送端口的值;

读端口,必须先向端口写“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中,因此存储类型为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 = 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 a != b 含义 小于 大于 小于或等于 大于或等于 测试等于 测试不等于

7.3、Cx51逻辑运算符及其表达式

算术运算符 && || ! 表达式 a && b a || b a ! b 含义 逻辑“与”(AND) 逻辑“或”(OR) 逻辑“非”(NOT)

7.4、Cx51位操作及其表达式 算术运算符 & | ^ ` << >> 表达式 a & b a | b a ^ b a ~ b a << 7 a >> 8 含义 按位与 按位或 按位异或 按位取反 左移7位 右移8位

注:左移或右移,空出位补“0”,移出位丢掉。

7.5、Cx51自增减运算符及其表达式 自增减运算符 ++i,--i i++,i-- 含义 在使用i之前,先使i值加(减)1 在使用i之后,再使i值加(减)1

7.6、Cx51复合运算符及其表达式 算术运算符 += -= *= /= %= <<= >>= &= ^= |= ~= 注:优先级说明

表达式 a += b a -= b a *= b a /= b a %= b a <<= 8 a >>= 8 a &= b a ^= b a |= b a ~= b 含义 a=a+b 加法 a=a-b 减法 a=a*b 乘法 a=a/b 除法 a=a%b 求余 a=a<<8左移 a=a>>8右移 a=a&b按位与 a=a^b按位异或 a=a|b按位或 a=a~b按位取反

第八课 Cx51控制语句(P80) 8.1、循环语句 while

do while if /else switch/case

(P90) for语句

for (表达式1;表达式2;表达式3) for (i=0;i<50;i++) 特例1:for (;i<50;i++)

缺省表达式1,不对i设初值 特例2:for (i=1;;i++){sum=sum+i}

不判断循环条件,无休止地进行下去。相当于 i=1;

while (1) {sum= sum+1; i++; }

特例3:for ( ;i<100;){sum=sum+1;i++}

相当于

while (i<100) {sum= sum+1; i++; }

特例4:for (i=1;i<100;i++);

没有循环体,起延时作用 特例5:for (;;)

{/*循环体*/ } 相当于

while (1)

{/*循环体*/

} /*死循环体*/

为了使程序具有可读性,不主张使用for语句的特例

第九课 Cx51 T0中断(P182) 9.1、T0定时器/计数器操作模式