《嵌入式系统原理与接口技术》复习要点_第1页
《嵌入式系统原理与接口技术》复习要点_第2页
《嵌入式系统原理与接口技术》复习要点_第3页
《嵌入式系统原理与接口技术》复习要点_第4页
《嵌入式系统原理与接口技术》复习要点_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 MCS-51单片机的片内结构一、MCS-51单片机的内存结构(以89s52为例)MCS-51系列单片机是8位单片机,有40个管脚,8根数据线,16根地址线,寻址空间64KB(数据存储区和程序存储区分开)单片机8大组成:CPU、ROM、RAM、I/O、定时/计数器、串口、SFR、中断服务系统89S52机的内存结构物理上分为:4个空间, 片内ROM、片外ROM片内RAM、片外RAM逻辑上分为;3个空间, 程序内存(片内、外)统一编址 MOVC 数据存储器(片内) MOV 数据存储器(片外) MOVX1、程序存储区寻址范围:0000H FFFFH 容量64KB EA* = 1,寻址从内部ROM;

2、EA* = 0,寻址从外部ROM地址宽度:16位 存储器地址空间为64KB 作用:存放程序及程序运行时所需的常数。8051单片机6个具有特殊含义的地址0000H 系统复位,PC指向此处;0003H 外部中断0入口000BH T0溢出中断入口0013H 外中断1入口001BH T1溢出中断入口0023H 串口中断入口对于89S52,还增加了002BH T2中断入口2、内部数据存储区物理上分为两大区:00H 7FH即128B内RAM 和 用户RAM/SFR区。如图2所示。地址为80HFFH为SFR区,与片内高128B RAM单元统一编址,但属于另一专用空间区域00H1FH 的32个单元是4组通用工

3、作寄存器区,每区包含8B,为R7R0。可通过指令改变RS1、RS0两位来选择。(通用寄存器也是有地址的)20H2FH的16个单元的128位可位寻址,也可字节寻址。位地址=(字节地址-20H)*08H+字节.位如:21H.7(字节)0FH(位)30HFFH的单元只能字节寻址,用作存数据以及作为堆栈区。对地址为80HFFH的RAM区,只能采用间接寻址方式访问,而对地址为80HFFH的特殊功能寄存器区访问只能采用直接寻址方式。89S52内部数据存储器二、特殊功能寄存器SFR寻址空间离散分配在:80H FFH(注意PC不在此范围内)。地址末尾为0或8的SFR具有位寻址功能。位地址=SFR字节地址+SF

4、R字节地址.位如:TCON.6位,字节地址为88H,位地址为8EH堆栈可以设置在片内高位地址区(不可设在片外)。CPU的算术运算寄存器(1)累加器A(E0H)(2)B寄存器:乘、除法运算用(3)程序状态字PSW寄存器:包含程序运行状态信息。PSW CY AC FO RS1 RS0 OV PCY(PSW.7) 进位/借位标志;位累加器。AC (PSW.6) 辅助进/借位标志;用于十进制调整。FO (PSW.5) 用户定义标志位;软件置位/清零。OV (PSW.2) 溢出标志;硬件置位/清零。P (PSW.0) 奇偶标志;A中1的个数为奇数P = 1;否则 P = 0。【注】串行口通信方式2/3,

