单片机总结

MCS-51单片机课程总结

(单片机设计技术)

?   概述

 微型计算机系统包括(硬件系统)、(软件系统)两大部分。

 

?   概述

?    计算机的硬件:由运算器控制器存储器输入设备输出设备五大部分组成。

?    运算器、控制器、存储器三部分称为计算机主机,而输入设备和输出设备则称为计算机外设。

?    运算器、控制器是计算机进行信息处理的关键部件,合称为中央处理器CPU(Central Process Unit)。

?    通常的微机采用三总线结构

–  地址总线AB(Address Bus)、数据总线DB(Data Bus)、控制总线CB(Control  Bus)

?    1  概述

?    单片机的组成

–  CPU存储器(程序存储器和数据存储器)、I/O接口(并行接口、串行接口、中断定时器/计数器A/D转换EEPROMSPI接口……)

?    编程语言

    编制程序可以采用的程序设计语言分为三类:机器语言汇编语言高级语言

计算机中只能存放和处理二进制数据。无论是汇编语言程序还是高级语言程序,都必须转换成二进制代码后才能送入计算机。这种二进制代码形式的程序就是机器语言程序。

采用汇编语言或高级语言编写的程序又称为源程序,而机器语言程序则称为目标程序。

?    数制及数制转换

–  十进制、二进制、十六进制

–  计算机中带符号数的表示法

–  原码、反码、补码(正数表示相同,负数表示不同)

–  计算机中的编码

–  BCD码、ASCII码(0~9、A~Z的编码)

?   2 MCS-51单片机的结构和原理

?    8051单片机的组成

–  8051CPU4KB程序存储器128B数据存储器4个并行接口1个串行接口2个外部中断2个定时器/计数器

–  MCS-5l的存储器组织

–  片内片外统一编址的程序存储器:64KB(8051有4KB片内程序存储器、 8052有8KB片内程序存储器)

–  片内数据存储器:128B(8051)、256B(8052)

–  片外数据存储器: 0~64KB

?     

?    2 MCS-51单片机的结构和原理

说明: 51存储器

?     

?    2 MCS-51单片机的结构和原理

?    程序存储器的选择和地址范围

–  取决于引脚/EA的接法

–  /EA=1:CPU访问内部ROM ,地址范围0000H~0FFFH(8051)

–  /EA=0:内部ROM被忽略,外部ROM空间可达64KB,地址范围0000H~FFFFH

?    内部数据存储器的分配

–  00H~1FH——4组工作寄存器

–  20H~2FH——128位(16个单元)位寻址区

–  30H~7FH——用户RAM区

?     

?    2 MCS-51单片机的结构和原理

?    特殊功能寄存器

–  累加器A、B寄存器、程序状态字PSW、堆栈指针SP、数据指针DPTR、程序计数器PC

–  并行输入/输出端口

–  P0——并行口或地址总线低8位/数据总线

–  P1——并行口

–  P2——并行口或地址总线高8位

–  P3——并行口或控制总线

?     

?    2 MCS-51单片机的结构和原理

?    CPU时序

–  振荡周期/时钟周期、状态、机器周期、指令周期

?    复位操作(复位后单片机的状态)

–  (PC)=0000H

–  (PSW)=00H, 当前工作寄存器区为第0区(RS1=0,RS0=0)

–  (SP)=07H,堆栈从内部RAM的08H单元开始

–  P0~P3口的内容均为FFH(可以直接做输入口)

–  其他特殊功能寄存器都复位为0

–  不影响片内RAM的内容。

?    3  MCS-51单片机指令系统和汇编程序设计

?    寻址方式

–  立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、基址+变址寻址、相对寻址、位寻址

–  指令系统

–  数据传送类指令——MOV 、 MOVX 、 MOVC

–  数据交换指令——SWAP

–  堆栈操作指令——PUSH 、 POP

–  算术运算类指令——ADD 、 ADDC 、 SUBB 、 INC 、 DEC 、 MUL 、 DIV 

?     

?    3  MCS-51单片机指令系统和汇编程序设计

?    指令系统

–  逻辑运算类指令——ANL 、 ORL

–  对A的逻辑运算——CLR 、 CPL 、 RL 、RR 、 RLC 、RRC

