STC51入门笔记(郭天祥C语言)---第一节:C51基础知识

版权声明: https://blog.csdn.net/qq_38351824/article/details/88883379

声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。


作者:sumjess


一、STC51单片机标号信息及封装类型:

1、51单片机芯片厂商产品列表:

在这里插入图片描述
在这里插入图片描述

二、51单片机外部引脚介绍:

1、标识解释:

STC—前缀,表示芯片为STC公司生产的产品。其他前缀还有如AT,i,Winbond,SST等。

8—表示该芯片为8051内核芯片

9—表示内部含Flash E^2PROM储存器。还有如80C51中的0表示内部含Mask ROM(掩模ROM)存储器;如87C51中7表示内部含ERPOM存储器(紫外线可擦除ROM)。

C—表示该器件为CMOS产品。还有如89LV52和89LE58中的LV和LE都表示该芯片为低电压产品(通常为3.3V供电);而89S52中的S表示该芯片含有可串行下载功能的Flash存储器,即具有ISP可在线编程功能。

5—固定不变。

1—表示该芯片内部程序存储空间的大小,1为4KB,2为8KB,3为12KB,即该数乘上4KB就是芯片内部程序存储空间大小。

40—表示该芯片外部晶振最高可接入40MHz。对AT单片机数值一般为24,表示其外部晶振最高为24MHz。

C—产品级别,表示芯片使用温度范围。C表示商业级,温度范围为0℃~+70℃。

在这里插入图片描述

PDIP—产品封装型号PDIP表示双列直插式。

0707—表示本批芯片生产日期为07年第7周。

CU8138.00D—不详。

2、区分芯片引脚号:

首先找到单片机表面凹进去的小圆坑,或这个使用颜色标识的小标记(圆点或三角或其他小图形),这个小圆坑或者小标记所对应的引脚就是这个芯片的第1引脚,然后逆时针方向数下去。

在这里插入图片描述

按照上图为例介绍单片机各个引脚的功能(40个引脚):

① 电源和时钟引脚。如Vcc、GND、XTAL1、XTAL2(需掌握)

在这里插入图片描述

② 编程控制引脚。如在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③ I/O口引脚。如P0、P1、P2、P3、,4组8位I/O(需掌握)

在这里插入图片描述
在这里插入图片描述

三、电平特性:

在这里插入图片描述

常用逻辑电平:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、二进制与十六进制:

进制学习

在线转换进制

五、二进制逻辑运算:

① 按位取反: ~ 每一位上的0和1互换;

左移: << 左移运算运算符左边是移位对象,右边是整型表达式,代表左移的位数。左移时,右端(低位)补0;左端(高位)移出的部分舍弃。

右移: >> 右移时,右端(低位)移出的二进制舍弃,左端(高位)移入的二进制分两种情况:对于无符号整数和正整数,高位补0;对于负数,高位补1。

short int a =-8,b;
b=a>>2;
//a的二进制码:1111111111111000
//移位后     :1111111111111110

④ 按位& 全1为1,其它为0

⑤ 按位异或 ^ 不同为1,其它为0

⑥ 按位 | 有1为1,其它为0

六、单片机的C51基础知识介绍:

1、利用C语言开发单片机的优点:

C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程。

C51编程与ASM-51编程相比:

①寄存器分配、不同存储器的寻址及数据类型等细节完全由编译器自动管理。
②程序有规范的结构,可分成不同的函数,可使程序结构化。
③库中包含许多标准子程序,具有较强的数据处理能力,使用方便。
④具有方便的模块化编程技术,使已编好的程序很容易移植。
⑤对单片机的指令系统不要求有任何的了解, 就可以用 C 语言直接编程操作单片机。

2、C51中的基本数据类型:

在这里插入图片描述

大家在 C 语言的书籍上还能看到有short int, long int, signed short int 等数据类型, 在 单片机的C 语言中我们默认的规则如下: short int 即为 int, long int 即为 long, 前面若无 unsigned 符号则一律认为是 signed 型。

3、C51 数据类型扩充定义:

单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际就是将这个寄存器在内存中的地址编号赋给这个名称,这样编译器在以后的程序中才可认知这些名称所对应的寄存器。对千大多数初学者来讲, 这些寄存器的声明已经完全被包含在 51 单片机的特殊功能寄存器声明头文件 " reg5l .h" 中了, 初学者若不想深入了解,完 全 可 以 暂不操作它。