5、偶校验时,P可以用来与第9位(TB8/RB8)配合使用。RS1、RS0 寄存器区选择控制位。 0 0 : 0区 R0 R7(片内地址:00H07H) 0 1 : 1区 R0 R7(片内地址:08H0FH) 1 0 : 2区 R0 R7(片内地址:10H17H) 1 1 : 3区 R0 R7(片内地址:18H1FH)指针寄存器(1)程序计数器PC PC的内容是指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H,具有自动加1功能,不可寻址(即不能通过指令访问)。(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H由于MCS-51的堆栈

6、是“向上生长”的,在初始化的时候,为了避免入栈时SP的变化可能会影响到一区的工作寄存器的地址,往往都习惯把SP放在片内RAM的高端,留出十几个字节的空间就行了,如:MOVSP, #60H; 将片内60H7FH设为堆栈空间(3)数据指针DPTRR0、R1、DPTR:指示访问的数据存储器的单元地址,16位,寻址范围64KB,没有Rn(n0,1)。DPTR =(DPH)(DPL),也可单独使用。没有自动减1功能,但可以通过软件INC DPTR 内容加1。要想实现DPTR自减1,可以这样做:CLR CMOV A, DPLSUBB A, #1MOV DPL, AMOV A, DPHSUBB A, #0M

7、OV DPH, A三、单片机时序单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。指令周期:即从取指到执行完,所需时间。 不同机器指令周期不一样;即使相同机器,不同的指令其指令周期也不一样。如:单周期指令MOV A, R0、MOV A, R0 双周期指令MOVC A, A+DPTR、MOVX A,DPTR、INC DPTR 四周期指令MUL AB、DIV AB机器周期:机器的基本操作周期。 一个指令周期含若干机器周期(单、双、四周期)状态周期:一个机器周期分6个状态周期Si 每个状态周期含两个振荡周期,即相位P1、P2。振荡周期:由振荡时钟产生

8、。 振荡周期Tosc = 1/fosc 一个机器周期 = 12个振荡周期 = 121/fosc 。例如,若fosc = 12MHz,则一个机器周期 = 1s。时钟的产生:通过XTAL1(19)、XTAL(18)。这两个管脚外部加石英晶体和电容组成振荡器四、系统复位 通过给RST管脚加高电平理论上大于两个机器周期,实际大于10ms,系统复后:SP=07H;P0、P1、P2、P3为FFH其它所有的寄存器均为00HPC=0000HPSW=00H(工作寄存器组R0R7工作在0组)五、并行I/O端口四个8位I/O口:P0、P1、P2、P3 1、P0口:地址80H,系统复位后P0=0FFHP0口可作通用I

9、 / O口使用,又可作地址/数据总线口;(2)P0既可按字节寻址,又可按位寻址;(3)P0作为输入口使用时:是准双向口;(4)作通用I / O 口输出时:是开漏输出(外部管脚必须接上拉电阻);(5)作地址/数据总线口时,P0是一真正双向口,分时使用,提供地址线 A0A7由ALE控制信号锁存,数据线D0D7P0口2、P1口:地址90H,系统复位后P1=0FFH(1)无地址/数据口功能(2)可按字节寻址,也可按位寻址(3)作I / O输入口时:是一准双向口,不是开漏输出(无需外接上拉电阻)。P1口“读管脚在输入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态,可作高阻抗输入” MOV P1

10、, #0FFH MOV A, P1 读端口数据方式是一种对端口锁存器中数据进行读入的操作方式,CPU读入的这个数据并非端口引脚的数据。(对端口进行读-修改-写类指令 例如 CPL P1.0是读端口锁存器而不是管脚)3、P2口:地址A0H,系统复位后P2=0FFH(1)当P2口作为通用I / O时,是一准双向口。(2)从P2口输入数据时,先向锁存器写“1”。(3)可位寻址,也可按字节寻址(4)可输出地址高8位A8A15。4、P3口地址B0H系统复位后P3=FFH(1)作通用I / O时,是一准双向口,不是开漏输出(无需外接上拉电阻)。(2)P3口具有第二功能 5、第二功能(1)P0口:地址低8位

11、与数据线分时使用端口(2)P1口:按位可编址的输入输出端口(3)P2口:地址高8位输出口(4)P3口:双功能口。若不用第二功能,也可作通用I / O 口。(5)按三总线划分地址线:P0低8位地址,P2高8地址;数据线:P0输入输出8位数据;控制线:P3口的8位(RXD、TXD、INT0*、INT1*、T0、T1、WR*、RD*加上PSEN*、ALE、EA*组成控制总线。)2 MCS-51指令系统一、寻址方式与指令功能指令按寻址方式分有7种:直接寻址(direct)立即寻址(#20H)寄存器寻址(Rn)寄存器间接寻址(Ri)相对寻址(rel)寄存器变址寻址(A+PC)位寻址(ACC.1)指令按功

12、能上分有5类:传送类指令算术运算类指令逻辑运算及移位类指令控制转移类指令位操作类指令指令三大属性:功能属性、空间属性(指令占用的字节数)、时间属性(指令执行的机器周期数)二、传送类指令 1、数据传送类指令有四种寻址方式,不影响标志位(对A的数据传送只影响状态标志位P)访问片内RAM和SFR指令格式:MOV 唯一的一条16位传送指令 MOV DPTR, #DATA16访问片外 RAM(4条)MOVX A, RiMOVX A, DPTR(这两条指令是读片外RAM的数据伴随着控制信号RD*有效)【注】这两条指令的高位地址给出形式不一样,MOVX A, DPTR中,DPTR给出了完整的16位地址,其中

13、DPH给出了访问片外存储器的高位地址、DPL给出了地位地址;而MOVX A, Ri指令中,Ri的内容只给出了低位地址,高位地址则需要在MOVX指令之前通过给P2明确赋值等方法来给出。如:MOVDPTR, #2000HMOVXA, DPTR和如下指令一样,都是将片外2000H单元的内容取出来给累加器A:MOVP2, #20HMOVR0, #00HMOVXA, R0MOVX Ri,AMOVX DPTR,A(这两条指令是写片外RAM的数据伴随着控制信号WR*有效)访问程序存储器ROM(2条指令)MOVC A,A+PCMOVC A,A+DPTR(这两条指令是读程序ROM的数据伴随着控制信号PSEN*有

14、效)【例】1000H:MOVCA, A+PC;如果A=30H,这是将程序存储器(1031H)的内容送给A2、堆栈操作指令PUSH directPOP direct不影响任何标志位。Direct 可以是内存RAM 128个单元任意一个单元 也可以特殊功能寄存器注意PUSH ACC ( ACC是直接地址,不能写A)PUSH direct 指令执行中,机器自动进行两步操作:(1)(SP) (SP)+ 1(2)(SP) (direct)【例】设(SP)= 09H,(DPTR)= 0123H执行 PUSH DPL PUSH DPH 后,各单元中的内容。(0AH)=23H (0BH)=01H (SP)=0

15、BHPOP direct 指令执行中,机器也自动进行两步操作:(1)(direct) (SP)(2)(SP) (SP) 1【例】设(SP)= 40H,(40H)= 12H,(3FH)= 34H 执行 POP DPH POP DPL 后,各单元中的内容。(SP) = 3EH,(DPTR)= 1234H,结论:1)PUSH 与 POP 操作过程刚好相反; 2)进、出栈规则: 先进后出,后进先出。应注意指令书写先后顺序; 3)可用于“保护现场,恢复现场”【例】如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后,(DPH)= ,