–  无条件转移指令——LJMP、SJMP

–  条件转移指令——JZ 、 JNZ 、 CJNE 、 DJNZ

(相对转移指令和条件转移指令对PC的影响)

–  子程序调用和返回指令——LCALL 、  RET、 RETI

–  空操作指令:NOP

?     

?    3  MCS-51单片机指令系统和汇编程序设计

?    指令系统

–  位操作类指令——MOV 、 CLR、 SETB、 ANL 、ORL 、CPL 、 JC 、 JNC 、 JB 、 JNB 、 JBC

?     

?     

?    伪指令

–  ORG、END

–  DB、DW

–  EQU、 DATA、BIT

?     

?    3  MCS-51单片机指令系统和汇编程序设计

?    常见程序结构或功能

–  顺序程序(简单程序)

–  分支程序(单重分支、多重分支)

–  循环程序

–  查表程序

–  代码转换程序

–  子程序设计

掌握第三章(含PPT)例题(以及作业和实验)中出现过的指令

(包括指令格式、指令功能、相对转移指令和条件转移指令对PC的影响、PUSH/POP/CALL/RET指令对SP的影响)

?    

?   4 单片机C语言程序设计

C51的数据类型

4 单片机C语言程序设计

C51存储类型与MCS-51存储空间的对应关系

?     

?    4 单片机C语言程序设计

?    特殊功能寄存器的C51定义

sfr P0=0x80;              /* P0口寄存器地址80H */

    sfr  SCON=0x98;          /* 串口控制寄存器地址98H */

    sfr  TMOD=0x89;    /* 定时器/计数器方式控制寄存器地址89H */

?    特殊位的C51定义

         sbit  OV=PSW^2;          /* 定义OV位为PSW.2,地址为D2H */

         sbit  CY=PSW^7;   /* 定义CY位为PSW.7,地址为D7H */

         sbit  OV=0XD2;                /* 定义OV位地址为D2H */

    sbit  CY=0XD7 ;           /* 定义CY位地址为D7H */

?     

?    4 单片机C语言程序设计

?    运算符

–  赋值运算符 =

–  算术运算符 +   -   *   /   %

–  关系运算符 >    <    >=    <=    ==    !=

–  逻辑运算符 ||    &&     !

–  位运算符  &    I     ^     ~     <<     >>

–  复合赋值运算符 等

?     

?    4 单片机C语言程序设计

?    程序语句

–  条件分支语句 if     switch case

–  循环语句 while     do...while     for

–  转移语句 break      continue

要求理解掌握第四章书中例题和PPT第90-107页的程序

?    

?    

?   5 中断系统

?    8051/8052单片机有5/6个中断源,分为2大类

1.外部中断源

–  INT0:由P3.2端口线引入,低电平或下降沿引起

–  INT1:由P3.3端口线引入,低电平或下降沿引起

2.内部中断源

–  T0:定时/计数器0中断,由T0溢出TF0引起

–  T1:定时/计数器1中断,由T1溢出TF1引起

–  TI / RI:串行口中断,完成一帧字符发送/接收引起

?    中断源的中断标志

–  IE0、 TF0、 IE1、 TF1、 TI 或 RI

?    5 中断系统

?    中断源的中断优先级

–  INT0、 T0、INT1、 T1、串行口TI/RI

?    中断服务程序入口地址

–  0003H、 000BH、 0013H、 001BH 、 0023H

?    中断请求标志

–  定时器控制寄存器TCON(IE0、IE1、TF0、TF1)

–  串行口控制寄存器SCON( TI 、 RI )

?    中断允许控制寄存器IE( EA、ES、ET1、EX1、ET0、EX0)

?    中断优先级控制寄存器IP

?    外部中断的触发方式TCON(IT0、IT1)

?     

?    5 中断系统

?    中断应用程序设计(程序结构)

1.主程序入口地址0000H

2.中断服务程序入口地址0003H~0023H

      C51语言中断服务函数的编号:0~4

3.一般在主程序中完成初始化

4.在中断服务程序中完成中断操作

另外,也可以采用查询方式

掌握书中例5.9查询方式,并自编中断方式、实验相关部分(改写成C语言)

