51单片机基础培训第一讲 预备知识单片机——来自都星的你 将CPU、存储器、I/O接口、定时器/计数器以及串行通信接口集成在一片芯片上,就构成了一个单片微型计算机,简称为单片机8051单片机的基本组成中央处理器中央处理器CPU::8位,运算和控制功能位,运算和控制功能内部内部RAM::共共256个个RAM单元,用户使用前单元,用户使用前128个单元,个单元,用于存放可读写数据,后用于存放可读写数据,后128个单元被专用寄存器占用个单元被专用寄存器占用内部内部ROM::用于存放程序、原始数据用于存放程序、原始数据定时定时/计数器:计数器:两个两个16位的定时位的定时/计数器,实现定时或计计数器,实现定时或计数功能并行并行I/O口:口:4个个8位的位的I/O口口P0、、P1、、P2、、P3串行口:串行口:一个全双工串行口一个全双工串行口中断控制系统:中断控制系统:5个中断源(外中断个中断源(外中断2个,定时个,定时/计数中计数中断断2 个,串行中断个,串行中断1个)个)时钟电路:时钟电路:可产生时钟脉冲序列,通常由晶振提供可产生时钟脉冲序列,通常由晶振提供中央处理器CPUCPU主要由由运算器和控制器两部分组成。
——单片机的“大脑”运算器用于实现算术逻辑运算、数据传送等操作控制器对来自存储器中的指令进行译码,并通过定时和控制电路发出控制信号,实现单片机各部分协调工作存储器•存储器按照存储数据类型可分为程序存储器ROM和数据存储器RAM——“记忆系统”•8051单片机存储器采用哈佛结构,即程序和数据存放在两个存储器内,一个称为ROM,一个称为RAM•程序是由一系列的指令按照一定顺序构成的,每条指令由操作码和操作数组成•程序存储器用来存放程序代码,数据存储器用来存放运算的中间结果、数据的暂存和缓冲等特殊功能寄存器SFR MCS-51有21个特殊功能寄存器(也称为专用寄存器),包括算术运算寄存器、指针寄存器、I/O口锁存器、定时器/计数器、串行口、中断、状态、控制寄存器等,它们被离散地分布在内部RAM的80H~FFH地址单元中(不包括PC) ,共占据了128个存储单元,构成了SFR存储块特殊功能寄存器分布如右表所示I/O接口I/O接口是51单片机对外部实现控制和信息交换的必经之路 8051内部有4个8位并行接口P0, P1, P2, P3,有1个全双工的可编程串行I/O接口其中,P3口为复用端口,具有第二功能。
——单片机的“四肢”定时器/计数器8051内部有两个16位可编程序的定时器/计数器,均为二进制加1计数器,分别命名为T0T0和T1T1 T0T0和T1T1均有定时器和计数器两种工作模式在定时器模式下,T0和T1的计数脉冲可以由单片机时钟脉冲经12分频后提供在计数器模式下,T0和T1的计数脉冲可以从P3.4和P3.5引脚上输入对T0和T1的控制由定时器方式选择寄存器TMOD和定时器控制寄存器TCON完成 ——单片机的“装备”中断系统 中断::指CPU暂停原程序执行,执行中断服务程序,并在服务完后返回到原程序执行的过程 中断系统:指能够处理上述中断过程所需要的硬件电路 中断源:指能产生中断请求信号的来源 8051可处理5个中断源(2个外部,3个内部)发出的中断请求,并可对其进行优先权处理外部中断的请求信号可以从P3.2, P3.3引脚上输入,有电平或边沿两种触发方式;内部中断源有3个,2个定时器/计数器中断源和1个串行口中断源 8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成——“效率优化专家”时钟电路 XTAL1XTAL1脚为片内振荡电路的输入端,XTAL2XTAL2脚为片内振荡电路的输出端。
8051的时钟有两种方式,一种是片内时钟振荡方式,但需在XTAL1XTAL1和XTAL2XTAL2脚外接石英晶体(频率为1.2~12MHz)和振荡电容,振荡电容的值一般取10~30pF,典型值为30pF;另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入,如下图所示——单片机的“心脏”振荡周期、时钟周期、机器周期和指令周期振荡周期、时钟周期、机器周期和指令周期振荡周期:为单片机提供时钟的振荡源的周期时钟周期:振荡源进行二分频后,得到时钟脉冲信号机器周期:通常将完成一个基本操作所需的时间称为机器周期指令周期:单片机完成一条指令需要的时间,称为指令周期,一个指令周期包括1~4个机器周期P1P2S1P2振荡周期振荡周期时钟周期时钟周期机器周期机器周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P280518051单片机各种周期的相互关系单片机各种周期的相互关系 若若5151单单片片机机外外接接晶晶振振为为12MHz12MHz时时,,则则单单片片机的四个周期的具体值为:机的四个周期的具体值为:振荡周期=振荡周期=1/12MHz1/12MHz==1/12μs1/12μs==0.0833μs0.0833μs时钟周期=时钟周期=1/6μs1/6μs==0.167μs0.167μs机器周期=机器周期=1μs1μs指令周期=指令周期=1 1~~4μs4μs若单片机外接晶振(主频)为若单片机外接晶振(主频)为6MHz6MHz时,则单片机时,则单片机的四个周期的具体值为多少?的四个周期的具体值为多少?复位电路 系统开始运行和重新启动靠复位电路来实现,这种工作方式为复位方式。
单片机在开机时都需要复位,以便CPU及其他功能部件都处于一种确定的初始状态,并从这个状态开始工作 51单片机在RST引脚产生两个机器周期以上的高电平即可实现复位——单片机的“开始” 复复位位电电路路有有两两种种::上上电电自自动动复复位位和和上上电电/按按键键手手动动复复位位,,如下图所示如下图所示 单片机复位条件单片机复位条件: 必须使必须使RST引脚持续引脚持续2微秒微秒高电平高电平(外部时钟外部时钟12MHz) 51单片机中断2024/8/31一、中断概念一、中断概念 CPUCPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回中断返回),这一过程称为中断中断 中断是CPU等待外部设备请求服务的一种I/OI/O方式对于外部设备何时发出中断请求,CPU预先是不知道的,因此中断就有随机性2024/8/31二、中断源二、中断源 中断号中断号 中断源中断源 中断入口地址中断入口地址 0 0 外部中断外部中断0 0 0003H0003H 1 1 定时器定时器0 0 000BH000BH 2 2 外部中断外部中断1 1 0013H0013H 3 3 定时器定时器1 1 0018H0018H 4 4 串口串口中断中断 0023H0023H在51单片机里一共有5个中断源。
2024/8/31三、中断寄存器三、中断寄存器 单片机有10个寄存器主要与中断程序的书写控制有关1.中断允许控制寄存器IEIE2.定时器控制寄存器TCONTCON3.串口控制寄存器SCONSCON4.中断优先控制寄存器IPIP5.定时器工作方式控制寄存器TMODTMOD6.定时器初值赋予寄存器((TH0/TH1TH0/TH1,,TL0/TL1TL0/TL1))7.电源控制寄存器PCONPCON2024/8/31 1.中断允许控制寄存器中断允许控制寄存器IE 注:在用到中断时,必须要开总中断注:在用到中断时,必须要开总中断EA,即即EA=1 //开总中断开总中断 EX0(EX1):外部中断允许控制位 EX0=1 外部中断0开关闭合 //开外部开外部0中断中断 EX0=0 外部中断0开关断开 ET0(ET1):定时中断允许控制位 ET0=1 定时器中断0开关闭合 //开内部中断开内部中断0 ET0=0 定时器中断0开关断开 ES: 串口中断允许控制位 ES=1 串口中断开关闭合 //开串口中断开串口中断 ES=0 串口中断开关断开 四、中断寄存器功能及赋值四、中断寄存器功能及赋值2024/8/31 ((1))外部中断:外部中断: IE0(IE1):外部中断请求标志位:外部中断请求标志位 当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,cpu开始响应,而当入中断程序后由单片机自动置0. //外部中断,即外部中断相应的引脚接入低电平或下降沿信号时,中断开外部中断,即外部中断相应的引脚接入低电平或下降沿信号时,中断开始响应。
始响应 IT0(IT1):外部中断触发方式控制位外部中断触发方式控制位 //选择有效信号选择有效信号 IT0(IT1)=1:脉冲触发方式,下降沿有效 IT0(IT1)=0:电平触发方式,低电平有效 2.定时器控制寄存器定时器控制寄存器 TCON //控制外部中断和定时器中断控制外部中断和定时器中断((2))内部中断内部中断: TF0(TF1):内部定时器/计数器溢出中断标志位 当定时器、计数器计数溢出的时候,此位由单片机自动置1,cup开始响应,处理中断,而当进入中 断程序后由单片机自动置0. //内部中断实际上就是利用内部的计数器,只不过提供计数的脉冲来自单片机自内部中断实际上就是利用内部的计数器,只不过提供计数的脉冲来自单片机自身 TR0(TR1):定时器/计数器启动位 //启动定时器启动定时器 TR0(TR1)=1; 启动定时器/计数器0 TR0(TR1)=0; 关闭定时器/计数器02024/8/31外部中断设置及编写外部中断服务函数外部中断设置及编写外部中断服务函数3.中断总允许位EA=1,即CPU开总中断1.设置中断触发方式,即低电平或下降沿触发(IT0/IT1=0或IT0/IT1=1)2.开启中断源的中断允许位,即EX0/EX1=1外部中断设置外部中断设置2024/8/31定时器定时器/计数器计数器 1.计数器: 计数是指对外部事件进行计数,实质就是对外来的脉冲进行计数,在单片机中对应引脚T0(P3.4)和T1(P3.5)。
外部输入的脉冲在负跳变时有效(即外部脉冲由1变化到0),计数器加1. 2.定时器: 定时器是通过计数来实现的,不过此时的计数脉冲来自单片机的内部,实质是对内部脉冲的计数 在单片机中,每个机器周期产生一次计数脉冲,计数器加1(单片机16位计数,0~65535 (2^16-1))2024/8/31工作方式控制寄存器工作方式控制寄存器TMODTMOD的低半字节用来控制定时器/计数器0 (T:timer 计数器 C:conter计数器)TMOD的高半字节用来控制定时器/计数器1 对TMOD中的内容说明: GATEGATE——门控制门控制 GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚为高电平时TR1置位,启动定时器T1 GATE=0GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1 C/TC/T——功能选择位功能选择位 C/T=0C/T=0时为定时功能时为定时功能,C/T=1,C/T=1时为计数功能。
时为计数功能 2024/8/31M0M0、、M1M1——方式选择功能方式选择功能 由于有2位,因此有4种工作方式 2024/8/31定时器定时器/计数器的设置计数器的设置1.设置TMOD (整体赋值:TOMD=0x01;)T0/T1功能选择,是定时器还是计数器工作方式选择2.设置初值寄存器TH0(TH1)、TL0(TL1) (二进制前、后八位)TH0(TH1)与TL0(TL1)是对16位计数器T0/T1进行设置初值所有,其中THi为高8位初值、TLi为低8位初值初值的计算要结合工作方式、单片机的晶振3.如果用到中断,则开启中断Eti=1;EA=1(常用);如果查表TFi方式,不需设置中断4.开启计数,TRi=1;2024/8/31中断服务函数中断服务函数void 函数名(void) interrupt n (//using m){ 服务程序}1.中断服务函数不能有返回值2.中断服务函数不能有形参3.中断服务函数不能被调用4.n为中断序列号,取值0~4//m为寄存器组号,取值0~3)void time0(void) interrupt 1 (//using 1)。