16、(DPL)= ,(SP)= 。POPDPHPOP DPLPOP SP答:(DPH)=3CH,(DPL)=5FH,(SP)=50H这里解释一下SP为什么是50H。在出栈操作的时候伴随着两个过程:修改SP指针,之后再执行出栈操作。(1)执行POPDPH;此时SP-1SP,SP变为31H同时把栈顶(32H)的内容3CH弹出来给DPH,因此(DPH)=3CH;(2)执行POPDPL;此时SP-1SP,SP变为30H同时把栈顶(31H)的内容5FH弹出来给DPL,因此(DPL)=3CH;(3)执行POPSP;此时SP-1SP,SP本应变为2FH,但此时栈顶(30H)的内容50H弹出来更新了SP,因此SP

17、被赋予了新值50H。用KeilC51仿真的结果SP也是50H。3、字节交换指令XCH A,RnXCH A,direct 整字节交换XCH A,RiXCHD A,RiSWAP A 半字节交换不影响任何标志位。三、算术运算类指令包括:加、 减、乘、除;加一、减一。1、加法指令ADD A,Rn ;(A) (A)+ (Rn)以下类同。ADD A,directADD A,RiADD A,#data无符号数相加时:若C = 1,说明有溢出(其值 255)。带符号数相加时:若OV = D7cD6c = 1,说明有溢出。影响 C OV AC这三个标志位 奇偶标志P由累加器A的值决定【注】MCS-51的算术运算

18、是适用于无符号和有符号数(补码)的。CPU是不知道参与运算的操作数是什么类型,而程序员关心的主要是看结果对标志位的影响。【例】(A)=53H,(R0)=FCH,试判定ADD A, R0 语句运算结果是什么,对Cy、Ac、OV、P等标志位的影响。算式为:0101 0011+) 1111 11001 0100 1111结果是(A)=4FH,Cy=1,Ac=0,OV=0,P=1。如果参与运算的是无符号数,程序员是不关心OV如何变化的。这个结果相当于十进制的83+252=335(14FH),因此Cy=1,而(A)=4FH。如果参与运算的是有符号数,程序员是不关心Cy如何变化的。这个结果相当于83-4=

19、79(4FH),可见累加器A的内容也是4FH,而且没有溢出,因此OV=0。2、带进位加法指令特点是进位标志位C参加运算。ADDC A,Rn ;(A)+(Rn)+CA ,n =07,下同ADDC A,directADDC A,RiADDC A,#data影响 C OV AC这三个标志位 奇偶标志P由累加器A的值决定3、增1指令INC A ;(A) (A)+1 ,以下类同。INC RnINC directINC RiINC DPTR不影响 C OV AC这三个标志位 奇偶标志P由累加器A的值决定4、十进制调整指令DA A对压缩的BCD码的加法结果进行十进制调整,在ADD或ADDC之后执行,不单独使

20、用5、带借位的减法指令SUBB A,Rn ; (A)-(Rn)-CyA,n =07SUBB A,direct SUBB A,Ri SUBB A,#data 影响 C OV AC这三个标志位 奇偶标志P由累加器A的值决定【例】“半减器”的实现CLRC;将前次CY清零SUBB A,Rn6、减1指令DEC A;(A)-1A,下同DEC Rn ;(Rn)-1Rn,n=07DEC direct ;(direct)-1directDEC Ri 不影响 C OV AC这三个标志位 奇偶标志P由累加器A的值决定7、乘法指令MUL AB ;ABBA 积的低字节在累加器A中,高字节在B中如果积大于255,则OV置

21、1,否则OV清0C标志总是清08、除法指令DIV AB ;A/BA(商),余数B商(为整数)存放在A中,余数存放在B中C和OV清“0”。如果B的内容为0(即除数为0),则存放结果的A、B中的内容不定,并溢出标志位OV置1四、逻辑操作类指令共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。1、单字节逻辑操作指令清0、求反指令CLR A ;(A) 0CPL A A中8位按位求反。这里只能用A做操作数,Rn不行,不影响标志位循环左移、右移指令:RL ARLC ARR ARRC A2、双字节逻辑操作指令“与操作”ANL A,Rn ; (A) (A)(Rn),以下类同。ANL A,directANL