?    

?   6 定时器/计数器

?    MCS-51单片机有2个16位的可编程定时/计数器

–  定时器0(T0 —— TH0、TL0)

–  定时器1(T1 —— TH1、TL1)

–  两种工作方式

–  定时——脉冲来自晶振振荡信号的12分频(机器周期)

–  计数——脉冲直接来自外部引脚(不分频!)

?     

?    6 定时器/计数器

?    有关的特殊功能寄存器

–  TMOD 工作模式寄存器:定义T0、T1的工作模式及有关功能

–  TCON  控制寄存器:存放T0、T1的启、停、溢出标志和中断标志

?    定时/计数器初值X的计算

用于内部定时:t=(2n-X)×12/fosc(ms)

用于外部脉冲计数: C= 2n-X  (C为要计的脉冲个数)

t-定时时间,X-计数初值,fosc-时钟频率

–  n=13, 16, 8  for mode 0, 1, 2

?    6 定时器/计数器

?    应用程序设计要点

–  通常以中断方式工作(程序结构同上一章)

–  主程序中初始化的主要任务:

?    设置定时器工作方式寄存器TMOD

?    设置计数初值TH0、TL0、 TH1、TL1

?    启动定时器(设置TR0、TR1)

?    允许中断(设置ET0、ET1、EA)

掌握书中例5.1和PPT中定时器部分例1~例3、实验相关部分(改写成C语言)

?    

?   7 串行通信接口

?    MCS-51串行口是一个全双工的异步串行通信接口

?    串行口控制有关的两个SFR

–  串行口控制寄存器SCON:用于存放串行口的控制和状态信息

–  电源控制寄存器PCON:用于改变串行通信的波特率

?    串行口数据缓冲器SBUF

–  既是发送缓冲器,同时也是接收缓冲器

?    7 串行通信接口

?    串行口的工作方式

–  方式0    8位移位寄存器方式 fosc/12

–  方式1    8位异步收发      可变(T1产生)

–  方式2    9位异步收发      fosc/64或fosc/32

–   方式3           9位异步收发      可变(T1产生)

?    方式1、3的波特率设置计算

?    串行口的程序设计(不考)

?    考试题型

?    单项选择题(每小题1分,共20分)内容包括各章的基本概念

?    判断题(每小题1分,共10分)内容包括各章的基本概念

?    程序分析(2段程序,共20分)写出程序功能、运行结果

内容涵盖第3章、第4章、实验

?    程序设计(2段程序,共30分)按要求编写程序

内容涵盖第3章、第4章、实验

?    接口应用(20分)——中断、定时器

 

第二篇:单片机知识点总结

单片机考点总结

1.     单片机由CPU、存储器及各种I/O接口三部分组成。

2.     单片机即单片微型计算机,又可称为微控制器和嵌入式控制器。

3.     MCS-51系列单片机为8位单片机,共40个引脚,MCS-51基本类型有8031、8051和8751.

(1)    I/O引脚

(2)    8031、8051和8751的区别: 8031片内无程序存储器、8051片内有4KB程序存储器ROM、8751片内有4KB程序存储器EPROM。

(3)   

4.     MCS-51单片机共有16位地址总线,P2口作为高8位地址输出口,P0口可分时复用为低8位地址输出口和数据口。MCS-51单片机片外可扩展存储最大容量为216=64KB,地址范围为0000H—FFFFH。(1.以P0口作为低8位地址/数据总线;2.以P2口作为高8位地址线)

5.     MCS-51片内有128字节数据存储器(RAM),21个特殊功能寄存器(SFR)。

(1)MCS-51片内有128字节数据存储器(RAM),字节地址为00H—7FH;

     00H—1FH: 工作寄存器区;

00H—1FH: 可位寻址区;

00H—1FH: 用户RAM区。

(2)21个特殊功能寄存器(SFR)(21页—23页);

(3)当MCS-51上电复位后,片内各寄存器的状态,见34页表2-6。

PC=0000H,  DPTR=0000H,  Acc=00H,  PSW=00H,  B=00H,  SP=07H,

TMOD=00H,  TCON=00H,  TH0=00H,  TL0=00H,  TH1=00H,