sfr-特殊功能寄存器的数据声明,声明一个8位的寄存器。
sfr16—16位特殊功能寄存器的数据声明
sbit— 特殊功能位声明, 也就是声明某一个特殊功能寄存器中的某一位。
bit— 位变量声明,当定义一个位变量时可使用此符号。

1、例如: sfr SCON = Ox98;
SCON 是单片机的串行口控制寄存器, 这个寄存器在单片机内存中的地址为 Ox98 。 这 样声 明 后 , 我 们 在以后要操作这个控制寄存器时, 就可以直接对 SCON 进行操作, 这时编译器也会明白 , 我们实际要操作的是单片机内部Ox98 地址处的这个寄存器,而 SCON 仅仅是这个地址的一个代号或是名称而已,当然,我们也可以定义成其他的名称。
2、例如: sfr16 T2 = OxCC;
声明一个16位的特殊功能寄存器, 它的起始地址为 OxCC 。
3、例如: shit TI =SCON^1;
SCON 是一个 8 位寄存器, SCON ^ 1 表示这个 8 位寄存器的次低位, 最低位是 SCON^O;
SCON^7 表示这个寄存器的最高位。该语句的功能就是将 SCON 寄存器的次低位声明为 TI,
以后若要对 SCON 寄存器的次低位操作, 则可直接操作 Tl。

4、C51 中常用的头文件:

通常有 reg51.h,reg52.h, math.h,ctype.h,stdio.h, stdlib.h,absacc.h,intrins.h。

但常用的却只有 reg51.h或reg52.h,math.h。

reg51.h 和 reg52.h 是定义 51 单片机或 52 单片机特殊功能寄存器和位寄存器的, 这两个头文件中大部分内容是一样的, 52 单片机比 51 单片机多一个定时器T2, 因此, reg52.h 中也就比 reg51.h 中多几行定义T2 寄存器的内容。
math.h 是定义常用数学运算的, 比如求绝对值、求方根、求正弦和余弦等, 该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。
当我们对特殊功能寄存器有了基本的了解后,大家就可以自己动手来写具有自己风格的头文件了。例如, 在 TX-l C 单片机学习板上, 我们用的是STC 公司的 51 内核单片机, 该单片机内部除了一般 51 单片机所具有的功能外, 还有一些特殊功能, 当我们要使用这些特殊功能时,就要对它进行另外的操作,此时就需要我们自己定义这些特殊功能寄存器的名称,我们可以根据芯片说明文档上所注明的各个寄存器地址来定义它们,关千这方面的扩展,我们会在以后的实际应用中再次提到。

5、C51 中的运算符:

C51 算术运算、关系(逻辑)运算、位运算符如下表所示。
“/” 用在整数除法中时, 10 /3=3, 求模运算也是在整数中, 如 10 对 3 求模即 10 当中含有多少个整数的 3, 即 3 个。当进行小数除法运算时, 我们需要这样写 10/3.0 , 它的结果是3.333333, 若写成 10/3 它只能得到整数而得不到小数, 这一点请大家一定注意。
"% ''求余运算, 也是在整数中, 如 10%3=1, 即 10 当中含有整数倍的 3 取掉后剩下的数即为所求余数

在这里插入图片描述
"==“两个等号写在一起表示测试相等,即判断两个等号两边的数是否相等的意思,在 写程序时我们再做详解。” !=, 判断两个等号两边的数是否不相等。
在这里插入图片描述

6、C51 中的基础语句:

在这里插入图片描述

7、学习单片机应该掌握的主要内容:

( 1 ) 掌握单片机最小系统能够运行的必要条件。
①电源
②晶振
③复位电路
( 2 ) 掌握对单片机任意 VO 口的操作。
句输出控制电平高低。
@输入检测电平高低。
( 3 ) 定时器: 重点掌握最常用的方式2 。
( 4 ) 中断: 掌握外部中断、定时器中断、串口中断。
( 5 ) 串口通信: 掌握单片机之间通信、单片机与计算机之间的通信。

掌握了以上这几点知识后,可以说大家对单片机已经基本掌握了,其他的知识也就是在 这些知识点的基础上扩展出的, 只 要大家愿意积极尝试, 善于举一反三, 很 快便能将单片机相关的知识轻松掌握。

猜你喜欢

转载自blog.csdn.net/qq_38351824/article/details/88883379