22、 A,RiANL A,#dataANL direct,AANL direct,#data【例】(P1)= 35H,使其高4位输出0,低4位不变。 ANL P1,#0FH 此做法称为“屏蔽”位。“或操作”ORL A,Rn ; (A) (A)(Rn),以下类同。ORL A,directORL A,RiORL A,#dataORL direct,AORL direct,#data【例】将A中的低3位送入P1中,并且保持P1中高5位不变。ANL A,#07HANL P1,#0F8HORL P1,A ;(P1)= P17P16P15P14P13A2A1A0这称为“数位组合”。“异或操作”:XRL A,R

23、n ; (A) (A)(Rn),以下类同。XRL A,directXRL A,RiXRL A,#dataXRL direct,AXRL direct,#data【例】设(P1)= 0B4H = 10110100B,执行: XRL P1,#00110001B 结果按# 0 0 1 1 0 0 0 1 取反,即:(P1)= 1 0 0 0 0 1 0 1 B = 85H 这称为“指定位取反”。在上述ANL、ORL、XRL操作中,用于端口操作时,无论P0 P3是第一,还是第二操作数,都遵循“读修改写”端口锁存器的操作。五、控制转移类指令作用:改变程序计数器PC的值,从而改变程序执行方向。分为四大类:

24、无条件转移指令;条件转移指令;调用指令;返回指令。1、无条件转移指令LJMP addr16AJMP addr11SJMP relJMP A + DPTRLJMP addr16 ;长跳转转移目的地址 addr16 (PC);0000H FFFFH,64KBAJMP addr11 ;绝对转移转移目的地址的形成: 先(PC) (PC)+ 2; 后 PC15 11不变,PC10 0 addr10 064KB = 216 =25211 = 322KB 转移目的地址与(PC)+ 2在同一个2KB范围内。SJMP rel ;短转移,相对寻址。转移目的地址 = (PC)+ 2 + rel,所以 rel = 转

25、移目的地址(PC)2但实际使用中常写成 SJMP 具体标号,汇编时会自动转换出rel。JMP A + DPTR ;间接转移,散转移指令。转移目的地址 = (A) + (DPTR):一般用于case型选择程序散转2、调用指令LCALL addr16 ;长调用ACALL addr11 ;绝对调用LCALL addr16 ;转移范围64KB,不影响标志位。执行中自动完成如下过程: (PC) (PC) + 3 (SP) (SP)+ 1 (SP) (PC7 0), 保护断点地址低字节; (SP) (SP)+ 2;【注】这里+2是相对于执行LCALL指令前SP原始值的变化量 (SP) (PC15 8),保

26、存断点地址高字节; (PC) addr16 ,目的地址送PC,转子程序。【例】设(SP)= 07H,子程序首地址为3456H,执行: 2100H LCALL 3456H 2103H MOV A,20H执行结果:(SP)= 09H,(09H)= 21H,(08H)= 03H,(PC)= 3456HACALL addr11 ; 转移范围与(PC)+ 2在同一个2KB内。不影响任何标志位,执行中机器自动完成下列过程: (PC) (PC)+ 2 (SP) (SP)+ 1 (SP) (PC7 0) (SP) (SP)+ 2 (SP) (PC15 8) (PC10 0) addr10 03、返回指令从子程

27、序返回主程序。RET ;调用子程序返回;(子程序不能缺少的指令)RETI ;中断子程序返回。(中断程序不能缺少的指令,相当于在RET指令基础上清除了中断响应时被置1的内部中断优先级寄存器IP的中断优先级状态,以保证后续中断源的及时响应)(PC15 8) (SP) (SP) (SP) 1 (PC7 0) (SP) (SP) (SP) 2【例】设(SP)= 0BH,(0AH)= 23H,(0BH)= 01H 执行: RET 结果;(SP)= 09H,(PC)= 0123H(返回主程序)4、条件转移指令实现按照一定条件决定转移的方向,分三类:判零转移JZ rel ;若(A)= 0 ,则转移,否则顺序

28、执行。JNZ rel ; 若(A) 0,则转移,否则顺序执行。转移目的地址 = (PC)+ 2 + rel不影响任何标志位。【例】将外RAM的一个数据块(首地址为DATA1)传送到内部数据RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。解: MOV R0,#DATA2MOV DPTR,#DATA1 LOOP1: MOVX A,DPTR JZ LOOP2 MOV R0,A INC R0 INC DPTR SJMP LOOP1LOOP2: SJMP LOOP2比较转移指令功能:比较二个字节中的值,若不等,则转移。CJNE A,#data,relCJNE A,direct,rel

29、CJNE Ri,#data,relCJNE Rn,#data,rel该类指令具有比较和判断双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。转移目的地址 = (PC)+ 3 + rel若第一操作数内容小于第二操作数内容,则(C)= 1,否则(C)= 0。该类指令可产生三分支程序: 即,相等分支;大于分支;小于分支。【例】设P1口的P1.0 P1.3为准备就绪信号输入端,当该四位为全1时,说明各项工作已准备好,单片机可顺序执行,否则,循环等待。解: MOV A,P1ANL A,#0FHCJNE A,#0FH,WAIT ;P1.0 P1.3不为全1时,返回WAIT