TL1=00H,  SCON=00H,  P0~P3=FFH

6. 程序计数器PC:存放着下一条要执行指令在程序存储器中的地址,即当前PC值或现行值。程序计数器PC是16位寄存器,没有地址,不是SFR.

7. PC与DPTR的区别:PC和DPTR都用于提供地址,其中PC为访问程序存储器提供地址,而DPTR为访问数据存储器提供地址。

8. MCS-51内部有2个16位定时/计数器T0、T1,1个16位数据指针寄存器DPTR,其中MOVE DPTR, #data16 是唯一的16位数据传送指令,用来设置地址指针DPTR。(46页)

定时/计数器T0和T1各由2个独立的8位寄存器组成,共有4个独立寄存器:TH1、TL1、TH0、TL0,可以分别对对这4个寄存器进行字节寻址,但不能吧T0或T1当作1个16位寄存器来寻址。即:MOV  T0,#data16 ;  MOV  T1,#data16 都是错的,

MOV  TH0,#data;    MOV  TL0,,#data是正确的。

9.程序状态字寄存器PSW(16页)

(1)PSW的格式:

(2)PSW寄存器中各位的含义;

Cy:进位标志位,也可以写为C。

Ac:辅助进位标志位。

RS1、RS0:4组工作寄存区选择控制位。

P为奇偶标志位:该标志位用来表示累加器A中为1的位数的奇偶数

P=1, A中1的个数为奇数;

P=0, A中1的个数为偶数。

另:使用加法指令时,累加器A中的运算结果对各个标志位的影响:

(1)如果位7有进位,则置1进位标志位Cy,否则清0 Cy;

(2)如果位3有进位,置1辅助进位标志位Ac,否则清0 Ac;

(3)如果位6有进位,而位7没有进位,或者位7有进位,而位6没有,则溢出标志位OV置1,否则清0 OV。即只要位7和位6中有一个进位,而另一个没进位,OV就置1.

10. MCS-51指令系统的七种寻址方式,熟练掌握各寻址方式。(40页)。

11.访问MCS-51单片机中:(1)访问片内RAM应使用MOV指令;

(2)访问片外RAM应使用MOVX指令;

(3)访问程序存储器应使用MOVC指令。

12. MCS-51有5个中断源,2级中断优先级。5个中断源名称及其中断入口地址分别是什么?哪些中断源的中断请求标志位在响应中断时由硬件自动清除?那些中断源的中断请标志位必须使用软件清除?记住各个中断请求标志位,优先级标志位,触发方式标志位。(102页—108页)

前面4种都是硬件自动清0,串行中断必须使用软件清除,因为串行接收和发送共享串行中断,在中断处理中必须使用T1和R1判断串行接收还是发送中断。

13. MCS-51的串行口为全双工的异步串行通信口,串行口有几种工作方式?每种工作方式的帧格式和波特率是什么?

串行口有4种工作方式:

SM0、SM1:串行口4中工作方式的选择位。

(1)方式0:帧格式及波特率

方式1的波特率是固定的,为fosc/12

(2)方式1:帧格式及波特率

起始位                                          停止位

方式1的波特率为2SMOD/32×定时器T1的溢出率

(3)方式2:帧格式及波特率

起始位                                              停止位

方式2的波特率为2SMOD/64×fosc

(4)   

方式3:帧格式及波特率

起始位                                               停止位

方式3的波特率为2SMOD/32×定时器T1的溢出率

14. 8255A可扩展3个8位并行I/O口(PA口、PB口和PC口),其中PC口具有按位置为/复位功能。

15.系统总线(仅了解)

所谓总线,就是连接计算机各部件的一组控制信号。MCS-51使用的是哈佛结构,即并行总线结构(程序存储器和数据存储器的空间是截然分开的),按其功能通常把系统总线分为三组:(1)、地址总线(Address Bus ,简写AB)

地址总线用于传送单片机发出的地址信号,以便进行存储单元和I/O端口的选择。地址总线是单向的,只能由单片机向外送出。地址总线的数目决定着可直接访问的存储单元数目。

MCS-51单片机最多可以扩展64KB,即65536个地址单元,因此,地址总线为16条。

