第一章
-单片机主要技术指标:位数:4位、8位、16位、32位
MCS-48(4位)、MCS-51(8位)和MCS-96(16位)
-位—字节—字
位(bit):二进制数中的一位,其值不是“1”,就是“0”。
字节(byte):一个8位的二进制数为一个字节。字节是计算机数据的基本单位。
字(word):两个字节就是一个字,又叫双字节。
第二章
-SCM——将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统SCM = CPU+程序存储器+数据存储器+定时器/计数器+内外中断+可编程I/O+可编程全双工串行口+…
-80C51=(8位)CPU + 4KBROM +128BRAM + (2×16)T/C + (4×8)I/O + 1个UART +5个中断源
-MCS-51单片机的内部结构:
-新一代高性能80C51系列单片机,其主要发展技术如下:
(1)提供不同类型的存储器。除掩模ROM、EPROM以外,还能提供EEPROM和Flash
EEPROM。
(2)扩展存储器容量。目前ROM已扩至64KB,RAM扩至4~8KB。
(3)提高运行速度,时钟频率已达100MHz。
(4)发展低电压专用芯片,工作电压可低于1.8V。
(5)扩大接口功能,如设置高速I/O口,扩展I/O数量,增加外部中断源以及将ADC、
PWM嵌入到片内。
-CPU(中央处理器,Central Processing Unit )
CPU = 控制器+ 运算器
控制器的用途:统一指挥和控制各单元协调工作
控制器的任务:从ROM中取出指令→译码→执行指令
控制器的组成:程序计数器PC、数据指针寄存器DPTR、…
运算器的用途:对数据进行算术运算和逻辑操作
运算器的任务:计算缓冲器内容→暂存→修改运行标志
运算器的组成:累加器ACC、程序状态字寄存器PSW、…
-程序计数器(Program Counter——PC)
——指向ROM存储单元的地址指针(引导程序运行)
i.永远存放着下一条指令的地址
ii.具有16位字长→可寻址范围216(= 65536字节= 64KB)
iii.具有自动加1功能→顺序运行程序功能
iv.具有可被指令修改功能→跳转运行程序功能
v.复位时,PC值为0 →复位后程序从0开始运行
-数据指针寄存器(Data Pointer ——DPTR)
——指向ROM或RAM存储单元的地址指针(引导数据传送)
①具有16位字长,可寻址范围216(64KB)
②具有可被指令修改功能→可变更数据地址
③可拆为2个8位的独立寄存器DPL和DPH
-累加器(ACCUMULATER——A)
——存放操作数或中间运算结果的8位寄存器
i.具有8位字长
ii.是利用率最高的寄存器
iii.具有可被指令修改功能
iv.指令示例:
PUSH ACC
ADD A,32H
ADD ACC,32H
-程序状态字寄存器(Program State Word——PSW)
——存放程序运行过程中的各种状态信息的寄存器
①1具有8位字长
②2各位都具有特殊含义
③3状态信息通常自动形成,但也可用指令修改
CY(PSW.7)——进位标志
在进行加或减运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”。用途:1、根据CY判断有无进位或借位;2、在位操作中CY可作为位累加器用。
RS1和RS0(PSW.4和PSW.3)——工作寄存器组指针
用途:用于指定CPU的当前工作寄存器组
P(PSW.0)——奇偶标志位
该位始终跟踪累加器A中含“1”个数的奇偶性;如果A中有奇数个“1”,则P置“1”,否则置“0”
举例:若A =1001 1111,则P=0
若A =1100 0001,则P=1
用途:用于串行通讯中的数据校验,判断是否存在传输错误。
-MCS-51引脚及功能(课本P18)
51系列单片机一般采用40只引脚的双列直插式(DIP——Dual In-line Package)封装结构(1)电源及晶振引脚
VCC (40脚):+5V电源引脚
VSS (20脚):接地引脚
XTAL1 (19脚);外接晶振引脚(内置放大器输入端)
XTAL2 (18脚):外接晶振引脚(内置放大器输出端)
(2)控制引脚
RST/VPD (9):复位/ 备用电源引脚
ALE/PROG (30):地址锁存使能输出/ 编程脉冲输入
PSEN (29):输出访问片外程序存储器读选通信号
EA/ VPP (31):外部ROM允许访问/ 编程电源输入
(3)端口引脚
共计8只/组×4 组= 32 只引脚:
P0.0~P0.7(39~32脚)——P0口;
P1.0~P1.7(1~8脚)——P1口;
P2.0~P2.7(21~28脚)——P2口;
P3.0~P3.7(10~17脚)——P3口。
△P0口~P3口是单片机对外联络的重要通道
补充:信号引脚的第二功能
信号引脚赋予双重功能,即“复用”。第二引脚功能主要集中在P3口。
-1.常见的第二功能信号
(1)P3口线的第二功能
P3口线都定义有第二功能,详见表2-1。
-1. 存储器划分方法
计算机存储器地址空间的两种结构形式:普林斯顿结构(RAM和ROM统一编址)和哈佛结构(RAM和ROM分别编址)。
存储单元地址空间:
片内RAM:00H~7FH(128B),特殊功能存储器占用的RAM:80H~FFH
片外RAM: 0000H~FFFFH
片内ROM:0000H~0FFFH
片外ROM:0000H~FFFFH
2. 程序存储器(ROM)(课本P25)
作用:存放程序、表格或常数,具有非易失性
字长:8位
数量:4KB(80C51)
当EA引脚接高电平(开关接A点)时,4 KB以内的地址在片内ROM,大于4KB的地址在片外ROM中(图中折线),两者共同构成64KB空间;
当EA引脚接低电平(开关接B点)时,片内ROM被禁用,全部64KB地址都在片外ROM 中(图中直线)。
3. 片内数据存储器(RAM)(课本P21)
作用:存放程序运行结果
字长:8位
数量:128B+128B(80C51)
(1) 低128字节的区域
①工作寄存器区(00H-1FH)
②可位寻址区(20H-2FH)
③用户RAM区(30H-7FH)
①区共有32个存储单元;
每个单元都有一个8位地址(字节地址)也有一个寄存器名称(R0~R7);
32个单元分为4组(第0 ~第3组);
CPU只能选一组为当前工作寄存器组。
②区共有16个存储单元;
每个单元都有一个字节地址,每个单元又可拆分为8个不同的位地址;②区共有128个位地址。
②区可以字节地址和位地址两种方式存取数据。
③区共有80个存储单元;
每个单元都有一个字节地址,但没有位地址,也没有寄存器名。
此区可作为堆栈区和中间数据存储区使用——用户RAM区
【注意】:①区和③区只能按字节进行数据存取操作,②区则可按字节和位两种方式存取操作。
④堆栈指针SP
堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。它的特点是按照先进后出的原则存取数据,这里的进与出是指进栈与出栈操作。
假若有8个RAM单元,每个单元都在其右面编有地址,栈顶由堆栈指针SP自动管理。每次进行压入或弹出操作以后,堆栈指针便自动调整以保持指示堆栈顶部的位置。这些操作可用图说明。
(2)高128字节RAM区
每个存储单元都有一个字节地址,但只有其中21个单元可以使用,并有相应寄存器名称。51单片机共有21个特殊功能寄存器(Spetial Function Register)
SFR承担着51单片机内部资源的管理工作
△字节地址末位是0或8的SFR,都具有位地址。
-闪速存储器(Flash EEPROM)可以用来存放程序,但由于其读写方便,也可以像RAM一样存放经常需要修改的数据,所以又称为Flash Memory。
新一代闪速存储器的特点及其功能。
1)低电压在线编程,使用方便,可多次擦写
2)按块/按扇区擦除,按字节编程
3)完善的数据保护功能
1、时钟电路(课本P28)
温馨推荐
您可前往百度文库小程序
享受更优阅读体验
不去了
立即体验
时钟脉冲的频率(相当于PC的主频)越高,CPU的处理速度就越快。
MCS-51的时钟频率为6~12MHz可调
1)两种时钟方式:
内部时钟方式
该电路产生的时钟信号的振荡频率就是晶振的固有频率,也是系统的时钟频率,用fosc表示。(一般晶振6Mhz ,12Mhz,11.0592Mhz)
外部时钟方式
多机同步通信中,为使得各单片机之间的时钟信号严格同步,应采用公共外部脉冲信号为各单片机振荡脉冲,系统的时钟频率由外部脉冲提供,无需内部的振荡器。
2、CPU时序(课本P29)
(1)时序的概念
时序是各种微操作在时间上的顺序关系
时序的定时单位共有4个参数:
拍(或振荡周期或时钟周期)P、状态周期S、机器周期、指令周期
例:外接晶振为12MHz时,MCS-51单片机的四种时序周期的具体关系为:
振荡周期= 1/12 us机器周期= 1 us
状态周期= 1/6 us指令周期= 1~4 us
(一)51单片机的取指/执行时序
①CPU的指令都是按照时序要求设计的
②任何一条指令分为:取指令阶段和执行指令阶段
③每条指令的执行都是从S1P2开始的
④每个机器周期最多可执行2个字节指令
⑤ALE信号每出现一次,CPU就进行一次取指令操作。
单片机三总线结构:地址、数据和控制
80C51三总线具有以下特点:
①P0口的地址/数据复用。
②两个独立的并行扩展空间。
③外围数据存储器扩展的统一编址。
二、P0 ~P3并行口的基本用途(课本P30)
(1)、可作为并行IO输入通道(例如,按键/开关连接通道)
(2)、可作为并行IO输出通道(例如,数码管显示器连接通道)
(3)、可作为串行通信通道(例如,双机通讯的连接通道)
(4)、可作为外部设备的连接通道(例如,存储器扩展通道)
关于上拉电阻:
a)P1、P2、P3不需要上拉电阻,片内已有。
b)P0口作为扩展总线的数据/地址复用线时,也不需要上拉电阻,这种情况下,P0
口内部是两个MOS管推拉输出,可以同时驱动8个TTL电路。
c)P0口作为普通I/O口使用时,由于上面的MOS管截止,只有下面一个管子工作,
处于开漏状态,此时需要外接上拉电阻,才能输出高电平。
1. P1口
P1口包含P1.0~P1.7共八个相同结构的电路
P1.n = 1个锁存器+ 1个场效应管驱动器V + 2个三态门缓冲器
P1.0~P1.7中的8个锁存器组成P1 SFR(90H)
Pl口只有一种功能:通用输入/输出接口。
2. P3口
与P1.n 差别:第二功能控制单元→双功能
P3.0~P3.7中的8个锁存器组成P3 SFR(B0H)
3. P0口
与P1.n 差别:输出控制电路、输出驱动电路→总线功能
P0.0~P0.7中的8个锁存器组成P0 SFR(80H)
P0口有两种功能;地址/数据分时复用总线和通用I/O接口。
4. P2口
P2口有两种用途:通用I/O接口或高8位地址总线
P2.0~P2.7中的8个锁存器组成P2 SFR(A0H)
与P1.n差别:输出控制单元→总线功能
-P0~P3小结
1. 结构
2. 功能
本章
:51单片机采用哈佛结构存储器,共有3个逻辑存储空间和4个物理存储空间。片内低128字节RAM中包含4个工作寄存器组、128个位地址单元和80个字节地址单元。片内高128字节RAM中离散分布有21个特殊功能寄存器。
※51和52的区别:51 内部ROM存储器:4k RAM :128B中断源数目:5个
52 内部ROM存储器:8k RAM :256B中断源数目:6个
第三章
-汇编语言
汇编语言优点——代码精炼、执行速度快,但不便于编写较复杂的程序;
汇编程序处理过程——输入源程序→检查语法正确性(如有语法错误,输出错误信息)→翻译成二进制目标程序。
-寻址方式
寻址方式——汇编指令中反映操作数存在形式的表示方式;
寻址方式越多,单片机的功能就越强;
51单片机共有七种寻址方式:
直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址。(见课本P37)
寄存器间接寻址的其他例子如下:
PUSH ACC ; SP+1 SP,ACC 以SP为地址的内部RAM单元
POP 20H ;以SP为地址的内部RAM中的内容 20H内部RAM ;单元,SP-1 SP
关于各种寻址方式的寻址的范围:(网上搜索的内容)
1、立即寻址:立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。
如:MOV A,#20H,此时数据范围:00H~FFH。
再如:MOV DPTR,#1000H,此时数据范围:0000H~FFFFH;
2、直接寻址:
A:可以访问内部数据存储器RAM低128单元00~7FH
B:如果是高位则一定是特殊功能寄存器如P0,P1,SBUF,IE等等,而且也只有直接寻址可
以访问特殊功能寄存器。
C:位寻址空间20H~2FH
3、寄存器寻址:
A:四个工作寄存器组也就是00H~1FH
B:其他特殊功能寄存器如A,B,PSW,DPTR等等
4、寄存器间接寻址:
A:用@Ri可以寻址内部或外部00H~FFH.
B:用@DPTR可以寻址0000H到FFFFH
C:用PUSH或POP可以访问范围00~FFH
5、基址寄存器加变址寄存器的变址寻址
A:以PC为基址范围为256个字节
B:以DPTR为基址范围为64K
6、位寻址:
A:20H~2FH的位寻址空间
B:能被8整除的专用寄存器如P0,P1等等。
7、相对寻址:
偏移量+指令单元地址,所以范围为00H~FFH
-指令系统——计算机中全部指令的集合。
51单片机共有111条指令,按功能可划分为四大类:
数据传送与交换类(31条)
算术运算类(24条)
逻辑运算类(34条)
转移控制类(位操作也可作为第五类考虑)(22条) 1.数据传送与交换类指令(课本P38)
——以实现RAM、SFR和ROM之间的数据互传或交换为目的。
2.算术运算类指令(课本P40)
——以实现加、减、乘、除和增减1等运算为目的。
特点:①除加1和减1外,都需要有累加器A参与运算;
②算术运算指令一般都会影响PSW中的CY、AC、OV三个标志位。
3.逻辑运算及移位类指令(课本P42)
——以实现与、或、异或、求反、置1、清零、移位等逻辑操作为目的。
4.控制转移类指令(课本P45)
——以改变程序计数器PC值,进而改变程序的流向为目的。
5.伪指令(课本P53)
汇编语言指令的两类指令:
①硬指令(指令性语句)——汇编后可以产生机器
码的指令,如前介绍的111条指令;
②伪指令(指示性语句)——用于对汇编过程提供必
要信息的指令,汇编后不会产生机器码
常用的伪指令:
ORG、END、EQU、DATA、BIT、DS
伪指令属于非执行指令,用于对汇编过程提供必要辅助信息,汇编后不会产生机器码。位操作指令在课本P51
第四章
-C51的程序结构(课本P68)
①程序由函数组成(一个主函数,或一个主函数和
若干自定义函数);
②利用预处理命令对变量或函数进行集中定义或说明;
③函数和变量都需遵循先定义后使用的基本原则;
④主函数中的所有语句执行完毕,则程序结束。
-C51的数据结构(课本P71)
C51变量定义的四要素:
【存储种类】数据类型【存储类型】变量名
基本数据类型和长度及其值域见课本P72表格
sfr或sfr16型:
关键词sfr或sfr16用于定义SFR字节地址变量
(对应课本P25表格中没有位地址的部分),
语法规则:sfr 或sfr16 sfr_name = 字节地址常数;
例如,sfr P0 = 0x80; //定义P0口地址80H
sfr PCON = 0x87; //定义PCON地址87H
sfr16 DPTR=0x82; //定义DPTR的低端地址82H
sbit型:(对应课本P25表格中有位地址的部分需要此定义)关键词sbit用于定义SFR位地址变量,三种定义形式:
1)将SFR的绝对位地址定义为位变量名
sbit bit_name = 位地址常数;
例如,sbit CY = 0xD7;
2)将SFR的相对位地址定义为位变量名
sbit bit_name = sfr字节地址^ 位位置;
例如,sbit CY = 0xD0^7;
3)将SFR的相对位位置定义位变量名
sbit bit_name = sfr_name ^ 位位置;
例如,sbit CY = PSW^7;
C51存储类型与存储空间的对应关系见P74图4-4
C51的存储类型与存储空间对应关系表见P75表4-2
-变量名的声明
变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。
强调:头文件中定义的变量都是大写的,若程序采取小写变量则需要重新定义。
变量名可以由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,变量名长度随编译系统而定。
举例说明C51指针定义的用法(SMALL编译模式下)指针详见课本P77
例1
char xdata a = ‘A’;
char * ptr = &a;
ptr是一个指向char型变量的指针变量;
它本身位于SMALL编译模式默认的data存储区里;
它的值是位于xdata存储区里的char型变量a的地址;
-C51的运算符和表达式
“==”符号是用来进行相等关系的运算。
“=”符号是用来对变量进行赋值。
一些不熟的运算符:
== 测试等于
!= 测试不等于
逻辑与:条件式1 &&条件式2。
逻辑或:条件式1 || 条件式2。
逻辑非:!条件式。
&按位与
| 按位或
^ 按位异或这六个是位运算
~ 按位取反
<<;左移
>>右移
-C51的应用技巧
(1)灵活选择变量的存储器类型
先内部后外部,使用频繁放内部
减少变量的长度,char,unsigned char,bit
(2)避免使用浮点变量
避免浪费大量的存储器资源和程序执行时间
(3)灵活设置变量,高效利用存储器
能用bit或sbit,不用unsigned char
尽量使用局部变量,不随便使用全局变量
-行列式键盘原理与编程
①键盘扫描
key_scan[] = {0xef, 0xdf, 0xbf, 0x7f}
②按键判断
读P3: 若P3低4位为f 或(P3 & 0x0f)=0x0f →无键压下若P3低4位≠f或(P3 & 0x0f)≠0x0f →有键压下
③键值计算
键模key_buf [] = {0xee, 0xde, 0xbe, 0x7e,
0xed, 0xdd, 0xbd, 0x7d,
0xeb, 0xdb, 0xbb, 0x7b,
0xe7, 0xd7, 0xb7, 0x77};
for (j = 0 ; j < 16 ;j++) { //查找按下键键值
if (key_buf [j] == P3)
return j;
}
第五章
1、51单片机有哪些合法的中断源
80C51具有五个中断源:
①引脚INT0上的外部中断信号达标——外部中断0
②内部定时/计数器T0溢出——定时器T0中断
③引脚INT1的外部中断信号达标——外部中断1
④内部定时/计数器T1溢出——定时器T1中断
⑤一帧串行数据发送/接收完成——串口中断
【说明】
外部中断信号达标——引脚上出现低电平信号,或脉冲下降沿信号定时/计数器溢出——定时/计数器里的数值超过最大允许值
串行数据发送/接收完成——一帧数据已从缓冲器中送出或送入
CPU怎样管理中断处理过程?
a)系统为每个中断源设立了中断允许标志。当该标志为1时,可自动执行相应中断函
数,否则不予响应。中断允许标志可在程序中由软件修改;
b)系统为每个中断源设立了中断优先级标志。当该标志为1时,可优先执行相应中断
函数,否则按请求先后顺序响应。中断优先级标志可在程序中由软件修改;
c)系统为外部中断源设立了中断触发方式标志,可据此指定相应信号类型。
优先级原则:
1)高级中断请求可以打断正在执行的低级中断;
2)同级或低级中断请求不能打断正在执行的中断;
3)同级中断源同时提出请求时按自然优先级响应:
INT0→T0 →INT1→T1→TI/RI
4)单片机复位时,IP各位都被置0,
所有中断源为低级中断
中断处理过程
一个完整的中断处理过程包括:中断响应、中断服务、中断返回三个部分
1、中断响应条件
CPU响应中断的基本条件:
(1)有中断源发出中断申请
(2)中断总允许位EA=1,即CPU开发中断
(3)请求中断的中断源的中断允许位置1,即该中断源可向CPU发中断申请
(4)无同级或者更高级中断正在被服务
i.在每个机器周期的S5期间,CPU会自动查看中断请求标志,也可采用软件方式查看该
标志;
ii.中断响应时间至少需要3个机器周期(1个周期查询中断标志;2个周期的调用指令LCALL )。
注意事项
在使用MCS-51单片机中断技术时,应注意以下几个方面:
(1)中断查询在每个机器周期重复进行。当一个中断标志位置1但没有被CPU响应时,这个中断标志位是不会被保持的。每一个机器周期查询的是上一个机器周期新采样得到的中断标志位状态。
(2)由于2个中断入口地址之间只有8个单元。实际应用时,通常在入口地址处安排一条无条件转移指令,把中断处理程序存放在程序存储器的其它区域。
(3)子程序返回指令RET也可以使中断处理程序返回到断点处,但是,它不能告知CPU中断处理已经结束。因此,CPU依然处于中断处理的状态。如果是处理高优先级中断,CPU只响应一次中断,而且屏蔽其它所有的中断请求。
(4)MCS-51单片机CPU响应中断时,自动进行了置位高或低优先级触发器、保护断点、装入中断入口地址到PC等操作,并没有关中断的操作。为了防止高优先级中断响应干扰现场保护和恢复,中断嵌套处理时,低优先级中断处理程序应按下列顺序处理:关闭中断、保护现场、开中断、中断服务、关中断、恢复现场、开中断、中断返回。
第六章
定时/计数器的结构
两个16位定时器T0 (TH0、TL0)和T1 (TH1、TL1) 两个控制寄存器TCON和TMOD
两个外部引脚T0(P3.4)和T1(P3.5)