30、MOV A,R2循环转移指令DJNZ Rn,rel ;(二字节指令)DINZ direct,rel ;(三字节指令)本指令也为双功能指令,即减1操作和判断转移操作。第一操作数内容减1后,若差值不为零,则转移;否则顺序执行。转移目的地址 = (PC)+ 2或3 + rel【例】将MCS-51内部RAM的40H 4FH单元置初值 #A0H #AFH。解: MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP: MOV R0,A INC R0 INC A DJNZ R2,LOOP六、位操作指令包括:位传送指令、条件转移指令、位运算指令。位操作由单片机内布尔处理器来完成。位

31、地址的四种表示:1)使用直接位地址表示:如20H、30H、33H等;(位地址00H0FFH,相当于字节地址20H2FH)2)使用位寄存器名来表示;如C、OV、F0等;3)用字节寄存器名后加位数来表示:如PSW.4、P0.5、ACC.3等;4)字节地址加位数来表示:如20H.0、21H.4、27H.7等。1、位传送指令MOV C,bitMOV bit,C功能:(C) (bit);【注】位传送指令不像字节传送指令那样可以采用直接寻址方式来做,必须要用进位标志Cy为桥梁来传送,像这样写是错的MOV ACC.7 20H.1 ()应改成:MOV C, 20H.1MOV ACC.7, C2、位状态控制指令

32、CLR bit ;(bit) 0SETB bit ;(bit) 1CPL bit ;(bit) (/ bit)【例】编程通过P1.0线连续输出256个宽度为5个机器周期长的方波。解: MOV R0,#00H CLR P1.0 LOOP:CPL P1.0 NOP NOP DJNZ R0,LOOP3、布尔条件转移指令有5条,分别对C和直接位地址进行测试,并根据其状态执行转移。判布尔累加器转移JC rel ;(C)= 1,转移,否则顺序执行。JNC rel ;(C)= 0,转移,否则顺序执行。不影响标志。转移地址 :(PC) (PC)+ rel 【例】比较内部RAM的30H和40H单元中的二个无符号

33、数的大小,将大数存入20H单元,小数存入21H单元,若二数相等,则使内RAM的第127位置1。解: MOV A,30H CJNE A,40H,LOOP1 SETB 7FH SJMP $ LOOP1:JC LOOP2 MOV 20H,A MOV 21H,40H SJMP $ LOOP2: MOV 20H,40H MOV 21H,A SJMP $判位变量转移JB bit,rel ;(bit)= 1,则转移,否则顺序执行。JBC bit,rel ;(bit)= 1,则转移,否则顺序执行,且无论 (bit)是否等于1,均使该位清零。JNB bit,rel ;(bit)= 0,则转移,否则顺序执行。不影

34、响标志。【例】试判断A中的正负,若为正数,存入20H单元;若为负数则存入21H单元。解: JB ACC.7,LOOP MOV 20H,A SJMP $ LOOP:MOV 21H,A SJMP $七、伪指令伪指令是程序员发给汇编程序的命令,不会生成机器码,具有控制汇编程序的输入/输出、定义数据和符号、条件汇编、分配存储空间等功能。1、ORG 汇编起始地址命令可在源程序的开始用ORG伪指令规定程序的起始地址。【例】ORG2000HSTART:MOVA,#00H;规定标号START代表地址为2000H开始。在一个源程序中可多次用ORG伪指令,但地址必须由小到大排列,不能交叉重叠。2、END 汇编终止

35、命令整个源程序中只能有一条END命令,且位于程序的最后。3、EQU 标号赋值命令用于给标号赋值。赋值后,标号值在整个程序有效。4、DB(Define Byte)定义数据字节命令【例】 ORG2000HLabelAEQU30HLabelBEQU40HDBLabelA,LabelB,24,”C”,”B”汇编后:5、DW 定义数据字命令(高位在前,低位在后)【例】ORG2000HTENEQU10DW1246H,7BH,TEN汇编后:6、BIT 位定义命令【例】QABIT P1.6;把P1.6的位地址赋给变量QA3 MCS-51中断系统MCS-51拥有五个中断源(对于89S52而言,是6个中断源),两

36、个优先级。中断请求源6个中断源: 入口地址 外部中断0(INT0*) 0003H T0溢出中断 000BH 外部中断1(INT1*) 0013H T1溢出中断 001BH 串口中断 0023H T2溢出中断 002BH有了中断请求,如何通知CPU?通过中断请求标志位来通知CPU。外部中断源、定时/计数器的中断请求标志位分布在TCON中;串口中断标志位分布在 SCON中。TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SCON TI RI 中断请求标志位 IE0(INT0) IE1(INT1) TF0(T0) TF1(T1) TI/RI(串口)TF1 T1的溢出中断标志