(2)、数据总线(Data Bus,简写DB)

数据总线用于单片机与存储器之间或单片机与I/O之间传送数据。MCS-51单片机是8位字长,所以,数据总线的位数也是8位的。数据总线是双向的,可以进行2个方向的传送。

(3)、控制总线(Control Bus,简写CB)

控制总线实际上就是一组控制信号线,包括单片机发出的,以及从其它部件传送给单片机的。

15.单片机外部扩展存储器地址分配的方法线选法和译码法。外部扩展存储器容量大小的确定方法(1)由该存储器芯片上的地址根数决定,如程序存储器芯片27128有A0—A13共14根地址线,故27128的存储容量=214=16KB;(2)用存储器芯片型号后面的数字÷8 即可得到该芯片的存储容量,如27128的存储容量=128÷8=16KB;

16.存储器扩展的读写控制:(做最后一题时需要用到)

外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为 O E和 W E。外扩的RAM的读写控制引脚分别与MCS-51的R D和 WR引脚相连。

外扩的EPROM在正常使用中只能读出,不能写入,故EPROM的芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与MCS-51 的PSEN相连。

17.在MCS-51单片机系统中,外接程序存储器和数据存储器共用16位地址线和八8位数据线,为何不发生冲突?

外接程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于访问程序存储器时是PSEN信号有效, 而访问数据存储器时是R D或 WR  信号有效。而这些控制信号是由MCS-51执行访问外部外序存储器和或访问外部数据存储器的指令产生,任何时候只能执行1种指令,只产生1种控制信号,所以不会产生数据冲突的问题。

17.     8段共阴极数码管的断码如何编写。(227页)

记两点即可:(1)共阴极时1为亮0不亮;

(2)abcdef是按照顺时针走的,知道g,dp的位置。

18.单片机晶振频率fosc 与机器周期Tcy的关系式:1Tcy=12/fosc 。

19.编程题

(1)循环程序的编写(即延时程序的编写)(94页 例4—17)

例4-17、50ms延时程序。(注:一条DJNZ指令消耗两个机器周期)

DEL:    MOV  R7,#200

DEL1:   MOV  R6,#125

DEL2:  DJNZ  R6,DEL2

MOV  R7,DEL1

RET

(2)中断初始化程序的编写(104页 例5—1,107页 例5—2)

知识点:(1)中断允许寄存器IE

MCS-51的CPU的中断源的开放或屏蔽,是由片内的中断允许寄存器IE控制的。IE的字节地址为A8H,可进行位寻址。                                                                                                                                                                                 

EA:中断允许总控制位; ES:串行口中断允许位;

ET1:定时器/计数器T1的溢出中段允许位; EX1:外部中断1中段允许位;

ET0:定时器/计数器T1的溢出中段允许位; EX0:外部中断0中段允许位;

注:当上述值置为0时,表示禁止;置为1时表示允许。

如当ET1=0表示禁止T1溢出中断,ET1=1表示允许T1溢出中断。

(2)中断优先级寄存器P

MCS-51的片内有一个中断优先级寄存器IP,其字节地址为B8H,可位寻址。

PS:串行口中断优先级控制位;

PT1:定时器T1中断优先级控制位;PX1:外部中断1中断优先级控制位;

PT0:定时器T0中断优先级控制位;PX0:外部中断0中断优先级控制位;

注:当上述值置为0时,表示定义为低优先级中断;置为1时表示高优先级中断。

例5-1、若允许片内2个定时器/计数器中断,禁止其它中断源的中断请求。请编写出设置IE的相应程序段:

(A)、用位操作指令编写如下程序段:

      CLR    ES        ;禁止串行口中断

CLR    EX1       ;禁止外部中断1中断

CLR    EX0       ;禁止外部中断0中断

SETB   ET0       ;允许定时器/计数器T0中断

SETB   ET1       ;允许定时器/计数器T1中断

SETB   EA        ;CPU开中断

(B)、用字节操作指令来编写:MOV IE,#8AH 

例5-2、设置IP寄存器的初始值,使得MCS-51的2个外中断请求为高优先级,其它中断请求为低优先级。

(A)、用位操作指令编写如下程序段:

