2020年 05月 02日 星期六
您的位置: 威廉希尔主页 > 单片机技术 >

单片机原理及应用_于光平_教学笔记

来源:未知     作者:威廉希尔     发布时间:2020-05-02 07:56         

  绪论单片微型计算机概述 单片机-Single Chip Microcomputer/One Chip Microcomputer 一.单片机的发展历史概况: 第一阶段:(1974~1976)单片机发展初级阶段 1971 Intel 4004 位微处理器1974 Fairchild(仙童公司) “F8” “单片机” F8-8 位CPU 64 位RAM 个并行I/O口3851-1K ROM T/C(时钟) 第二阶段:(1976~1978)低中性能8 位单片机阶段 1976 Intel MCS-48 系列8 位单片机 ROM容量较少,无串行I/O口,中断处理 简单,寻址范围小于等于4KB,指令一般。 第三阶段:(1978 高性能8位单片机阶段 1978 Motorola 6801 Zilog Z8 1980 Intel MCS-51 系列8 位单片机 位CPU并行I/O口 有串行I/O口 16 多级中断寻址范围64KB 实时处理能力增加 第四阶段(1982~ 16位单片机阶段 Mostek 682000——Thomsou Intel MCS—96 系列16 位单片机 CPU—16 RAM—232字节 ROM—8KB 中断处理能力8 级,多通道A/D,HSIO(高速 采集通道) 实时处理能力更强 集成度高达120000 特点:1.体积小,重量轻,功耗低,功能强,性价比高。2.抗干扰能力强 3.结构灵活,易于组成各种微机应用系统。 4.应用广泛 应用范围:大到飞船火箭、导弹,小到汽车、电视机、洗衣机,玩具 发展趋势:大容量高性能化,小容量低价格化,外围电内装化 教学目的,教学参考书,教学内容,教学方法教学目的:学懂学会用单片机,基本原理,能用单片机设计控 制,测量系统。 教学参考书: 《单片微型计算机原理和接术》 中国水利水电出版社 杨光友 《单片微型计算机原理和接术》 电子工业出版社 李群芳 《单片机应用系统设计》 航空航天大学出版社 《单片微型实用接术》航空航天大学出版社 《Flash单片机原理及应用》 电子工业出版社 《C8051F单片机应用解析》 [美]Cygnal Intergrated Products,Inc 第一章MCS-51 单片机的硬件结构及工作原理 1-1 MCS-51 单片机的总体结构和主要性能 HMOS 125MA 185MA电源功耗 (NMOS) 8051 8031 8751 (Imax) CMOS 80C51 80C31 24MA 1-2MCS-51 单片机的内部结构 微处理器――单片机的核心部件运算部件 定时逻辑部件 程序计数器PC(programcounter) 专用计数器和(寄存器): 计数,给出下条指令的地址。 接收信息功能——程序跳转时,PC接收指令中给出的转移 地址。 作用:始终保持执行程序过程中下条指令的地址。 16 位计数器 16 =1K64=64K寻址范围0000H~FFFFH 容量1).片内容量 2).片外可扩展 PC15~0总容量可达64KB(片内+片外) /EA=1 先读片内ROM,后读片外ROM /EA=0 只对片外ROM 读取指令 OOOOH—复位矢量(RST)开机或复位后,(PC)=0000H 单片机从0000H 单元开始取指令, 执行程序。 通常为跳转指令 0000H: LJMP addr OOOOH: LJMP 0030H 0030H 为用户程序首地址 2)0003H—外中断0 矢量地址(/INTO) 当外设使/INT0=0,或使/INTO 出现下降沿时发出中断0 申请, 单片机若响应此中断,则中止现运行的程 序,转至0003H 单元 执行程序,(PC=0003H)0003H: LJMP ADDR 0003H: LJMP 0100 3)000BH-定时器0 溢出中断矢量 用户使用单片机内部的定时器/计数器T0,发出溢出中断申请, 若单片机响应该中断,则中止现运行程序,转至 000BH 单元执行 程序(PC=000BH) 4)0013H-外中断1 矢量(/INT1) 5)001BH-定时器1 溢出中断矢量 6)0023H-串行口中断矢量 7)/EA-访外部程序存储器控制线V),只外部ROM,从外部ROM 读取指令 /EA=“1”(+5V),先读片内ROM,后读片外ROM 8031/8032 必须/EA=0 8051/8052/8751(内外) 内部数据存储器(RAM)1.容量 2.结构 位寻址区(20H~2FH) 数据缓冲区 (30H~7FH) 工作寄存器区0~3(00H~1FH) 应用:1) 许多指令与寄存器有关,如寄存器间接寻址和直接寻址 中断时需要换用一个区MOV R5)MCS-51 系列的专用寄存器地址对照 若访问SFR中未定义的单元只能得到随机数。 作业:1. 按地址从小到大的顺序,将表格补满。 2.凡是地址能被8 整除的专用寄存器,用红线画出 寄存器乘法(A)(B)—(BA) 除法(A)/(B)—(A)„(B) 可以用作普通RAM 10 SP-堆栈指针(8位寄存器)(什么是堆栈操作?提问) 原则上MCS-51的堆栈区可以设在内部RAM 00H~7FH 的任何 区域。 考虑: 00H~1FH 为工作寄存器区 最好不设堆栈区 20H~2FH 位寻址区 最好不设堆栈区 一般多在 片内RAM 30H~7FH范围中选择适当的区域 复位后(SP)=07H;若不对SP赋值,堆栈将从08H 单元开 始执行。 SP的内容可由硬件改变(例中断改变SP)和软件设置 DPTR-数据指针可以作为一个16 位寄存器使用和访问 可以分成2 个的8 位寄存器单独使用和访问 主要作用:1)作间接寄存器,存放16 位地址,访问64K 的外RAM 2)作基址寄存器,存放 16 位基址,加上变址后可访 ROM,用来读ROM 中的,表格等 SBUF-串行数据缓冲器发射缓冲器(单缓冲) 接收缓冲器(双缓冲) 作用:存放欲发射的数据或已接收的数据 T0(TH0和TL0);T1(TH1 和TL1);T2(TH2 和TL2) 定时器0 定时器1 定时器2 16 位定时/计数器,TH高8 位,TL低8 两个寄存器:两个寄存器共用一个地址 11 可作为16 位定时/计数器使用;但必须高低8 位单独访问(读写) P0,P1,P2,P3-I/O端口P0~P3 MCS-51不设有专门的输入输出指令 PSW-程序状态字存放运行程序中的状态信息 CY-进位标志 AC-辅助进位标志 F0—用户标志0 软件可置0 可测定F0的状态决定程序的转移 RS1,RS0-工作寄存器选择位 OV—溢出标志: 当操作结果位6 对位7 有进位,而位7 对CY 无进位 对位7无进位,而位7 对CY 有进位时 OV=1 否则 OV=0 累加器A的奇偶标志 位寻址区(28个单元(52 子系列),共221 内部RAM中的位寻址空间 内部RAM 20H~2FH,16 个单元,共816=128 专用寄存器块中的位寻址空间SFR 块中凡是地址号能被 整除的专用寄存器,它的每一位都12 有自己的位地址。(其中有3 位未定义的除外)它们的地址与RAM 中位地址统一排列。80H~FFH 中12 个专用寄存器有位地址 注意: SFR块中的位地址并不是连续的(C0,D8,E8,F8 未定义) 位寻址空间的每位可被CPU单独访问。 可扩展片外RAM(DPTR)16 位,可扩展64KB 用其他方法可扩展

  64KB 外部数据存储器的地址是单独排列的(从0单元开始) 访问外RAM时,用专门的 13 指令MOVX ,@DATR/@R0MOVX @DATR/@R0, 存储器:物理上四个空间逻辑上三(五)个空间 八.8032/8052 RAM 容量:片内RAM 256B,00H~FFH 问题:高128 字节内部RAM 的地址与专用寄存器的地址重合 访问RAM 的高128 字节,只能用寄存器间接寻址 访问内部专用寄存器, 只能用直接寻址 九.存储器,专用寄存器的可用的访问方式(寻址方式) 1.R0~R7(00H~1FH),A,B,DPTR,Cy,BA: 寄存器寻址 被寻址的寄存器的内容就是操作数 (地址不在指令中用直接方式给出,寄存器号隐藏在操作码中) 2.内部RAM 低128 字节 专用寄存器 直接寻址 3.内部RAM 可位寻址 直接寻址 SFR 中可位寻址 位寻址 直接寻址:操作数的地址直接由指令中给出 14 4.内部RAM 低128 字节, 内部RAM 高128 字节 外部RAM 5.立即寻址 MOV #30(立即数)6.相对寻址 SJMP rel-相对地址 访问ROM 7.基址加变址寻址MOVC A,@A+DPTR 变址 注:只需知道可访问哪些区域或寄存器,具体寻址方式和理解在第二章结合指令讲 解更易理解 十.振荡器,时钟,时序电 1.振荡电 内部振荡方式 外部振荡方式 间接寻址 被寻址的寄存器的 内容是操作数的地址 15 2.时钟,时序 1).MCS-51 各种周期之间的相互关系 2).典型指令的取址和执行时序 16 S-状态周期信号,振荡频率,经过二分频而成为周期信号-内部时钟基准 每个状态对应2 个拍节,SiP1 S1P1 状态1 SiP2S5P2 状态5 状态周期够成一个机器周期TcyTcy 是执行一条单周期指令所需的时间,Tcy 的大小表征指令执行速 晶=6MHZTcy=126/f 晶=12MHZTcy=126/f ALE-外部存储器地址锁存信号(外引脚)17 当不访问外RAM时,ALE 一个机器周期产生2 次有效)当访问外RAM 时,ALE 在这个周期产生1 次有效)因此,在接有并访问外RAM 时,ALE 不稳定,不宜做系统的时钟 ALE直接通外引脚,通过测试 ALE 信号的存在,可以标志 CPU 在工作(S,Tcy 都是不能测到的) 十一. 输入/输出 (-)P1 口-准双向I/O 某位P1.i作输出 Di输出为“1” T2截止,T1 Di输出为“0” 18T2 导通,T1 截止 某位P1.i作输入 截止外输入“1”时Di=“1” 外输入“0”时Di=“0” b.原来A 外输入“0”时Di=“0”外输入“1”时Di=“0” 3)“读-修改-写”指令是打开 上边的三态门,读P1.i 原状态,即读锁存器 而不是读P1.i 的引脚 (二)P2 口-准双向I/O 口地址线.当系统不带外RAM 和外RAM 或在系统虽带外RAM 但不是用DPTR 间接寻址时P2口=P1 系统带外ROM或外ROM 需要用DPTR 间接寻址时,P2 口做地址线, 输出高位地址 (三)P3 口-双功能,准双向I/O /第二功能口线.准双向I/O 口-同P1 此时第二输出功能为1(由CPU 自动给出) 2.第二功能口线) 输入:相应端应先置1 ,输出:相应Q 第二功能可以输出20 (四)P0 口-三态口 使用当不接外ROM,外RAM,P0 口可作一般I/Os 使用 相当于P1 口,准双向口内部无上拉电阻 2.系统带有外ROM 或RAM P0 口只能作地址/数据分时复用总线使用,不能作普通的I/O 使用, 此时内部有上拉电阻。 作一般I/O口使用 P0 作一般I/O 口使用,程序执行普通I/O 输入输出指令时,CPU 控制线截止,开关向下 Di输出为“0” 控制信号使T1 截止 21 Di输出为“1”控制信号使T1 截止 使T2截止 对于TTL 高阻(悬空)=1 输入 对于MOS 三极管等需外接上拉电阻 逻辑„„操作-同P1“读-修改-写” 2.作地址/数据分时复 用总线 当系统接有外ROM或外RAM P0口分时低输出地址的低8 位和输入/输出数据。 当执行外ROM 取指或读写外RAM 类指令时CPU 置控制=1 地址/数据的输出:地址/数据输出为0,T1 截止,T2 地址/数据输出为1,T1导通,T2 截止 数据输入时,仍是打开下边三态门输入到Di中,同P1,但不用 22十二. 定时器/计数器 (一)定时器/计数器结构 1.专用寄存器TMOD-定时器/计数器方式控制寄存器 C//T-计数器/定时器方式选择位 定时器工作方式;用内部机器周期Tcy计数定时 计数器工作方式;对T0(T1)引脚上的外部事件脉冲做计数 GATE-门控位(书中为选通门)GATE=1 门控生效。定时/计数器受引脚/INTO(/INT1)的控制。只 有在/INTO(/INT1)为高电平时,计数器才可计数。 GATE=0 门控不生效,T0(T1)不受/INT0(/INT1)电平控制 M1M0-工作方式选择位23 2.专用寄存器TCON-定时/计数器控制寄存器 TR0-定时器/计数器0运行控制位,TR0 可由软件可清0,置1 TR0=1 计数器接通工作 TR1=0 计数器停止工作 TF0-定时器/计数器0溢出标志 当T0 溢出时,置TF0 为1,申请中断 CPU 相应中断后,即清TF0 TR1TF1 定时器/计数器1运行控制位和溢出标志 (二)定时器/计数器的工作方式 1.定时器工作方式 例:要定时64μ 溢出申请中断,先置C/T=0,GATE=0,TR0,f 晶=12M,Tcy=12/12=1μ 预置TL0=00H,TH0=FEH(即低位来2次进位脉冲后即溢出) 启动定时器TR0=1: s,一个Tcy进入计数器,作加1 计数,经过32μ 24出一次,发出一个进位脉冲给TH0,经过64μ 则TH0为FEH FFH 00H 溢出 溢出送至TF0,产生中断申请 2.计数器工作方式 GATE=0TR0=1 则开关接通,外部T0 引脚上的脉冲则 进入计数器,记录了外部事件发生的次数 T0(T1)外部脉冲下降沿计数。 计数外部脉冲的要求:高低电平都必须大于1 个机器周期 令TR0=0,则停止计数,但计数器内的计数值不丢失 例:外部事件发生二次,则TH0=FFH,TL0=11110, 则二次外部事件脉冲后,计数器产生溢出,中断申请 3.GATE 门的应用 TR0=1,GATE=1,GATE=1,GATE接反相器输出为 0,计数器是否计 数,将受到/INT0 电平的控制。/INT0=“1”,即高电平时,可以计 数。/INTO=“0”则停止计数。这样可方便地测出外输入/INT0 电平脉冲的宽度来2)方式1.与方式1 的差别是在于16 位定时/计数器 3)方式2.8 位自动重装载定时/计数器 TL0 计数溢出时,不仅置TF0 为1,而且还自动地把TH0 中的内容重 装入TL0 中,TH0 内容一般为,可以软件设置 模式0 25 模式1 模式2 模式3 例:要求每隔250μ 产生一个定时控制脉冲(f晶=12M,Tcy=1μ 26预置TH1=6,C/T=0 设为方式3TL0-可做8 位定时/计数器,启停TR0,中断TF0 TH0-因定做8 位定时器,启停TR1,中断TF1 可设置为方式0~2但门控位,启停控制,中断申请均有效 GATE 门的应用:可方便地测试/INTx 引脚上外输入脉冲宽度 例如: /INT0 引脚上有一脉冲,测试/INT0 引脚上的脉冲宽度,这时令 GATE0=1,并且选择内部定时计数方式 但是/INT0 时,不能计数,只有/INT0为高电平时才能计数 计到/INT0 电平为0 时。马上停止计数,这时只要读出计数器中的值, 就可得到/INTO 的脉冲宽度了,例如计了1200 个数,那么折合为 1200μ s=12ms 宽度 十三. 中断系统 1.中断系统结构 27 2.中断申请源 /INT0,/INT1 外中断0,外中断1,申请源 TF0 TF1 内部定时/计数器T0,T1 溢出中断申请源 TI RI片内串行口发送与接收中断申请源 专用寄存器TCON-计数器控制寄存器 TF1,TF0――CPU 响应中断后自硬件去清除 IT0-外中断0(/INT0)触发类型控制位(靠置1 IT0=0外中断0 程控为电平触发方式(低电平触发) IT1=1 外中断0 程控为边缘触发方式(下降沿触发) IE0-外中断0(/INTO)边沿触发中断请求标志 电平触发(激活)方式:外中断0(/INT0)引脚上出现低电平有效, 请求中断,且低电平一直保持到CPU 响应该中断为止。 边沿触发方式:外中断0(/INT0)引脚上的电平由高变低时(下降沿 28 有效,置中断请求标志IE0=1,请求中断。并且这个标志锁 在IE0 中,即使CPU 暂时不响应,也不会丢失,CPU 响应 该中断后,则自动硬件把IE0 清零。 边缘触发方式对引脚电平的要求: 高电平或低电平的持续时间

  1Tcy IT1,IE1-为外中断1(/INT1)相应控制,标志位 TI,RI 为串行口控制寄存器SCON 的D1 和D0 2.中断控制1)允许中断寄存器IE EA-总允许位 EA=0 一切中断 EA=1 各中断分别由各自允许位控制 EX0,ET0,EX1,ET1,ES-分别是/INT0,计/定0,/INT1,计/定 串行口的中断允许位 “0”-中断 “1”-允许中断 中断优先极寄存器IP29 MCS-51 个优先级别:高优先级别 IPi=1(接上) 低优先级别 IPi=0(接下) PT0=1定时器/计数器0 中断设为高优先级别 PT1=0 定时器/计数器1 中断设为低优先级别 复位后 IPx 被清零,所有优先级别均为低优先级别 举实例(中断嵌套) 一种中断一旦得到响应,与之同级的中断不可以在中断它(先来后到) 举实例 同时接到几个同一优先级别的中断请求时,CPU响应哪一个 中断,有一个固定的查询顺序(同级辅助优先级顺序) 3.中断响应时间 若只有一个中断源申请,响应时间3Tcy~8Tcy 4.中断响应过程(举实例) 矢量PC 30 5./INT0,/INT1 电平触发中断请求的撤除 有些外设和接口芯片,当它的数据缓冲器被CPU访问之后会自 动撤除它的中断申请如8279,8255 用软件和硬件结合撤除6.多外中断源设计 多中断源软件查询法31 十四. 复位 复位应脚RST 输入2 个机器周期以上时间的高电平,则 MCS-51 系列单片机可可靠的被复位初始化。 复位电1)上电复位电 2).按键电平复位电 32 3).按键脉冲复位电 2.复位状态 1)复位不影响内部RAM 的内容 2)各寄存器复位状态(P75) 十五.引脚 33 34 第二章 MCS-51 指令系统 0111 1100, 2-1.数据传送指令1.MOV A,Rn ;(A)

      威廉希尔