37、。 硬件置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(CLR TI)RI 串行口接收中断标志位。 硬件置1,软件清0。中断控制(

38、两级管理)1、中断屏蔽在中断源与CPU之间有一级控制,其中第一级为一个总开关,第二级为五个分开关,由IE控制。IE EA ES ET1 EX1 ET0 EX0 EA 总控制位ES 串口控制位 若为“1”,允许(开关接通)ET1 T1中断控制位 若为“0”,不允许(开关断开)EX1 INT1*控制位 例如,SETB EAET0 T0中断控制位 CLR IE.7EX0 INT0*控制位2、中断优先级CPU按中断申请时间先后顺序响应中断,同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求CPU响应高级别中断。为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。同时同级的中断源申

39、请中断CPU按优先顺序响应中断。IP PS PT1 PX1 PT0 PX0 以上各位与IE的低五位相对应,为“1”时为高级。初始化编程时,由软件确定。如: SETB PT0 或SETB IP.1 CLR PX0等。同一级中的5个中断源的优先顺序是:(注意是同级) INT0*中断 高 T0中断 厂家出厂时已固化好顺序 INT1*中断 事先约定 T1中断 串口中断 低中断嵌套:同级或低级中断不能打断正在响应的中断的服务程序,高级中断能够打断低级中断服务程序而形成中断嵌套。【注】这里要澄清一个概念:中断嵌套一定发生在高优先级(IP寄存器对应位=1)打断低优先级中断的服务程序中。比如串口中断的PS=1

40、,INT0*的中断PX0=0,这样在INT0*的中断服务子程序运行中,突然来了串口中断,则程序会毫不犹豫地转向串口中断服务子程序,在串口中断执行完毕时会返回到INT0*的中断服务子程序中继续执行到RETI。而如果串口中断和INT0*设在同一优先级(比如PS和PX0都设为1)情况下,俩中断申请同时有效时,串口中断就只能等候着INT0*中断服务子程序执行完毕了才能得到响应(假如串口中断申请还hold住的话)。4 MCS-51定时/计数器MCS-51拥有两个定时器/计数器T0 、T1 四种工作方式(89S52具有3个定时器T0、T1、T2,但T2定时器的使用方法仅做了解)一、定时 / 计数器的结构T

41、0、T1均为16位的加法计数器。计数值高八位计数值低八位计数值高八位计数值低八位TH0 TH1 TL0 TL1 工作方式控制字 TMOD 工作方式 TCON 1、工作方式控制寄存器TMOD T1 T0TMOD GATE C/T* M1 M0 GATE C/T* M1 M0GATE 门控位。 GATE = 0 软件启动,仅由软件置TR0(TR1)为1启动定时器/计数器;置0停止定时/计数 GATE = 1 硬件启动,软件置TR0(TR1)为1后 .INT0 管脚或 /INT1管脚高电平启动定时器/计数器。C/T* 外部计数器 / 定时器方式选择位 C/T* = 0 定时方式; C/T* = 1

42、计数方式。M1 M0 工作模式选择位。 M1 M0 模式 说明(很少用) 0 0 0 13位定时/计数器 8位TH(7 0)+ 低5位TL(4 0) 0 1 1 16位定时/计数器 TH(7 0)+ TL(7 0) 1 0 2 8位计数初值自动重装 TL(7 0) TH(7 0) 1 1 3 T0工作在两个8位定时/计数运行(T1只能工作方式2)2、定时器/计数器控制寄存器TCONTCON TR1 TR0 TR0 定时 / 计数器0运行控制位。 软件置位,软件复位。 与GATE有关,分两种情况: GATE = 0 时,若TR0 = 1,开启T0计数工作; 若TR0 = 0,停止T0计数。 GA

43、TE = 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 即对机器周期进行计数。 左图定时时间为nTcy。 n 计数:脉冲不等间隔。 外部管脚输入(T0P3.4、T1P3.5 )每个下降沿计数一次 确认一次负跳变需两个机器周期,(要求计数脉冲的高、低电平要大于一

44、个机器周期)所以,计数频率最高为fosc / 24。定时器初值计算计数脉冲的个数 N=t(定时时间)/Tcy(机器周期)计数初值X=M(定时计数器的模)-N 方式0 X=213-N =8192-N 方式1 X=216-N=65536-N 方式2 X=28-N=256-N推荐工作方式1 和方式23、定时/计数器编程操作中断方式定时器程序初始化:MOV TMOD, #DATA ;设置定时器工作方式MOV TH0(TH1),# DATA;给定时器计数器装入初值MOV TL0(TL1),# DATASETB EA ;开中断SETB ET0(ET1) ;开中断SETB TR0(TR1) ;启动定时器计数