SETB   PX0       ; 2个外中断请求为高优先级

SETB   PX1        

CLR    PS        ;串行口、2个定时器/计数器为低优先级中断

CLR    PT0      

CLR    PT1     

(B)、用字节操作指令来编写:MOV IP,#05H 

(3)定时/计数器T0或T1在指定工作方式下产生一个定时或者计数的程序编写。(125页 例6—1,130页 例6—4)

(4)书中有一道程序编写,但不知是哪一道,所以都找出来了(99页第10题、第11题,117页第9题、14,136页第4题)

4.10  试编写程序,查找在内部 RAM 的 30H~50H 单元中是否有 0AAH 这一数据。若有,则将 51H 单元置为“01H”;若未找到,则将 51H 单元置为“00H”。

           ORG    0000H

        MOV    R0,#30H

        MOV    R2,#21H

LOOP:  MOV    A,@R0

        CJNE    A,#0AAH,NOT

        MOV    51H,#01H

        SJMP    DEND

NOT:    INC     R0

        DJNZ    R2,LOOP

        MOV    51H,#00H

DEND:  SJMP    DEND 

4.11  试编写程序,查找在内部 RAM 的 20H~40H 单元中出现“00H”这一数据的次数。并将查找到的结果存入 41H 单元。

        ORG     0000H

            MOV     R0,#20H

            MOV     R2,#21H

            MOV   41H,#00H

LOOP:      MOV   A,@R0

            CJNE   A,#00H,NOTE

           INC     41H

NOTE:      INC     R0

           DJNZ    R2,LOOP

           END  

 5.9  编写出外部中断 1 为跳沿触发的中断初始化程序。

                   ORG    0000H

                AJMP   MAIN

                ORG    0013H

                AJMP   PINT1

                ORG    0100H

      MAIN:    SETB    IT1

                SETB   EX1

                SETB    EA

      HERE:     AJMP    HERE

      PINT1:     RETI

                END      

5.14  某系统有 3 个外部中断源 1、2、3,当某一中断源变为低电平时,便要求 CPU 进行处理,它们的优先处理次序由高到低依次为 3、2、1,中断处理程序的入口地址分别为 1000H,1100H,1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。

        ORG    0000H

            AJMP   MAIN

            ORG    0003H

            LJMP   PINT0

            ORG    0100H

MAIN:      SETB    IT0

            SETB    EX0

            SETB    EA

HERE:      SJMP    HERE

PINT0:     PUSH    PSW

           PUSH    A

           JNB      P1.3,IR3

            JNB     P1.2,IR2

            JNB     P1.1,IR1

PINTIR:     POP     A

           POP      PSW

            RETI

IR3:        LJMP     IR3INT

IR2:        LJMP     IR2INT

IR1:        LJMP     R1INT

            ORG     1000H

IR3INT: LJMP    PINTIR

                ORG          1100H

IR2INT: LJMP    PINTIR

                ORG          1200H

IR1INT: LJMP    PINTIR

                END

6.4  采用定时器/计数器 T0 对外部脉冲进行计数,每计数 100 个脉冲后,T0 转为定时工作方式。定时 1ms 后,又转为计数方式,如此循环不止。假定 MCS---51 单片机的晶体震荡器的频率为 6MHZ,请使用方式 1 实现,要求编写出程序。

 ORG     0000H

                AJMP       MAIN

                ORG        000BH

                LJMP       PT0J

                ORG        0100H

               MAIN:   MOV     TMOD,#05H;00000001

                MOV       TH0,#0FFH;X=65436

                MOV       TL0,#9CH

                CLR        F0

                SETB       TR0

                SETB       ET0

                SETB       EA

               HERE:   AJMP     HERE

               PT0J:     JB            F0,PT0D

      MOV     TMOD,#01H;00000001

                MOV       TH0,#0FEH;X=65036

                MOV       TL0,#0CH

                SETB       F0

               RETI

              PT0D:    CLR      F0

                       MOV     TMOD,#05H

               MOV      TH0,#0FFH

               MOV      TL0,#9CH

               RETI

               END

(5)最后一道大题的程序编写(185页 例8—1,189页 例8—4)

20.

相关推荐