1、第2章 MCS-51单片机硬件结构, 8位CPU, 片内128B RAM, 片内4KB ROM/EPROM(8031无), 特殊功能寄存器区 SFR, 2个优先级的5个中断源结构, 4个8位并行口:P0、P1、P2、P3,2.1 MCS-51单片机主要功能特点,一、 MCS-51单片机的主要,功能特点,指令系统, 2个16位定时器/计数器T/C, 1个全双工串行口UART, 布尔处理机 位处理机,(10) 64KB外部RAM地址空间,(11) 64KB外部ROM地址空间,(12) 片内时钟电路及振荡器,(13) 指令系统 (111条),上页,下页,回目录,指令系统,2.2 MCS-51单片机内
2、部结构分析,上页,下页,回目录,CPU,内 部 总 线,8051/8751,面向用户的结构,8031,共40条引线,用户的内特性,用户外特性,图2-2 MCS-51功能 框图,P32,逻辑结构框图,1、中央处理器,2、存储器,3、I/O口,MCS-51单片机有 4 个 8 位并行口,1 个全双工串行口 UART, 2 个 16 位的 T/C。,由运算器和控制逻辑组成。主要功能是产生各种控制信号,控制存储器、I/O端口的数据传送、数据运算、及位处理等操作等。采用SFR集中控制,程序存储器ROM/ EPROM(8031中没有,需外接) , 存放程序和编好的表格及常数等。,数据存储器RAM:存放中间
3、结果、数据暂存、缓冲、及存放标志位等。,8051/8751,内部组成,40引脚,双列直插式结构,上页,下页,回目录,RST/VPD,Vss,Vcc,2.3 MCS-51单片机的引脚功能,用户外特性,管脚的功能,(1)电源与时钟,Vcc:接+5V电源端,Vss:接地端,XTAL1:片内振荡电路输入端,XTAL2:片内振荡电路输出端,内时钟方式:,在XTAL1、XTAL2上外接定时元件,使其形成自激振荡器。,时钟电路:,内时钟方式,外时钟方式,上页,下页,回目录,复位信号:高电平复位CPU,低电平CPU工作,ALE,名称,功 能,片外取指信号(片外程序存储器读)输出端低电平有效。通过P0口读回指令
4、或常数。 控制的是片外程序存储器,RESET, 控制信号,地址锁存信号。 ALE低电平时, P0口出现数据信息; ALE高电平时, P0口出现地址信息。,程序存储器选择信号,上页,下页,回目录,0 时,选外部ROM;,1,地址小于4k时,选内部ROM,地址大于4k时,选外部ROM,P0口是数据/地址复用口,用下降沿 锁存P0口的低8位地址到外部锁存器,PC 0000H,ACC 00H,B 00H,PSW 00H,SP 07H,DPTR 0000H,P0P3 0FFH,IP 00000B,IE 000000B,TMOD 00H,TCON 00H,TH0 00H,TL0 00H,TH1 00H,T
5、L1 00H,SCON 00H,SBUF 不定,PCON 0 000B,上页,下页,回目录,单片机各端口小结,P0、P1、P2、P3四个端口都可以作为I/O口用,且均是准双向口: 作为I/O口用时,且当由输出方式变为输入方式时,应先向口写入“1”,使两个FET均截止,然后再读入。如:将P0口引脚上的信息读入A中,应用指令:MOV P0,#00HMOV P0,#0FFH ;端口锁存器置“1”MOV A,P0 但仅P0口须外接上拉电阻,对P1、P2、P3口,由于它们的内部己经接有上拉电阻,故不需外接上拉电阻;(提示:这里的加上拉电阻是指为防止引脚电平的不确定而加的,实际在应用中,为了提高引脚驱动能
6、力一般在引脚上都有加上拉电阻)。 P0口、P2口、P3口在特定情况下还具体其它功能。 P0口:地址低8位与数据分时复用; P2口:外部程序存储器或数据存储器的高8位地址线; P3口:具有第二功能。 P0口、P2口、P3口在不作为其它功能用时才作为I/O口用。 具体应用:有用P0口作I/O口时,P0口一定要加上拉电阻;只有当某脚(P0,P1,P2,P3)由输出方式变为输入方式时,才应先向口写入“1”,然后再读。,0000H,0FFFH,0FFFH,0000H,1000H,FFFFH,8051/ 8751,8031,一. 51系列程序存储器配置图,4KB,2.4 存储器的组织,二. 51系列数据存
7、储器配置图,下页,MCS-51内部 RAM配置,1. 内部数据存储器配置图,256B,0FH 08H,17H 10H,2FH 20H,7FH30H,80个字节 RAM,只能按字节寻址,16个字节分为 128个RAM位,可按位亦可按字节寻址,四个工作寄存器区,1)、内部RAM区功能配置图,00H,1FH,07H 00H,1FH 18H,上页,下页,回目录,亦可作普通RAM使用, 通用寄存器组 32个RAM单元,共4个区,每个区8个通用工作寄存器 R0R7,“区”的选择由程序状态字PSW中的RS1和RS0确定,上页,下页,回目录, 位寻址区 (16个RAM单元 VS 12个SFR), 字节地址:2
8、0H 2FH, 16个 RAM 字节共128个 RAM 位, 位地址:00H 7FH, 12个SFR中的93位具有位寻址功能,位寻址区,128个RAM位,93个SFR位, 布尔处理机数据存储器的主要组成部分,上页,下页,回目录,共221位,直接地址能被8所整除的,构成,其中3位无定义,(3) 用户RAM区(数据缓冲区)共80个单元,字节地址:30H 7FH,8051单片机复位时,堆栈指针SP指向 07H 单元,片内RAM的部分单元可用作堆栈,51的栈区不是固定的,为避开工作寄存器区、位寻址区,用户堆栈一般设置在 30H 7FH 之间,上页,下页,回目录,真正的RAM单元,SP 指针是可编程的寄
9、存器, 程序计数器PC,16位专用寄存器 ,寻址范围64KB,用户不能直接使用的寄存器。不属于SFR 。,2). 专用寄存器区,通电时自动复位,运行时可手动复位,复位 后,,PC的内容自动清零,用来存放下一条指令地址。CPU取指令时,,将PC内容经地址总线送到程序存储器,从该地址单元取回指令,译码并执行;同时,PC自动加1,如果程序需要转移,可在程序中安排转移或条件转移指令,(JMP或JNC)、调用子程序指令CALL等,上页,下页,回目录, 累加器A 地址:0E0H, 寄存器B 地址:0F0H, 程序状态字PSW 地址:0D0H,格式如下:, 堆栈指针 SP,保护CPU现场和断点地址,作用:,
10、工作方式:“先进后出”或“后进先出”,数据压入堆栈时,SP自动加1,数据弹出堆栈时,SP自动减1,中断时,转子时,栈区“向上生成”,按“先进后出”工作原则,由SP组织的内部 RAM区域,被称为堆栈。,分析SP: MOV SP,#60HPUSH APUHS BPOP 30H, 数据指针 DPTR,16位寄存器,高字节用DPH表示,低字节用DPL表示,对外部 RAM 或 I/O 口寻址,范围64KB,例:,MOVX A,DPTR,MOVX DPTR, A,;将外部RAM中地址为DPTR的单元内容读到A中,;将A中的内容写到外部RAM中地址为DPTR的单元,MOVC A, A+ DPTR,;采用基址
11、+变址的方法读程序存储器内的表格常数,;DPTR为基址寄存器, A为变址寄存器,上页,下页,回目录,(DPTR),A,(A),DPTR,(A)+(DPTR),A, I/O 端口P0 P3 地址:80H 90H 0A0H 0B0H,专用寄存器P0 P3分别是端口P0 P3的锁存器, 串行数据缓冲器 SBUF 地址:99H,存放欲发送的数据,存放已接收的数据,一个地址: 99H, 定时/计数器 T0 T1,MCS-51系列有2个16位定时/计数器T0 、T1,MCS-52系列增加了1个16位定时/计数器T2,SBUF,两个缓冲器共用,“写”发送缓冲器,“读”接受缓冲器,MOV SBUF,A,MOV
12、 A ,SBUF, 其他控制寄存器,寻址空间64KB,采用寄存器间接寻址方式,间址寄存器有R0、R1(256B),数据指针DPTR(64KB),采用MOVX指令单片机产生读/写信号,对外部RAM产生读写操作,2、外部数据存储器,FFFFH,0000H,MOVX A,Ri,MOVX A,DPTR,MOVX Ri,A,MOVX DPTR ,A,“读”指令,“写”指令,通过三条总线扩展,2.5 MCS-51 CPU时序,1个机器周期 6个S状态12 (拍)个振荡周期 1个指令周期由1个或多个机器周期组成。,上页,下页,回目录,复习题,复位高电平保持的时间有何要求?复位后各寄存器的内容分别为多少? 程
13、序存储器与数据存储器的作用各是什么? 4个I/O端口功能上有何特点,使用上应注意什么? 。,1. 若MCS-51单片机采用6MHz的晶振,其复位高电平脉冲时间应该超过( )。A. 2s B. 4s C. 2mS D. 4Ms 2.单片机8051用端口 ( )传送地址。 AP0口和P1口 BP0口和P2口 CP0口和P3口 DP1口和P2口 3. MCS-51单片机有片内ROM容量( ) 。A. 4KB B. 8KBC. 128B D. 256B 4. 程序计数器PC用来( )。 A、存放指令 B、存放正在执行的指令地址C、存放下一条的指令地址 D、存放上一条的指令地址 5.单片机应用程序一般存
14、放在( )。A、RAM B、ROM C、寄存器 D、CPU,6. 设单片机的晶振频率是fosc,则单片机执行非MOVX指令时,ALE信号的频率是( )。A. focs B. focs/2 C. focs/6 D. focs/12 78051的内部RAM中,可以进行位寻址的地址空间为( )。A00H2FH B20H2FH C00HFFH D20HFFH 8对于INTEL 8031来说,EA脚总是( )。 A接地 B接电源 C悬空 D不用 9. 若标志单元PSW = 77H ,当前工作寄存器是( )。 A 第0区 B第1区 C第2区 D第3区 10辅助进位标志AC在( )中A累加器 B算逻运算部件
15、ALUC程序状态字寄存器PSW DDPTR 11执行三次POP指令后,堆栈指针SP的值将( )。A减3 B加3 C减6 D加6 12在单片机中,通常将一些中间计算结果放在( )中。 A、累加器 B、控制器 C、程序存储器 D、数据存储器,第三章 指令系统,熟悉伪指令 掌握MCS-51指令系统 会正确书写指令,分析指令片段.,伪指令,1、起点指令 ORG 2、结束命令 END 3、定义字节命令 DB 4、定义字命令DW 5、定义空间命令 DS 6、等值命令 EQU 7、数据地址赋值等值命令 DATA 8、位地址符号命令 BIT,指令系统,数据传送指令(29条)一般不影响状态标志位(PSW:CY,
16、AC,F0,RS1,RS0,OV,P),但堆栈操作可以修改PSW位,累加器A中1的个数影响P位。 3.3.2 算术运算类指令(24条) (除个别INC、DEC指令影响P位外,其它指令一般都影响标志位。) 逻辑运算(24条)除带进位的循环指令RRC、RLC对标志位有影响外,其它指令不影响标志位。 (4) 位操作; (17条) (5) 控制转移; (17条),AJMP和LJMP的转移范围 CJNE指令 JBC指令 JB JNB ,1. (绝对)短跳转指令(2字节指令)AJMP addr11 ; PCaddr11,跳转范围2k (211=2K)这是2KB范围内的无条件跳转指令, 执行该指令时, 先将
17、PC+2(因该指令是2个字节的指令), 然后将addr11送入PC10PC0, 而PC15PC11保持不变。 这样得到跳转的目的地址。需要注意的是, 目标地址与AJMP后面一条指令的第一个字节必须在同一个 2 KB区域的存储器区内。例:判断下列指令是否正确? (1)、地址 指令0345H AJMP 0123H (2)、2567H AJMP 29ABH (1).(PC+2)=0347H 二进制码为:0000 0011 0100 0111B0123H 二进制码为:0000 0001 0010 0011B (2).(PC+2)=2569H 二进制码为:0010 0101 0110 1001B29AB
18、H 二进制码为:0010 1001 1010 1011B,解:,2. 长跳转指令(3字节指令) LJMP addr16; PCaddr16,跳转范围64k执行该指令时, 将 16 位目标地址addr16 装入PC, 程序无条件转向指定的目标地址。转移的目标地址可以在 64 KB程序存储器地址空间的任何地方, 不影响任何标志。,3. 散转指令(间接跳转指令) (1字节指令) JMP A+DPTR ;PC(A)(DPTR)执行该指令时, 把累加器 A中的8 位无符号数与数据指针中的 16 位数相加, 结果作为下条指令的地址送入PC, 不改变累加器A和数据指针DPTR的内容, 也不影响标志。 利用这
19、条指令能实现程序的散转。,三、 比较转移指令在MCS - 51 中没有专门的比较指令, 但提供了下面 4 条比较不相等转移指令: CJNE A, direct, rel CJNE A, data, rel ; (A)=#data,继续, C0(A)#data, 转 , C0(A)#data, 转 , C1特点: (A)只有 #data时, C1 CJNE Rn, data, rel CJNE Ri, data, rel这组指令的功能是: 比较前面两个操作数的大小, 如果它们的值不相等则转移。转移地址的计算方法与上述两条指令相同。如果第一个操作数(无符号整数)小于第二个操作数, 则进位标志Cy置
20、“1”, 否则清“0”, 但不影响任何操作数的内容。如:CJNE A,#78H,LOOP,做减法运算,注意:该指令本质上是做减法运算,但不影响原来操作数的值。,从地址4678H开始有一指令AJMP addr11,该指令可能实现的转移范围是( )A.4000H4800HB.4000H47FFHC.3800H4100HD.6000H6FFFH,例 题例:指令:CLR 30H 中的“30H”指的是:( )A、内部RAM单元(字节)地址B、位地址C、字节地址或位地址D、既不是字节地址也不是位地址,B,指令中给出的一地址是位地址的情况:1.位指令中的地址,如MOV C,20H 和JB 20H,LOOPE
21、R中的20H明显只能是位地址. 2.CLR 或 CPL助记符后若是一直接地址时,则该直接地址必是位地址.如CLR 20H,CPL 20H中的20H只能是位地址.,例3-3,设(70H)=60H,(60H)=20H,P1口为输入口, P1口当前的状态为AAH。分析下面程序的结果。MOV R0,#70HMOV A,R0MOV R1,AMOV B,R1MOV R0,P1,习题,用指令完成以下数据传送. (1).R1的内容传送到R0. (2).片外RAM 20H单元的内容送R0. (3).片外RAM 20H单元的内容送片内RAM 20H单元. (4).片外RAM 1000H单元的内容送片内RAM 20
22、H单元. (5).ROM 2000H单元的内容送R0. (6). ROM 2000H单元的内容送片内RAM 20H单元. (7). ROM 2000H单元的内容送片外RAM 20H单元.,例3-12,双字节无符号数减法,被减数分别在31H,30H中,减数分别在41H,40H单元中,差存于31H,30H单元中.CLR CMOV A,30H SUBB A,40H MOV 30H,A MOV A,31H SUBB A,41H MOV 31H,A,作业,分别编程实现下面的要求: 将存放在内部RAM41H、40H中的一个双字节数(高位字节在41H中,低位字节在40H中)加1,并将和放回在41H,40H中
23、,不考虑溢出。 将存放在内部RAM41H,40H中的一个双字节数(高位字节在41H中,低位字节在40H中)减1,并将差放回在41H,40H中。 设内部RAM41H、40H中有一双字节数 (高位字节在41H中,低位字节在40H中),判断:当该数9999时,将RAM41H、40H两单元清0,否则转向START2。,第四章 汇编语言程序设计,掌握顺序结构分支结构和循环结构的程序设计. 掌握查表程序的设计 熟悉子程序的设计及调用 会编写分析程序 简单程序实时控制程序的编写与分析 延时程序的时间计算 ”加一减一综合实践”,精确延时20ms程序(主频为12MHZ),DELY:MOV R7,#100 ;1T
24、 DLY0: MOV R6,#98 ;1TNOP ;1T DLY1: DJNZ R6,DLY1 ;2T 98 2T =196usDJNZ R7,DLY0 ; 2T RET ;2T,例 10 秒延时程序。延时程序与 MCS - 51 执行指令的时间有关, 如果使用 6 MHz(12MHZ)晶振, 一个机器周期为 2 s(1s), 计算出一条指令以至一个循环所需要的执行时间, 给出相应的循环次数, 便能达到延时的目的。10 秒(5秒)延时程序如下: DELAY: MOV R5, 100 ;1TDEL0: MOV R6, 100 ;1TDEL1: MOV R7, 248 ;1TDEL2: DJNZ
25、R7, DEL2 ;2TDJNZ R6, DEL1 ;2TDJNZ R5, DEL0 ;2TRET,T=(248T 21T+2T)1001T+2T 100+1T=4990301T,例4-20:一个十六进制数放在HEX单元的低四位,将其转换成ASCII码,查表程序:,解:,十六进制 09 的ASCII码为 30H39H,AF 的ASCII码为 41H46H,,利用查表指令 MOVC A,A+DPTR,MOVC A,A+PC,先用伪指令 DB 或 DW 把表格的数据存入ROM,上页,下页,回目录,来获得数据,ASCII码表格的首址为ASCIITAB,上页,下页,回目录,编程1:,0 1 2 34
26、5 6 7 8 9,A BC D E F,(A)= 3,33H,(A)= 15,46H,编程2:,;2字节,;1字节,#3,上页,下页,回目录,;变址调整,第五章,该章为本课程的一个重点 该章内容主要包括 中断系统 定时/计数器 串行口 要求:理解原理,分析程序,编程应用.,一.中断系统,中断概念 中断优点(分时操作、实时处理、故障处理,是一种并行处理技术) 中断响应时间 中断的请求,响应和返回 应用 熟悉相关的特殊功能寄存器,上页,下页,回目录,源允许,图5-19 中断系统总体逻辑结构,总允许,优先级,中断标志,中断 标志,1,IE0,矢量 地址送PC,“+1”,TF1,0,矢量 地址送PC
27、,EA,“+1”,“+1”,EX0,ET1,1,PX0PT0PX1PT1P S,“+1”,“+1”,例 题,如图,要求每当开关K按下时,L1的亮灭情况变换一次。,org 0000hajmp mainorg 0003hajmp kkorg 0030h main:setb it0setb ex0setb easjmp $kk: cpl p1.0reti,将setb it0改为clr it0的情况怎样?,51单片机的中断源有哪些?每个中断源的中断向量是什么?系统默认的优先级是什么? 中断服务程序可否放在程序存储器的任何区域? 下列说法正确的是( )。A各中断发出的中断请求信号,都会标记在MCS51系
28、统的IE寄存器中。B各中断发出的中断请求信号,都会标记在MCS51系统的TMOD寄存器中。C各中断发出的中断请求信号,都会标记在MCS51系统的IP寄存器中。D各中断发出的中断请求信号,都会标记在MCS51系统的TCON或SCON寄存器中。,二、定时/计数器,结构与原理 相关的特殊功能寄存器 方式0,1,2的应用,一、定时计数器的结构与工作原理,上页,下页,回目录,“+1”,“+1”,2、工作原理, 定时器,定时输入信号:机器内部震荡信号的1/12分频,即每一个机器周期做一次“+1”运算,上页,下页,回目录,若单片机的晶振主频为12MHz,则计数周期为 1s, 计数器,由外部引脚(T0为P3.
29、4 ,T1为P3.5)输入计数脉冲。,结论:T外2T机f外fosc/24,T CY,T CY,高电平,低电平,T CY:为机器周期,一个机器周期采样一次,外部输入脉冲发生负 跳变时,进行“+1”计数。,二、定时计数器的方式寄存器和控制寄存器,1、方式寄存器TMOD,控制T1,控制T0,门控位,功能选择位,工作方式选择,上页,下页,回目录,TMOD和PCON两个特殊功能寄存器只能字节寻址不能位寻址。,上页,下页,回目录,2、控制寄存器TCON,T1、T0 启/停控制位,T1、T0 溢出标志位,“0” 停止,“1” 启动,“1” 有溢出,“0” 无溢出,可编程 可控制,“+1”,亦可由指令清“0”
30、,工作,“1”,“0”,记录有无溢出,例5-1 若单片机晶振为12MHz,要求产生500s定时,试计算X的初值。,解:由于T = 1s,产生500s定时,需要“+1” 500次,定时器方能产生溢出。,采用方式0:( 13位计数器 ),X= 213(50010-6 /10-6 )= 8192 500 = 7692 = 1E0CH,采用方式1:( 16位计数器 ),X= 216 (50010-6 /10-6)= 65036 = FE0CH,THi,TLi,= 0001 1110 0000 1100B0001 1110 0000 1100B1 1110 000 0000 1100B =F00CH,要
31、点:只取低13位,高8位赋给TH0,低5位前加3个0凑成8位赋给TL0,上页,下页,回目录,应用举例,1、作定时器用,例5-2 设主频为12MHz,利用定时器T1定时。使P1.0输出周期(或频率)为2ms的方波。,解:用P1.0作方波输出信号,周期为2ms的方波即可用每1ms改变一次电平的方法完成,故定时值可设置为1ms。可做“+1”运算1000次,使T1工作在方式0,即13位计数器,定时初值:,X= M计数次数= 81921000 = 7192 = 1C18H,上页,下页,回目录,由于TL1的高3位不用,1C18H可写成:,1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0,TL
32、1的高3位不用,=E018H,TH1初值为E0H,TL1初值为18H,0 0 0 0,选择方式0,13位计数器,选择定时器方式,TMOD,=E018H,程序:,上页,下页,回目录,ORG 0000HAJMP STARTORG 001BHAJMP BR1ORG 0030H START: MOV TMOD,#0MOV TH1,#0E0HMOV TL1,#18HSETB EASETB ET1SETB TR1SJMP $ BR1: MOV TH1,#0E0HMOV TL1,#18HCPL P1.0RETI,计数初值转换的一种简便方法(补充),(1).方式0:TL0=X.MOD.32(即等于X除以32后
33、所得到的余数部分)TH0=INT(X/32)(即等于X除以32后所得到的整数部分) (2).方式1:TL0=X.MOD.256(即等于X除以256后所得到的余数部分)TH0=INT(X/256)(即等于X除以256后所得到的整数部分) 注:上面的式子中X为计数值,TL0、TH0存放计数初值。,练习,用中断的方式从P3.0输出一个频率为500HZ的方波.,三、串行口,串行口结构 串口控制寄存器SCON 串行口4种工作方式的特点及应用 奇偶校验的实现,(一)串行口结构,1. 数据缓冲器SBUF 发送SBUF和接收SBUF共用一个地址99H。 (1)发送SBUF存放待发送的8位数据,写入SBUF将同
34、 时启动发送。 发送指令:MOV SBUF,A (2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOV A,SBUF,2.串行口控制/状态寄存器SCON(98H),SM0,SM1:选择串行口4种工作方式。,根据SM0,SM1选择四种工作方式。 一、方式0:同步移位寄存器方式。用于扩展并行I/O接口。 1、特点 (1). 一帧8位,无起始位和停止位。 (2). RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。 (3). 波特率B = fosc/12如: fosc=12MHz,B=1MHz,每位数据占1s,即每个机器周期移动一位数据。 (
35、4). 发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。,(二) 串行接口的工作方式,二、 方式1: 8位数据异步通讯方式。,1、特点 (1). 一帧10位:8位数据位,1个起始位(0),1个停止位(1)。 (2). RXD:接收数据端。 TXD:发送数据端。 (3). 波特率:用T1作为波特率发生器,Rb=(2SMOD/32)T1溢出率。 (4). 发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1 (或SM2=0),将接收数据装入SBUF,停止位
36、装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。,1. 特点 (1). 一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。 (2). RXD:接收数据端,TXD:发送数据端。 (3). 波特率: 方式2:B=(2SMOD/64)fosc 。方式3:B=(2SMOD/32)T1溢出率 。 (4). 发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1 (或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据
37、,不置位RI。,三、 方式2和方式3: 9位数据异步通讯方式。,串行口的编程串行口需初始化后, 才能完成数据的输入、输出。其初始化过程如下: (1) 按选定串行口的操作模式设定SCON的SM0、SM1两位二进制编码。(2) 对于操作模式 2 或 3, 应根据需要在 TB8 中写入待发送的第 9 位数据。(3) 若选定的操作模式不是模式 0,还需设定接收/发送的波特率。设定SMOD的状态,以控制波特率是否加倍。若选定操作模式1或3,则应对定时器 T1进行初始化以设定其溢出率。,(三)串行口的应用,例1:用 8051 串行口外接 74LS165 移位寄存器扩展8位输入口, 输入数据由 8 个开关提
38、供, 另有一个开关 K提供联络信号。电路示意如图6.11 所示。当开关K合上时, 表示要求输入数据。输入 8 位开关量, 处理不同的程序。,程序如下: START: JB P1.0, $ ; 开关K未合上, 等待CLR P1.1 ; 165并行输入数据SETB P1.1 ; 开始串行移位MOV SCON, 10H ; 串行口模式 0并启动接收JNB RI, $ ; 查询RICLR RI ; 查询结束, 清RIMOV A, SBUF ; 输入数据 ; 根据 A处理不同任务SJMP START ; 准备下一次接收。,例3:用查询法编写串行口方式1下的发送程序。设单片机主频为11.059MHZ,采用
39、定时/计数器1方式2工作,作为波特率发生器。波特率为1200b/s,发送ASCII码的数据在片内RAM的20H3FH单元,要求在最高位上加奇校验位后串行发送。,T1计数初值:波特率1200b/s,取SMOD=0,则初值: X=256-11.059106/120012(32/20)=232=0E8H,ORG 0000HAJMP STARTPRG 1000H START:MOV SP,#70HMOV TMOD,#20H ;定时器T1为方式2MOV TH1,#0E8H ;波特率为1200b/sMOV TL1,#0E8H ;给TH1送重装初值SETB TR1 ;启动T1,MOV PCON,#00H ;
40、令SMOD=0MOV SCON,#40H ;串行口为方式1MOV R0,#20H ;字符块开始地址送R0MOV R2,#32 ;发送的字节数 D01:MOV A,R0 ;发送的ASCII数据送AMOV C,PSW.0 ;奇偶校验位送CCPL C ;形成奇校验位送CMOV ACC.7,C ;使A中”1”的个数为奇数MOV SBUF,A ;启动发送JNB TI,$CLR TIINC R0 ;下一个地址DJNZ R2,D01 ;若字符块未发送完则转到D01 ED: SJMP ED,下列说法错误的是( )。A串行口通信的第9数据位的功能可由用户定义。B发送数据的第9数据位的内容是在SCON寄存器的TB
41、8位预先准备好的。C串行通讯发送时,指令把TB8位的状态送入SBUF进行发送。D串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。 MCS-51 单片机的串行口有几种工作方式,怎样根据需要进行选择?,第六章 单片机系统扩展设计,系统扩展原理 程序存储器的扩展 数据存储器的扩展 I/O端口的扩展 8255A 8155(重点掌握) 理解I/O端口、程序存储器地址、数据存储器地址的关系。,6.1 MCS-51系统扩展原理,A0A7,D0D7,I/O,控 制 总 线 CB,1、片外三总线结构,数据总线 DB,晶振 1.212MHZ,地址总线 AB,进行系统扩展时,单片机的引脚可构成三总线结构,
42、扩展用的控制线有:WR,RD,PSEN,ALE,EA.,1、线地址译码法扩展16KBEPROM,上页,下页,回目录,=0,=0,=1,P202,三、数据存储器扩展设计,1、8051扩展2KBRAM,上页,下页,回目录,P209,6.7 可编程RAM/IO扩展器8155/8156,一、8155结构,PA7PA0,PB7PB 0,PC5PC0,TIMEOUT,TIMEIN,AD7AD0,图6-24 8155/8156 内部结构,上页,下页,回目录,二、8155的RAM和I/O端口寻址方式及应用,是RAM或I/O选择线,0 选中8155片内RAM, AD0AD7为RAM地址,1 选中8155 I/O
43、口和定时器, AD0AD7为I/O地址,P0口和 AD0AD7 相连,为高,从 AD0AD7 输入地址信息,为低,从 AD0AD7 输入/输出数据信息,00HFFH,ALE,寻址,寻址,否则AD0 AD7呈三态,A2 A1 A0 选中I/O及寄存器,0 0 0 命令及状态口,0 0 1 PA口,0 1 0 PB口,0 1 1 PC口,1 0 0 TL定时器低8位,1 0 1 TH定时器高6位,上页,下页,回目录,三、命令寄存器及状态寄存器,1 、命令字 格式 (8位),D7 D6 D5 D4 D3 D2 D1 D0,TM2 TM1 IEB IEA PC2 PC1 PB PA,0 输入,1 输出
44、,1 开中断,上页,下页,回目录,D0,PA,D1,PB,D3 D2,0 输入,1 输出,PC2 PC1,A、B、C口为基本I/O口,A、B 入/出由D1D0确定,C口入,0 0,A、B、C口为基本I/O口,A、B 入/出由D1D0确定,C口出,1 1,0 1 A口为选通方式,B口为基本I/O,PC0PC2口为PA口联络线 PC3PC5为基本I/O口输出方式,1 0 A口、B口为选通I/O,PC0PC2口为PA口联络线 PC3PC5为PB口联络线,0 关中断,0 0 空操作,0 1 停止计数,1 0 时间到,停止计数,1 1 置入方式控制字和计数初值后,立即启动计数。若正在计数,溢出后则按新的
45、方式和初值计数。,可编程可控的 “只写不读”,例题,若8155的CE端接P2.0,IO/M接P2.1,当无关位为全0和全1时分别写出其RAM与I/O口的地址。,图6-28 8155与8031接口电路,上页,下页,回目录,P2.7,P2.0,P00 P01 P02 P03 P04 P05 P06 P07,AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7,8031,8155,ALE,P225,P00 P01 P02 P03 P04 P05 P06 P07,AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7,ALE,ALE,P2.7,P2.0,ALE,外部程序存储器的地址和
46、外部数据存储器的地址是否能重叠?扩展的I/O端口占用谁的地址? 执行指令MOVX A,DPTR时,和脚的电平为( )A. 高电平,低电平 B、低电平,高电平C、高电平,高电平 D、低电平,低电平,第七章 D/A与A/D,D/A DAC0832的结构原理 DAC与单片机连接的方法(三种) 两种输出方式(单极性和双极性,对应的转换公式) 应用 A/D ADC0809的组成与工作原理(转换公式) 应用,上页,下页,回目录,8 位 输 入 锁 存 器,锁存允许,片选,写1,写2,传送,15K,D/A转换器的输出方式,1、单极性输出,上页,下页,回目录,MOV DTPR,#7FFFH MOVX DPTR, A,D0 D1 D2 D3 D4 D5 D6 D7,V0,P267 图7-7 DAC0832单极性输出电路,典型应用电路,上页,下页,回目录,典型应用电路,几点说明,图7-8中,R1=R2=2R3,Rfb和输出端之间可串接一可调电阻,调整输出的满程量;R4是运放的调零电阻,通过改变它的大小可以对D/A芯片进行零点补偿;一般要分两步进行调整,先调整第一级达到要求后再调整第二级。,