45、器【例】设计一个P1.0能产生t=1ms的周期信号发生器。解:选T0,C/T*=0,GATE= 0定时时间0.5ms N = t / Tcy= t /(12(1/fosc)= 500 所以, X = M 500 ,模式0、1均可,取模式1,M=216X = 65536-500=65036 = FE0CH TH0 0FEH TL0 0CH程序: ORG 0000H LJMP MAIN ORG 000BH LJMP INSE1 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0FEH MOV TMOD,#01H SETB TR0 SETB ET0

46、 SETB EA SJMP INSE1: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI5 单片机串行接口 8051单片机有一个异步全双工串行通讯口 通过RXD(P3.0)接收 ,通过TXD(P3.1)发送,(串行通信有单工、半双工、全双工) ,8051单片机串行口有4种工作方式。一、串行通信的概念1、异步通信一帧数据的格式空闲位 起始位 5 8位数据 奇偶校验位 停止位 空闲位 【例】传送8位数据45H(0100,0101B),奇校验,1个停止位,则信号线上的波形为2、串行通信方向 A B 发 单工 收 A B 发 半双工 发 收 收 A 全双工 B 发 收

47、 收 发 3、波特率 即串行通信速率b/s、bps 【例】设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为240个字符。求波特率。解: (181)240 = 2400 b/s = 2400波特。4、串行通信接口发送: CPU 通过指令MOV SBUF, A 来启动发送 发送一帧数据完毕后TI置1,通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0 (CLR TI)D7 D6 D5 D4 D3 D2 D1 D0 发送数据寄存器 SBUF(99H)1 D7 D6 D5 D4 D3 D2 D1 D0 0 发送数据发送时钟接收: 必须置位寄存器 SCON.REN

48、位为1才能启动串口接收数据,当接收一帧数据后,RI置1 ,CPU通过查询RI=1或中断方式,通过指令 MOV A, SBUF 来取走接收的数据,并软件复位RI=0(CLR RI)接收时钟0 D0 D1 D2 D3 D4 D5 D6 D7 1 接收数据 D0 D1 D2 D3 D4 D5 D6 D7 接收数据寄存器 SBUF(99H)CPU二、MCS-51机串行接口单片机内有:通用异步接收/发送器(UART)全双工,4种工作方式,波特率可编程设置,可中断。1、串口的组成 从编程角度讲来看主要由以下寄存器组成。 PCON SMOD SCON SM0 SM1 SM2 REN TB8 RB8 TI R

49、I SBUF D7 D6 D5 D4 D3 D2 D1 D0 SBUF发 SBUF收SM0、SM1:工作方式选择位SM2:多机通信控制位,常与RB8配合,决定是否激活RIREN:允许接收TB8:发送的第九位数RB8:接收的第九位数TI :中断标志RI SMOD:波特系数选择位,0 20 = 1 1 21 = 22、串行口的四种工作方式和特点(一定要掌握)(1)SM0、SM1=00 方式0:是8位同步移位寄存器方式,波特率固定为fosc / 12 RXD 接收/发送数据 TXD 产生同步移位脉冲接收/发送完,置位RI / TI ,(要求SM2 = 0)方式0 D7 D6 D5 D4 D3 D2

50、D1 D0 发送 D0 D1 D2 D3 D4 D5 D6 D7 接收无起始位,无停止位(2)SM0、SM1=01方式1:8位UART,波特率为(2SMODT1的溢出率)/ 32停止位 D7 D6 D5 D4 D3 D2 D1 D0 起始位 发送位 TXD起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位 接收位 RXD1帧信息,10位。 波特率可变: 2SMOD / 32 (T1的溢出率)发送完置位TI。接收完数据置位RI。置位RI是有条件的。即:REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位为1。此时,数据装载SBUF,停止位进入RB8,RI置

51、1。(3)方式2( SM0、SM1=10)、方式3 (SM0、SM1=11) :9位UART,多机通信。多机通信只能工作在方式2、方式3停止位 TB8 D7 D6 D5 D4 D3 D2 D1 D0 起始位 发送数据起始位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 接收数据 送SCON寄存器RB8位方式2波特率:(固定)2SMOD / 64 fosc方式3波特率: 2SMOD / 32 (T1溢出率)数据发送串口方式2、3发送第九位数据必须通过软件置事先写入寄存器SCON的TB8位,把要发送的数据发送到SBUF(MOV SUBF,A) 启动数据发送,发送完数据置位TI。C

52、PU通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0 (CLR TI)数据接收接收: 必须置位寄存器 SCON REN位为1才能启动串口接收数据,当接收一帧数据后此时,数据装载SBUF,接收到的第9位数据(TB8)送SCON寄存器RB8位 ,RI置1。,CPU通过查询RI=1或中断方式,通过指令 MOV A, SBUF 来取走接收的数据,并软件复位RI=0(CLR RI)例:采用方式2、偶校验的方式实现点对点的串行通信中断式发送:(设2组寄存器区的R0为发送数据缓冲区指针)中断式接收:(设1组寄存器区的R0为接收数据缓冲区指针)【注】此时SCON应该初始化为多少?

53、3、波特率的设置方式0、方式2固定。方式1、方式3可变,波特率 = 2SMOD / 32 (T1的溢出率) T1溢出率 = 单位时间内溢出次数 = 1 /(T1的定时时间)而T1的定时时间t就是T1溢出一次所用的时间。此情况下,一般设T1工作在模式2(8位自动重装初值),T1溢出率 = 1/t = fosc / 12(28N),故:波特率 = 2SMOD / 32 fosc / 12(256N)。若已知波特率,则可求出T1的计数初值: y = 2562SMODfosc / (波特率3212)【例】若fosc = 6MHz,波特率为2400波特,设SMOD = 1,则定时/计数器T1的计数初值为

54、多少?并进行初始化编程。解:y = 2562SMODfosc /(24003212)= 242.98243 = F3H 同理,fosc = 11.0592MHz,波特率为2400,设SMOD = 0,则 y = F4H 初始化编程:MOV TMOD,#20HMOV PCON,#80HMOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#50H6 单片机最小系统及外扩展单片机内资源少,容量小,在进行较复杂过程的控制时,它自身的功能远远不能满足需要。为此,应扩展其功能。一、MCS-51单片机最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机

55、电路可以工作运行指令的系统.1、8051/8751/89S51硬件最小系统对51系列单片机来说,拥有片内ROM,最小系统一般应该包括:单片机、晶振电路、复位电路2、8031硬件最小系统8031单片机片内无ROM(或89S51片内ROM不够用),若要正常工作,必需外配ROM。外接ROM后,P3口、P2口、P0口均被占用只剩下P1口作I / O口用,其它功能不变。二、 存储器的扩展1、三总线的连接 地址总线、 数据总线、控制总线地址总线: (A15A8A7A0) 数据总线:(D7D0)控制总线:PSEN*是程序存储器读选通信号 RD* WR* 是片外数据存储器读、写选通信号 EA* 是片内和片外程

56、序存储器的选择信号。对于89S52,EA*=1, CPU 开始从片内程序存储器取指令,PC大于1FFF后转向片外程序存储器取指令。EA*=0, CPU 开始从片外程序存储器取指令。 ALE通过74LS373锁定P0口提供的地址低8位(A7A0)的锁存信号1)数据线的连接(D7D0) P0口的8位线承担此任,此时不用外接上拉电阻。2)地址线的连接P0口承担地址低8位线,A0 A7;P2口承担地址高8位线。A8 A15。注意:P0口线地址 / 数据分时复用,需用控制信号ALE通过地址锁存器74LS373锁存地址低8位(A7A0)。3)控制线的连接对存储器来讲控制线无非是:芯片的选通控制、读写控制。

