一、基础知识
1.1 名词解释
比特(bit): 即一位二进制数,用小写b表示bit。二进制数字后面用B或b作后缀。
字节(Byte): 由八位二进制数构成,一般用大写B表示。十六进制数后面用H作后缀,或0X、0x作前缀。
PROM(Programmable ROM): 可编程(烧写)只读存储器,内容断电可以维持。内容的存储过程称为固化、烧录、烧写。烧写(一次性)时需要加高电压。
EPROM(Erasable PROM): 可擦除、可编程只读存储器,也需要高电压。存储器顶部有窗口,专用紫外线照射可擦除其内容。
EEPROM( Electrical EPROM,E^2PROM): 电可擦除、可编程只读存储器。5v电压即可反复烧写。
Harvard(哈佛)体系结构: 程序存储器和数据存储器是分开的。
冯`诺依曼体系结构: 程序存储器和数据存储器为一个整体。
编程器:用来将用户编写好的程序写到单片机中的一个设备,是硬件设备。
仿真器:用户可以通过仿真器和配套的计算机软件,对编写好的程序进行调试,也是硬件设备。
1.2 单片机体系结构
8051 cpu: 完成运算和控制功能。
8051 ram: 内部存储器,共有256个字节单元,高128字节被专用寄存器SFR用,低128字节供用户作寄存器用,地址范围是00H~7FH,简称内部 RAM
8051 rom: 内部程序存储器,共有4KB ROM,地址范围是0000H~0FFFH,用于存放程序、原始数据或表格,简称内部ROM
定时/计数器:8051共有2个16位的定时/计数器,供定时或计数结果实现控制功能。
并行I/O口:8051共有4个8位并行的I/O口(P0,P1,P2,P3),以实现数据 的并行输入输出。
串行口:8051单片机有一个全双工的串行口。
中断控制系统:8051共有5个中断源,2外部中断,2定时/计数中断,1串行中断。分为高级和低级两个优先级别。
时钟电路:8051内部有时钟电路,但石英晶体和微调电容需要外接。时钟电路为计算机产生时钟脉冲序列。系统允许频率一般为6MHz~12MHz。
内部数据总线:内部数据总线8位宽。
Vss(20脚):负电源端,接地,0v基准。
Vcc(40脚):正电源端,+5v电源。
外接晶振引脚为 XTAL1和XTAL2,XTAL1(19脚)是内部振荡电路反相放大器的输入端,XTAL2(20脚)是...的输出端。
RST/VPD(9脚)当单片机运行时,在此引脚上出现两个机器周期的高电平,将使单片机复位。
P0(39脚~32脚)是一个8位漏极开路型双向并行IO口。
P1(1脚~8脚)是一个带有内部提升电阻的8位双向并行IO口
P2、P3 同P1
P3口的第二功能:
P3.0 RXD:串行输入
P3.1 TXD:串行输出
P3.2 INT0:外部中断0请求输入端
P3.3 INT1:外部中断1请求输入端
P3.4 T0:定时器/计数器0外部脉冲输入
P3.5 T1:定时器/计数器1外部脉冲输入
P3.6 WR:外部数据存储器写选信号输出
P3.7 RD:外部数据存储器读选信号输入
振荡周期:振荡周期与振荡频率互为倒数关系。
状态周期:2个振荡周期为1用状态周期。
机器周期:一个机器周期含有6个状态周期。指令执行的最小时间单位。
指令周期:最大的时序定时单位,执行一条命令所需要的全部时间称为指令周期。不同的指令不同。8051通常分为单、双、四周期指令三种。
程序存储器系统保留地址:
0000H~0002H: 复位后初始化引导程序
0003H~000AH: 外部中断0,EX0
000BH~0012H: 定时器0溢出中断,ET0
0013H~001AH: 外部中断1,EX1
001BH~0022H: 定时器1溢出中断,ET1
0023H~002AH: 串行口中断,ES
中断允许寄存器IE各位分布:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
EA | - | - | ES | ET1 | Ex1 | ET0 | EX0 |
复位时IE寄存器各位都被清0,即默认状态下所有中断源都被禁止。
中断优先级由IP寄存器控制:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
- | - | - | PS | PT1 | PX1 | PT0 | PX0 |
当该位为1时,定义为高优先级,否则为低优先级。
高优先级可以中断低优先级,而同级不可互相中断。
同时收到同一优先级中断时,按以下顺序响应:外部0,定时0,外部1,定时1,串口。
1.3 51单片机中的c语言
名称 | 长度 | 值域 |
---|---|---|
位型 bit | 1 bit | 0,1 |
字符型 unsigned char, char | 1 byte | 0-255,-128~127 |
整型 unsigned int, int | 2 bytes | 0-65526, -32768~32767 |
长整型 unsigned long, long | 4 bytes | 0~4294967295, -2147483648~2147483647 |
浮点型 float | 4 bytes | |
双精度浮点型 double | 8 bytes |
数据存储空间关键字
关键字 | 存储器对应关系 |
---|---|
data | 直接寻址片内数据存储器(128B) |
bdata | 片内位寻址存储空间(16B) |
idata | 间接寻址片内数据存储空间,可以访问RAM全部内容 |
pdata | 分页寻址片外数据存储器(256B) |
xdata | 片外数据存储器(64KB) |
code | 代码存储器(64KB) |
c51语言支持使用关键字sfr和sfr16来定义51单片机的片内寄存器,
同时支持使用sbit关键字对寄存器或者变量中的位进行定义。
运算符:
+ - * / % ++ --&& || ! < > >= <= == !=
位与& 位或| 位异或^ 位取反~ 位左移<< 位右移>>
有了计划记得推动,不要原地踏步。