您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > MCS-51单片机复习要点
MCS-51单片机8051单片机是8位单片机,有40个管脚,8根数据线,16根地址线。单片机的八大组成部分:CPU、ROM、RAM、I/O、定时/计数器、串口、SFR、中断服务系统一、MCS-51机的内存结构(如图1所示)FFFFHFFFFH1000H0FFFH0FFFHFFH80H7FH0000H0000H00H0000H7F程序存储器内部数据存储器外部数据存储器图1MCS-51机的内存结构物理上分为:4个空间,片内ROM、片外ROM片内RAM、片外RAM逻辑上分为;3个空间,程序内存(片内、外)统一编址MOVC数据存储器(片内)MOV数据存储器(片外)MOVX1、程序内存寻址范围:0000H~FFFFH容量64KBEA=1,寻址从内部ROM;EA=0,寻址从外部ROM地址长度:16位存储器地址空间为64KB作用:存放程序及程序运行时所需的常数。8051单片机6个具有特殊含义的单元是:0000H——系统复位,PC指向此处;0003H——外部中断0入口000BH——T0溢出中断入口0013H——外中断1入口001BH——T1溢出中断入口60KB外部ROM64KB外部RAM4KB内部EA=14KB外部EA=0特殊功能寄存器内部RAM0023H——串口中断入口2、内部数据存储器物理上分为两大区:00H~7FH即128B内RAM和SFR区。如图2所示。7FH资料缓冲区堆栈区80字节数据缓冲器用工作单元30H2FH位地址:16字节00H~7FH128可位寻址位20H1FH3区2区1区32字节4组R0~R7工作寄存器0区00H图2内部数据存储器二、殊功能寄存器SFR寻址空间离散分配在:80H~FFH,注意PC不在此范围内。地址末尾为0或8的SFR具有位寻址功能1、CPU是运算器加控制器2、算术运算寄存器(1)累加器A(E0H)(2)B寄存器:乘、除法运算用(3)程序状态字PSW寄存器:包含程序运行状态信息。PSWCYACFORS1RS0OV—PCY(PSW.7)——进位/借位标志;位累加器。AC(PSW.6)——辅助进/借位标志;用于十进制调整。F0(PSW.5)——用户定义标志位;软件置位/清零。OV(PSW.2)——溢出标志;硬件置位/清零。P(PSW.0)——奇偶标志;A中1的个数为奇数P=1;否则P=0。RS1、RS0——寄存器区选择控制位。00:0区R0~R701:1区R0~R710:2区R0~R711:3区R0~R72、指针寄存器(1)程序计数器PCPC的内容是指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC=0000H具有自动加1功能不可寻址即不能通过指令访问。(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP=07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。DPTR=DPH+DPL,也可单独使用。没有自动加1功能通过软件INCDPTR内容加1时序单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。执令周期:即从取指到执行完,所需时间。不同机器指令周期不一样;即使相同机器,不同的指令其指令周期也不一样。机器周期:机器的基本操作周期。一个指令周期含若干机器周期(单、双、四周期)状态周期:一个机器周期分6个状态周期Si每个状态周期含两个振荡周期,即相位P1、P2。振荡周期:由振荡时钟产生。振荡周期Tosc=1/fosc一个机器周期=12个振荡周期=12×1/fosc。例如,若fosc=12MHz,则一个机器周期=1μs。时钟的产生:通过XTAL1(19)、XTAL(18)。这两个管脚外部加石英晶体和电容组成振荡器系统复位通过给RST管脚加高电平理论上大于两个机器周期,实际大于10ms,系统复后除了SP=07H,P0、P1、P2、P3为FFH外,所有的寄存器均为00H,PC=0000H,PSW=00H工作寄存器组R0~R7工作在0组。并行I/O端口并行I/O端口四个8位I/O口P0、P1、P2、P3作为通用I/O使用,是一个准双向口:“读管脚在输入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态,可作高阻抗输入”MOVP1.#0FFHMOVA,P1读端口数据方式是一种对端口锁存器中数据进行读入的操作方式,CPU读入的这个数据并非端口引脚的数据。(对端口进行读-修改-写类指令列如CPLP1.0是读端口锁存器而不是管脚)一、P0口地址80H系统复位后P0=FFH(1)P0口可作通用I/O口使用,又可作地址/数据总线口;(2)P0既可按字节寻址,又可按位寻址;(3)P0作为输入口使用时:是准双向口;(4)作通用I/O口输出时:是开漏输出;(外部管脚必须接上拉电阻)(5)作地址/数据总线口时,P0是一真正双向口,分时使用,提供地址线A0~A7由ALE控制信号锁存,数据线D0~D7二、P1口地址90H地址90H系统复位后P1=FFH2、特点(1)无地址/数据口功能(2)可按字节寻址,也可按位寻址(3)作I/O输入口时:是一准双向口,不是开漏输出(无需外接上拉电阻)。三、P2口地址A0H系统复位后P2=FFH2、特点(1)当P2口作为通用I/O时,是一准双向口。(2)从P2口输入数据时,先向锁存器写“1”。(3)可位寻址,也可按字节寻址(4)可输出地址高8位A8~A15。四、P3口地址B0H系统复位后P3=FFH2、特点(1)作通用I/O时,是一准双向口,不是开漏输出(无需外接上拉电阻)。(2)P3口具有第二功能1、P0口:地址低8位与数据线分时使用端口,2、P1口:按位可编址的输入输出端口,3、P2口:地址高8位输出口4、P3口:双功能口。若不用第二功能,也可作通用I/O口。5、按三总线划分:地址线:P0低八位地址,P2高八地址;数据线:P0输入输出8位数据;控制线:P3口的8位(RXD、TXD、INT0、INT1、T0、T1、WR*、RD*加上PSEN*、ALE、EA组成制总线。)中断系统五个中断源,两个优先级一、中断请求源(“五源中断”)五个中断源:入口地址外部中断0(/INT0)0003HT0溢出中断000BH外部中断1(/INT1)0013HT1溢出中断001BH串口中断0023H有了中断请求,如何通知CPU?通过中断请求标志位来通知CPU。外部中断源、定时/计数器的中断请求标志位分布在TCON中;串口中断标志位分布在SCON中。TCONTF1TR1TF0TR0IE1IT1IE0IT0SCONTIRI中断请求标志位IE0(INT0)IE1(INT1)TF0(T0)TF1(T1)TI/RI(串口)TF1——T1的溢出中断标志。硬件置1,硬件清0(也可软件清0)。TF0——T0的溢出中断标志。(同TF1,只是针对T0的)IE1——外部中断1(/INT1)请求标志。外部有中断请求时,硬件使IE1置1,硬件清0。IE0——外部中断0(/INT0)请求标志。IT1——外部中断1(/INT1)触发类型控制位。IT1=0,低电平触发。IT1=1,下降沿触发。IT0——外中断0(/INT0)触发类型控制位,用法同IT1。外部中断INT0、INT1触发方式有电平触发和跳变触发TI——串口发送中断标志位。发送完数据,硬件使TI置1,软件清0(CLRTI)RI——串行口接收中断标志位。硬件置1,软件清0。二、中断控制(两级管理)1、中断屏蔽在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关,第二级为五个分开关,由IE控制。IEEAESET1EX1ET0EX0EA——总控制位ES——串口控制位若为“1”,允许(开关接通)ET1——T1中断控制位若为“0”,不允许(开关断开)EX1——/INT1控制位例如,SETBEAET0——T0中断控制位CLRIE.7EX0——/INT0控制位2、中断优先级为什么要有中断优先级?CPU按中断申请时间先后顺序响应中断,同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求CPU响应高级别中断。为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。同时同级的中断源申请中断CPU按优先顺序响应中断。IPPSPT1PX1PT0PX0以上各位与IE的低五位相对应,为“1”时为高级。初始化编程时,由软件确定。例如,SETBPT0或SETBIP.1CLRPX0等。同一级中的5个中断源的优先顺序是:(注意是同级)/INT0中断高T0中断厂家出厂时已固化好顺序/INT1中断——事先约定T1中断串口中断低中断嵌套同级或低级中断不能打断正在响应的中断的服务程序,高级中断能够打断低级中断服务程序而形成中断嵌套定时/计数器定时/计数器两个定时器/计数器T0、T1四种工作方式中断方式定时器程序初始化主要部分如下MOVTMOD,#DATA;设置定时器工作方式MOVTH0(TH1),#DATA;给定时器计数器装入初值MOVTL0(TL1),#DATASETBEA;开中断SETBET0(ET1);开中断SETBTR0(TR1);启动定时器计数器一、定时/计数器的结构T0、T1均为16位加1计数器。TH0TH1TL0TL1TMOD工作方式TCON1、工作方式控制寄存器TMODT1T0TMODGATEC//TM1M0GATEC//TM1M0GATE——门控位。GATE=0软件启动,仅由软件置TR0(TR1)为1启动定时器/计数器;置0停止定时/计数GATE=1硬件启动,软件置TR0(TR1)为1后.INT0管脚或/INT1管脚高电平启动定时器/计数器。C//T——外部计数器/定时器方式选择位C//T=0定时方式;C//T=1计数方式。M1M2——工作模式选择位。M1M0模式说明工作方式控制字计数值高八位计数值低八位计数值高八位计数值低八位00013位定时/计数器八位TH(7~0)+低五位TL(4~0)01116位定时/计数器TH(7~0)+TL(7~0)1028位计数初值自动重装TL(7~0)TH(7~0)113T0工作在两个8位定时/计数。运行,而T1只能工作方式2,TCONTR1TR0TR0——定时/计数器0运行控制位。软件置位,软件复位。与GATE有关,分两种情况:GATE=0时,若TR0=1,开启T0计数工作;若TR0=0,停止T0计数。GATE=1时,若TR0=1且/INT0=1时,开启T0计数;若TR0=1但/INT0=0,则不能开启T0计数。若TR0=0,停止T0计数。TR1——定时/计数器1运行控制位。用法与TR0类似。C//T=0——定时C//T=1——对外计数。定时:fosc/12=1/(12/fosc)=1/Tcy等间隔,次数已定,时间确定Tcy即对机器周期进行计数。左图定时时间为n×Tcy。n计数:脉冲不等间隔。外部管脚输入(T0P3.4、T1P3.5)每个下降沿计数一次确认一次负跳变需两个机器周期,(要求计数脉冲的高、低电平要大于一个机器周期)所以,计数频率最高为fosc/24。定时器初值计算计数脉冲的个数N=t(定时时间)/Tcy(机器周期计数初值X=M(定时计数器的模)-N方式0X=213-N=8192-N方式1X=216-N=65536-N方式2X=28-N=256-N推荐工作方式1和方式2例1、设计一个P1.0能产生t=1ms的周期信号发生器,主频试编程。解:选T0;C//T=0,GATE=0定时时间0.5msN=t/Tcy=t/(12×(1/fosc))=500所以,X=M-500,问:M取多少?模式0、模式1均可,取模式1,M=216X=65536-500=65036=FE0CHTH00FEHTL00CH程序:ORG0000HLJMPMAINORG000BHLJMPINSE1ORG1000HMAIN:MOVSP,#60HMOVTL0,#0CHMOVTH0,#0FEHMOVTMOD,#01HSETBTR0;SETBET0;SETBEASJMP$INSE1:MOVTL0,#0CHMOVTH0,#0F0HCPLP10R
本文标题:MCS-51单片机复习要点
链接地址:https://www.777doc.com/doc-2888163 .html