57、单片机与外部器件数据交换要遵循两个重要原则:地址唯一性,一个单元一个地址。同一时刻,CPU只能访问一个地址,即只能与一个单元交换数据。不交换时,外部器件处于锁闭状态,对总线呈浮空状态。选通:CPU与器件交换数据或信息,需先发出高位地址产生片选信号CE*或CS*,以便选中芯片。读 / 写:CPU向外部设备发出的读/写控制命令。 ROM:OE* PSEN* RAM:WE* WR* OE* RD*2、存储器地址编码RAM 6264 8K8b = 8KB 23210 = 213即6264有13根地址线。地址空间:A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A 1 A0最低地

58、址: 0000H最高地址: 3FFFH MCS-51单片机寻址范围:64KB 26210 = 216即16位地址线地址空间: A15 A14 A13 A12 A9 A8 A7A0 单片机 A12 A9A8A7A0 6264 23 = 8 8KB上式中:“”表示0或1。即单片机地址空间中包含有8个8KB。某片6264占据的是哪8KB不能确定地址浮动。只有限定A15A14A13的取值才能确定6264在系统中的地址范围。如,P2.7 = 0 ,选中6264的/CE1线。设P2.6 P2.5假定全为1则: 6264地址范围是6000H7FFFH。同理, P2.7 P2.6 P2.5假定全为0则: 62

59、64地址范围是 0000H 1FFFH;3、存储器扩展地址译码电路设计存储器芯片在系统中地址分布由两个因素决定:芯片本身的地址线(与容量有关)芯片选通信号的获得方式。扩展存储器时,总是让单片机低位地址与存储器芯片地址线相接;而让单片机剩余的高位地址线(在P2口)常作为片选信号线(CE*)。片选信号通过高位地址线译码取得。译码方式有:部分译码:所谓部分译码就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余的高位地址线仅用一部分参加译码,这样的地址有重叠浪费一定的空间适用于扩张空间有限的存储器全译码:所谓全译码就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余的高位地址线全部参加译

60、码。这种译码方法存储器芯片的地址空间是唯一确定的,但译码电路相对复杂。线选法:采用高位地址线直接连接到存储器的片选线。电路不需另外增加硬件电路,体积小,成本低。但可寻址的器件数目较少,地址空间不连续。只适于外扩芯片不多,规模不大的单片机系统。这种方法对RAM、ROM、扩展I / O芯片、外设同样适用。译码用到的3/8译码器和2/4译码器(注意使用好译码器的使能端): 74LS139:双2/4译码器 74LS138:3/8译码器 单片机RAM WE* WR* 可用来区分ROM和RAMOE* RD* 2种器件ROM OE* PSEN*4、EEPROM扩展(了解)7 键盘和LED显示一、按键操作存在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论