收藏 分享(赏)

《单片机原理及接口技术》(第二版)余锡存著 课后习题答案.doc

上传人:HR专家 文档编号:5578948 上传时间:2019-03-08 格式:DOC 页数:44 大小:717KB
下载 相关 举报
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案.doc_第1页
第1页 / 共44页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案.doc_第2页
第2页 / 共44页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案.doc_第3页
第3页 / 共44页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案.doc_第4页
第4页 / 共44页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、第二章1.89C51、87C51、80C51 和 80C31 单片机的主要区别在那里?答:相同之处是:制造工艺都为 CHMOS,都有 128 字节片内 RAM、两个定时/计数器、4 个 8 位 I/O 并行口,一个串行口和 5 个中断源。主要区别: 89C51 片内 4K 字节 FLASHROM; 87C51 片内 4K 字节 EPROM; 80C51 片内 4K 字节 掩膜 ROM; 80C31 片内无程序存 储器。2.MCS-51 单片机引脚有多少 I/O 线?它们和单片机对外的地址总线和数据总线有何关系?答:4 个 8 位 I/O 并行口,一个串行口;其中 P0 口为外接程存和数存的地址

2、低 8 位和数据 总线的时分复用接口;其中 P2 口为外接程存和数存的地址高 8 位总线接口;其中 P1 口为真正的用户口线;其中 P3 口有第 2 功能;以上 4 个口线在没有专用功能时,也可以做通用 I/O 口线用。3.简述 8031 片内 RAM 区地址空 间的分配特点。答:MCS-51 单片机片内 RAM 为 256 字节, 地址范围为 00HFFH, 分为两大部分: 低 128 字节(00H7FH )为真正的 RAM 区; 高 128 字节(80HFFH)为特殊功能寄存器区 SFR。 在低 128 字节 RAM 中, 00H1FH 共 32 单元是 4 个通用工作寄存器区。每一个区有

3、 8 个通用寄存器 R0R7。4. MCS-51 单片机由哪几个部分组成。答: 一个 8 位 CPU; 4KB ROM or EPROM(8031 无 ROM); 128 字节 RAM 数据存 储器; 21 个特殊功能寄存器 SFR; 4 个 8 位并行 I/O 口,其中 P0、P2 为地址/数据 线,可寻址 64KB 程序存储器和 64KB 数据存 储器; 一个可编 程全双工串行口; 具有 5 个中断源,两个优先级,嵌套中断 结构; 两个 16 位定 时器/计数器; 一个片内振 荡器及时钟电 路。5. MCS-51 单片机的 信号各自的功能是什么?,EALPSN答:都是控制总线 :访问内部程

4、序存储器的控制信号/编程电压输入端。 时,PV 1EACPU 从片内 读 取指令, CPU 从片外读取指令。0EA :地址锁存允 许/编程信号线。ROGAL/ :外部程序存 储 器读选通信号。PSN :复位输入信号 /掉电保护后备电源引脚。VDE/6.MCS-51 单片机如何实现工作寄存器组的选择?RS1(PSW.4)、RS0(PSW.3) 为工作寄存器组的选择位; 取 值为 00 时选择 第 0 组工作寄存器,片内 RAM 地址是 00H07H,名称为 R0R7; 取值为 01 时选择第 1 组工作寄存器,片内 RAM 地址是 08H0FH,名称为 R0R7; 取值为 10 时选择第 2 组

5、工作寄存器,片内 RAM 地址是 10H17H,名称为 R0R7; 取值为 11 时选择第 3 组工作寄存器,片内 RAM 地址是 18H1FH,名称为 R0R7。7. 什么是时钟周期、机器周期、指令周期?当单片机的时钟频率为 12MHz 时,一个机器周期是多少?ALE 引脚的输出频率是多少?(1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期。(2) 状 态周期 : 每个状态 周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。 (3) 机器周期: 一个机器周期包含 6 个状态周期 S1S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU 可以完成一个

6、独立的操作。(4) 指令周期: 它是指 CPU 完成一条操作所需的全部 时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。 当单片机的时钟频率为 12MHz 时,一个机器周期是多少 1s(微秒);ALE引脚的输出频率是多少 2s(微秒)。第三章1.MCS-51 指令系统按功能分为几类?具有几种寻址方式?他们的寻址范围如何? 答: 按功能分为 5 类,分别 是: 数据传送类、算术操作类、逻辑操作类、控制转移类和位操作类; 具有 7 种 寻址方式; 立即寻址,寻址范围是程序存储器; 直接寻址,寻址范围是内部 RAM 低 128

7、字节和高 128 字节;寄存器寻址,寻址范围是四组工作寄存器 R0R7 ;寄存器间接寻址,寻址范围是内部 RAM 的低 128 和外部 RAM 低 64K 可寻址空间;基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器; 相对寻址,寻址范围是以下一条指令为相对地址的-128+127 字节范围内; 位寻址,寻址范围是可位寻址空间,包括内部 RAM 的可寻址位,特殊功能寄存器中的可寻址位。2.设内部 RAM 中 59H 单元的内容为 50H,写出当执行下列程序段后寄存器A,R0,和内部 RAM 中 50H、51H 单元的内容为和值?答:MOV A,59H ; (A)=(59H)=50HMOV R

8、0,A ; (R0)=50HMOV A,#00 ; (A)=00MOV R0,A ; (R0)=(50H)=00MOV A,#25H ; (A)=25HMOV 51H,A ; (51H)=25HMOV 52H,#70H ; (52H)=70H执行下列程序段后:(A)=25H,(R0)=50H, (50H)=00、(51H)=25H3.PSW 中 Cy 与 OV 有何不同?下列程序段执行后( Cy)=?(OV)= ?。MOV A,#56HADD A,#74H 答:Cy进位、借位标志位;OV溢出标志位。MOV A,#56H ;(A)=56H=0101 0110 BADD A,#74H ;(A)=5

9、6H+74H=0CAH=1100 1010B , 程序执行后:(Cy)=0(OV)=14.MOVC A,A+DPTR 与 MOVX A,DPTR 指令有何不同?答: MOVC A,A+DPTR ;寻找的操作数在程序存储器中,地址是:(A)+(DPTR); MOVX A,DPTR ;寻找的操作数在外部数据存储器中,地址是:(DPTR)。5. AJMP、LJMP、SJMP 指令功能上有何不同?答:相同之处,都是无条件转移指令。 AJMP addr11 ;下调指令为基准的 2KB 范围内的跳转指令。 LJMP addr16 ;转 移的目标地址可以在 64KB 程序存储器的任何地方。 SJMP rel

10、 ;下调指令为基准的-128B+127B 范围内的短跳转指令。6.设堆栈指针 SP 中的内容为 60H,内部 RAM 中 30H 和 31H 单元的内容分别为 24H 和 10H,执行下列程序段后,61H,62H, 30H,31H,DPTR 及 SP 中的内容将有何变化?PUSH 30HPUSH 31HPOP DPLPOP DPHMOV 30H,#00HMOV 31H,#0FFH答:PUSH 30H ;(61H)= (30H) = 24HPUSH 31H ; (62H) = (31H) = 10HPOP DPL ; (DPL) = (62H) = 10HPOP DPH ; (DPH) =(61

11、H)= 24HMOV 30H,#00H ; (30H) = 00HMOV 31H,#0FFH ; (31H) = 0FFH程序执行后:(61H)= 24H, (62H) = 10H, (30H) = 00H, (31H) = 0FFH,(DPTR) = 2410H7.试分析下列程序段,当程序执行后,位地址 00H 和 01H 中的内容将为何值?P1 口的 8 条 I/O 线为何状态?CLR CMOV A,#66HJC LOOP1CPL CSETB 01HLOOP1: ORL C,ACC.0JB ACC.2,LOOP2LOOP2: MOV P1,A答: CLR C ; (Cy)=0MOV A,#

12、66H ; (A) = 66H = 0110 0110 BJC LOOP1 ; 因 此时(Cy)=0 ,所以不跳转CPL C ; (Cy) = 1SETB 01H ; (01H)= 1LOOP1: ORL C,ACC.0 ; (Cy) =(Cy)(ACC.0) = 1JB ACC.2,LOOP2 ; 因(ACC.2) = 1LOOP2: MOV P1,A ; (P1)= 0110 0110 B8.要完成以下的数据传送,应如何用 MCS-51 指令 实现? R1 的内容传送到 R0; 片外 RAM 20H 单元的内容送 R0; 片外 RAM 20H 单元的内容送片内 RAM 20H 单元; 片外

13、 RAM 1000H 单元的内容送片内 RAM 20H 单元; ROM 2000H 单元的内容送 R0; ROM 2000H 单元的内容送片内 RAM 20H 单元; ROM 2000H 单元的内容送片外 RAM 20H 单元。答: R1 的内容传送到 R0;MOV A,R1MOV R0,A 片外 RAM 20H 单元的内容送 R0;MOV R1,#20HMOVX A,R1MOV R0,A 片外 RAM 20H 单元的内容送片内 RAM 20H 单元;MOV R1,#20HMOVX A,R1MOV 20H,A 片外 RAM 1000H 单元的内容送片内 RAM 20H 单元;MOV DPTR,

14、#20HMOVX A,DPTRMOV 20H,A ROM 2000H 单元的内容送 R0;MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV R0,A ROM 2000H 单元的内容送片内 RAM 20H 单元;MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV 20H,A ROM 2000H 单元的内容送片外 RAM 20H 单元。MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV R0,#20HMOVX R0,A9.分析以下程序每条指令执行的结果:MOV A, #25H ; (A) = 25HMOV R1,#33H ; (R

15、1) = 33HMOV 40H,#1AH ; (40H) = 1AHMOV R0,40H ; (R0) = 1AHADD A,R1 ; (A) = 25H + 33H = 58HADDC A,R0 ; (A) = 58H + (1AH) + (Cy) = 58H ADDC A,40H ; (A) = 58H + 1AH + (Cy) = 72H10.设 A=83H,R0=17H,(17H)=34H,执行下列程序后,(A) = ?ANL A,#17H ; (A) = 1000 0011B0001 0111B = 0000 0011BORL 17H,A ; (17H) = 0011 0100B00

16、00 0011B = 0011 0111BXRL A,R0 ; (A) = 0000 0011B0011 0111 = 0011 0100BCPL A ; (A) = 1100 1011B11.两个 4 位 BCD 码数相加,被加数和加数分别存于 30H、31H 和 40H、41H单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数放在50H、51H、52H 中(52H 用于存放最高位的进位), 试编 写加法程序。解: ORG 00HMOV 30H, #12H ; MOV 31H, #34H ; MOV 40H, #56H ; MOV 41H, #78H ; MOV A, 31H

17、; 取被加数十个位ADD A, 41H ; 相加, (A) = (31H) + (41H) DA A ; 十进制调整MOV 51H,A ; 存十位个位运算结果MOV A, 30H ; 取被加数千百位ADDC A, 40H ; 相加,(A) = (30H) + (40H)DA A ; 十进制调整MOV 50H,A ; 存千位百位运算结果CLR A ; 清 AADDC A,#0 ; 将 进位加到 A 中MOV 52H, A ; 存进位SJMP $12.试编写一程序,查找内部 RAM 单元的 20H50H 中是否有 0AAH 这一数据,若有,则将 51H 单元置为 01H,若没有,则使 51H 单元

18、置 0。解: ORG 00HMOV 30H, #0AAH ;MOV R1, #31H ; MOV R0, #20H ; BIJIAO: MOV A, R0CJNE A, #0AAH , LOOP; MOV 51H,#01HSJMP JIESHULOOP: INC R0DJNZ R1,BIJIAOMOV 51H,#00HJIESHU :SJMP $第四章1、若有两个符号数 X,Y 分别存放在内部存储器 50H、51H 单元中,试编写一个程序实现 X*10+Y,结果存入 52H、53H 中。1 ORG 00H0000 7850 2 MOV R0,#50H0002 E6 3 MOV A,R00003

19、 75F00A 4 MOV B,#0AH0006 A4 5 MUL AB0007 08 6 INC R00008 26 7 ADD A,R00009 08 8 INC R0000A A6F0 9 MOV R0,B000C 08 10 INC R0000D F6 11 MOV R0,A12 END2、在以 3000H 为首地址的外部 RAM 中,存放了 14 个以 ASCII 码表示的 09的数,试编写程序将它们转换成 BCD 码,并以 压缩 BCD 形式存放在以 2000H为首地址的外部 RAM 中。1 ORG 00H0000 903000 2 MOV DPTR,#3000H ; 原始数据首地

20、址0003 7807 3 MOV R0,#07 ; 循环次数0005 7930 4 MOV R1,#30H ; 转换结果暂存区指针0007 E0 5 CH1: MOVX A,DPTR0008 550F 6 ANL A, #00001111B000A C4 7 SWAP A000B F5F0 8 MOV B,A000D A3 9 INC DPTR000E E0 10 MOVX A,DPTR000F 550F 11 ANL A, #00001111B0011 45F0 12 ORL A,B0013 F7 13 MOV R1,A0014 09 14 INC R10015 A3 15 INC DPTR

21、0016 D8EF 16 DJNZ R0,CH10018 902000 17 MOV DPTR,#2000H ; 转换结果存储区001B 7A07 18 MOV R2,#07H ; 结果个数001D 7930 19 MOV R1,#30H001F E7 20 CH2: MOV A,R1 ;3、采样的 5 个值分别存放在 R0、R1、R2、R3、R4 中,求出它 们的中间值,并存放在 R2 中。1 ORG 00H 0000 7805 2 MOV R0,#50002 7906 3 MOV R1,#60004 7A07 4 MOV R2,#70006 7B08 5 MOV R3,#80008 7C0

22、9 6 MOV R4,#9000A E4 7 CLR A ;000B C3 8 CLR C ;000C E8 9 MOV A,R0 ;000D 29 10 ADD A,R1 ;000E 2A 11 ADD A,R2 ;000F 2B 12 ADD A,R30010 2C 13 ADD A,R40011 75F005 14 MOV B,#50014 84 15 DIV AB0015 FA 16 MOV R2,A0016 17 END18 END4、以 BUF1 为起始地址的外部数据存储区中存放着 16 个单字节的无符号数,求其平均值并送入 R2 中。1 ORG 00H2 BUF1 EQU #10

23、00H0000 901000 3 MOV DPTR BUF10003 AA00 4 MOV R2,00005 7816 5 MOV R0,#16H0007 E0 6 SUM: MOVX A,DPTR0008 2A 7 ADD A,R20009 FA 8 MOV R2,A000A A3 9 INC DPTR000B D8FA 10 DJNZ R0,SUM000D 75F010 11 MOV B,#10H0010 84 12 DIV AB0011 FA 13 MOV R2,A14 END5、试编写程序,将内部 RAM 单元中 DATA1 开始的 20 个单字节数依次与DATA2 单元为起始地址的

24、20 个单字节数据进行交换。 1 DATA1 EQU #30H2 DATA2 EQU #50H3 LEN EQU #164 ORG 0H0000 7830 5 MOV R0,DATA10002 7950 6 MOV R1,DATA20004 7A10 7 MOV R2,LEN0006 E6 8 EXC: MOV A,R00007 C7 9 XCH A,R10008 F6 10 MOV R0,A0009 08 11 INC R0000A 09 12 INC R1000B DAF9 13 DJNZ R2,EXC14 END6、某场歌手赛,共有 10 个评委,试编写一程序,输入 10 个评分,去掉最

25、高分和最低分,求平均分(均为 BCD 码)。ORG 0HN EQU #5BLOCK EQU #30HISELSORT: MOV R7,NDEC R7MOV R1,BLOCKISST1: MOV R0,BLOCKMOV A,R7MOV R6,AMOV A,R0MOV B,AISST2: INC R1MOV A,R1CLR CSUBB A,BJC ISST3MOV A,R1MOV R2,AMOV B,R1ISST3: DJNZ R6,ISST2MOV A,BXCH A,R1MOV B,R2MOV R1,BMOV R1,ADJNZ R7,ISST1MOV R0,BLOCKMOV R0,#0;去掉最低

26、分MOV A,BLOCKADD A,#9MOV R0,AMOV R0,#0;去掉最高分AD: MOV R0,BLOCKINC ROMOV R1,#8CLR ACLR CMOV B,#0ADL: ADD A,R0DA AMOV R2,AADDC A,#0MOV B,AMOV A,R2DJNZ R1,ADLMOV R5,0MOV R4,BMOV R3,AMOV R2,#0MOV R1,#8R5R4R3/R2R1 = R4R3MOV R1,#00HMOV R2,#0FHMOV R3,#04HMOV R4,#05HMOV R5,#06HLCALL_DIVAJMP $_DIV: ;CLR CMOV 30

27、H,#0MOV 31H,#0MOV 32H,#0_DIV_LOOP: CLR CMOV A,R3SUBB A,R1MOV R3,AMOV A,R4SUBB A,R2MOV R4,AMOV A,R5SUBB A,#0MOV R5,AJC _DIV_END_INC_SHANG: CLR CMOV A,30HADDC A,#1MOV 30H,AMOV A,31HADDC A,#0MOV 31H,AMOV A,32HADDC A,#0MOV 32H,ALJMP _DIV_LOOP_DIV_END: CLR CMOV A,R1ADDC A,R3MOV A,R2ADDC A,R4MOV R3,30HMOV

28、 R4,31HEND7、编写将一个十六进制数转换为十进制数的子程序。 0000 78FE 2 MOV R0,#FEH0002 7930 3 MOV R1,#30H0004 E8 4 HEXBCD: MOV A,R00005 75F064 5 MOV B,#1000008 84 6 DIV AB0009 F7 7 MOV R1,A000A 740A 8 MOV A,#10000C C5F0 9 XCH A,B000E 84 10 DIV AB000F 09 11 INC R10010 F7 12 MOV R1,A0011 09 13 INC R10012 A7F0 14 MOV R1,B15 R

29、ET8、在内部 RAM 的 BLOCK 开始的单元中有一无符号数据块,数据长度为LEN。试编程求其中最大的数并存入 MAX 中。MCS511 ORG 0H2 LEN EQU #10 ;数据块长度3 MAX EQU #40H0000 7830 4 MOV R0,#30H ; BLOCK 首地址0002 790A 5 MOV R1,LEN0004 19 6 DEC R1 ; 循环次数0005 C3 7 CLR C0006 E6 8 LOOP: MOV A,R00007 08 9 INC R00008 96 10 SUBB A,R00009 4002 11 JC EXCHANG000B 8002 1

30、2 SJMP NEXT000D 86F0 13 EXCHANG: MOV B,R0000F C3 14 NEXT: CLR C0010 D9F4 15 DJNZ R1,LOOP0012 85F040 16 MOV 40H,B ; MAX 单元 17END9、试编程将内部 RAM 中 41H43H 单元中的数左移 4 位,移出部分送 50H。题意不清。10、在外部 RAM 中 BLOCK 开始的单元中有一数据块,数据长度为 LEN,试编程统计其中的正数、负数和零的个数分别存入内部 RAM 的 Pcount、Mcoun 和Zcount 单元。MCS51 1 ORG 0H2 LEN EQU #10

31、; 数据块长度3 PCOUNT EQU #30H4 MCOUNT EQU #31H5 ZCOUNT EQU #32H6 BLOCK EQU #40H0000 7840 7 MOV R0,BLOCK ; BLOCK 首地址0002 790A 8 MOV R1,LEN0004 E6 9 LOOP: MOV A,R00005 C3 10 CLR C0006 B40004 11 CJNE A,#0H,SULT10009 0532 12 INC 32H000B 8009 13 SJMP SULT2000D 33 14 SULT1:RLC A; 移出符号位以判断正负!000E 4004 15 JC NEG

32、0010 0530 16 INC 30H0012 8002 17 SJMP SULT20014 0531 18 NEG: INC 31H0016 08 19 SULT2:INC R00017 D9EB 20 DJNZ R1,LOOP11、试编写一查表求平方的子程序 SQR(设 X 在累加器 A 中,A 小于 15,平方数存入工作寄存器 R7 中)。0000 900008 2 MOV DPTR,#TAB0003 7830 3 MOV R0,#30H0005 E6 4 MOV A,R00006 93 5 MOVC A,A+DPTR0007 FF 6 MOV R7,A0008 01010409 7

33、TAB: DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225000C 10 19 24 310010 40 51 64 790014 90 A9 C4 E18 END12、试编写一程序,将外部数据区 DATA1 单元开始的 50 个单节数逐一依次移动到内部 RAM 中 DATA2 单元开始的数据区中。 MCS511 ORG 0H2 DATA1 EQU #1000H3 DATA2 EQU #30H4 LEN EQU #10H0000 901000 5 MOV DPTR,DATA10003 7830 6 MOV R0,DATA20005 7910

34、 7 MOV R1,LEN0007 E0 8 LOOP: MOVX A,DPTR0008 F6 9 MOV R0,A0009 A3 10 INC DPTR000A 08 11 INC R0000B D9FA 12 DJNZ R1,LOOP13 END13、14,略第五章1、简述中断、中断源、中断源优先级及中断嵌套的含 义。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使 CPU 暂 停正在执行的程序,转而去进行中断事件的处理,中断 处理完毕后,又返回被中断的程序处, 继续执行下去、。中断的意义在于资源共享和应急处理。中断的功能有四:一、调整

35、 CPU 与外设的速度配合;二、实时控制的实现;三、故障检测;四、实现人机交流引 起 中 断 的 原 因 ,或 者 能 够 发 出 中 断 请 求 信 号 的 来 源 统 称 为 中 断 源 。通常中断源有以下几种: ()外部设备请求中断。一般的外部设备(如键盘、打印机和 A / D 转换器等)在完成自身的操作后,向 CPU 发出中断请求,要求 CPU 为他服务。 由计算机硬件异常或故障引起的中断,也称为内部异常中断。 ()故障强迫中断。 计算机在一些关键部位都设有故障自 动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他 报警信号等,这些装置的报警信号都能使 CPU 中断

36、,进行相应的中断处 理。 ()实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时, CPU 发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由 CPU 转去完成检测和控制工作。 (4)数据通道中断。数据通道中断也称直接存储器存取()操作中断,如磁盘、磁带机或等直接与存储器交换数据所要求的中断。 为了使得系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。 中 断 系 统 正 在 执 行 一 个 中 断 服 务 时 ,有 另 一 个 优 先 级 更 高

37、 的 中 断 提 出 中 断请 求 ,这 时 会 暂 时 终 止 当 前 正 在 执 行 的 级 别 较 低 的 中 断 源 的 服 务 程 序 ,去 处 理级 别 更 高 的 中 断 源 ,待 处 理 完 毕 ,再 返 回 到 被 中 断 了 的 中 断 服 务 程 序 继 续 执 行 ,这 个 过 程 称 为 是 中 断 嵌 套 。2 MCS-51 单 片 机 提 供 了 几 个 中 断 源 ? 几 个 中 断 优 先 级 ?MCS-51 单 片 机 的 中 断 源 共 有 三 类 ,分 别 是 外 部 中 断 、定 时 计 数 器 中 断 和串 行 通 信 口 中 断 ,第 一 类 有

38、IE0 和 IE1,第 二 类 有 TF0 和 TF1,第 三 类 的RI、TI 合 二 为 一 。MCS-51 单 片 机 分 两 个 优 先 级 ,每 个 中 断 源 的 优 先 级 都 可 以 通 过 中 断 优 先 级寄 存 器 IP 中 的 相 应 位 进 行 设 定 。在 同 级 优 先 级 中 ,五 个 中 断 源 的 优 先 级 次 序由 高 到 低 分 别 是 :IE0、TF0、IE1、TF1、RI 或 TI。3、简 述 TCON、SCON、IE、IP 四 个 特 殊 功 能 寄 存 器 各 位 的 定 义 及 功 能 。TCON(Timer Control Register

39、)定 时 器 /计 数 器 控 制 寄 存 器 TCON 在 特 殊 功 能 寄 存 器 中 ,字 节 地 址 为 88H,位 地 址 (由 低 位 到 高 位 )为88H 一 8FH,由 于 有 位 地 址 ,所 以 可 以 于 进 行 位 操 作 。 TCON 的 作 用 是 控制 定 时 器 的 启 、停 ,标 志 定 时 器 溢 出 和 中 断 情 况 。 其 中 ,TFl,TRl,TF0 和 TR0 位 用 于 定 时 器 计 数 器 ;IEl,ITl,IE0 和IT0 位 用 于 中 断 系 统 。 如 图 所 示 :TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0其

40、 中 ,TF1:定 时 器 1 溢 出 标 志 位 。当 定 时 器 1 计 满 溢 出 时 ,由 硬 件 使 TF1置 “1”,并 且 申 请 中 断 。进 入 中 断 服 务 程 序 后 ,由 硬 件 自 动 清 “0”,在 查 询 方 式下 用 软 件 清 “0”。 TR1:定 时 器 1 运 行 控 制 位 。由 软 件 清 “0”关 闭 定 时 器 1。当 GATE=1,且 INT1 为 高 电 平 时 ,TR1 置 “1”启 动 定 时 器 1;当GATE=0,TR1 置 “1”启 动 定 时 器 1。 TF0:定 时 器 0 溢 出 标 志 。其 功 能 及操 作 情 况 同 T

41、F1。 TR0:定 时 器 0 运 行 控 制 位 。其 功 能 及 操 作 情 况 同TR1。 IE1:外 部 中 断 1 请 求 标 志 位 。 IT1:外 部 中 断 1 触 发 方 式 选 择位 。当 IT1=0,为 低 电 平 触 发 方 式 ;当 IT1=1,为 下 降 沿 触 发 方 式 。 IE0:外部 中 断 0 请 求 标 志 位 。 IT0:外 部 中 断 0 触 发 方 式 选 择 位 。 当 IT0=0,为低 电 平 触 发 方 式 ;当 IT0=1,为 下 降 沿 触 发 方 式 。TCON 中 低 4 位 与 中 断 有 关 。由 于 TCON 是 可 以 位 寻

42、 址 的 ,因 而 如 果 只清 溢 出 或 启 动 定 时 器 工 作 ,可 以 用 位 操 作 命 令 。例 如 :执 行 “CLR TF0”后 则 清定 时 器 0 的 溢 出 ;执 行 “SETB TR1”后 可 启 动 定 时 器 1 开 始 工 作 。SCON(Serial Port Control Register)串行口控制寄存器寄存器地址 98H,位寻址 9FH98H。位地址 9F 9E 9D 9C 9B 9A 99 98位符号 SM0 SM1 SM2 REN TB8 RB8 TI RISM0、SM1:串行口工作方式选择位SM2:多机通信控制位REN:允许/禁止串行口接收的控

43、制位TB8:在方式 2 和方式 3 中,是被发送的第 9 位数据,可根据需要由软件置 1 或清零,也可以作为奇偶校验 位,在方式 1 中是停止位。RB8:在方式 2 和方式 3 中,是被接收的第 9 位数据(来自第 TB8 位);在方式 1中,RB8 收到的是停止位,在方式 0 中不用。TI串行口 发送中断请 求标志位当发送完一帧串行数据后,由硬件置 1;在转向中断服务程序后,用软件清 0。RI串行口接收中断请求标志位当接收完一帧串行数据后,由硬件置 1;在转向中断服务程序后,用软件清0。 此处的“软件清零”,意指需要用户用指令清零。IE(interrupt Enable Register):

44、中断允许控制寄存器寄存器地址 A8H,位寻址 AFHA8H。位地址AF AE AD AC AB AA A9 A8位符号EA / ET2 ES ET1 EX1 ET0 EX0EA:中断允许总控制位当 EA=0 时,中断总禁止。当 EA=1 时,中断总允许后中断的禁止与允 许由各中断源的中断允许控制位进行设置。EX0( EX1):外部中断允许控制位当 EX0( EX1)0 禁止外中断当 EX0( EX1)1 允许外中断ET0(EX1):定时/计数中断允许控制位当 ET0(ET1)0 禁止定 时( 或计数)中断当 ET0(ET1)1 允许定 时( 或计数)中断ET2:定时器 2 中断允许控制位,在

45、AT89S52、AT89C52 中ES:串行中断允许控制位当 ES0 禁止串行中断当 ES1 允许串行中断IP(Interrupt Priority Register):中断优先级控制寄存器寄存器地址 B8H,位寻址 BFHB8H。位地址BF BE BD BC BB BA B9 B8位符号/ / PT2 PS PT1 PX1 PT0 PX0PX0外部中断 0 优先级设定位;PT0定时中断 0 优先级设定位;PX1外部中断 1 优先级设定位;PT1定时中断 1 优先 级设定位;PS串口中断优先级设定位;PT2定时器 2 优先级设定位(8052 才有)。4、简述 MCS-51 单片机的中断响应过程

46、。MCS-51 单片机的中断响应过程可简单归纳为 5 步:(1) 中断源检测:在每条指令结束后, 系统都自动检测中断请求信号, 如果有中断请求,且 CPU 处于开中断状态下, 则响应中断。 (2) 保护现场:在保 护现场前, CPU 自动将当前 PC 压入堆栈。此时,一般要关中断, 以防止现场被破坏。保 护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。(3) 中断服 务: 即为相应的中断源服务。 (4) 恢复 现场:用堆栈指令将保护在堆栈中的数据弹出来, 在恢复现场前要关中断, 以防止现场被破坏。在恢复现场后应及时开中断。 (5) 返回: CPU 将推入到堆栈的断点地址弹回到程序计数器,

47、 从而使CPU 继续执 行刚才被中断的程序。 5 说明 MCS-51 单片机响应中断后,中断服 务程序的入口地址。MCS-51 单片机响应中断后,其中断矢量是由硬件自 动生成的。各中断源的中断服务程序的入口地址如下表。6 指出哪几个中断申请标志在 CPU 响应中断响应后能被硬件自动清零。除了串行通信中断申请标志在 CPU 响应中断后需要用户用软件指令清零中断申请标志外,其余的中断源的申请标志都是在 CPU 响应后由硬件自动清零的。它们分别是:外部中断 0 申请标志(IE0 )、外部中断 1 申请标志(IE1)、定 时计 数器 0 溢出 标志(IT0)和定时计数器 1 溢出标志(IT1) 。7、

48、在 MCS-51 单片机的应用系统中,如果有多个外部中断源,怎样进行处理?在多中断源的系统中,假如各中断源之间很少发生竞争,那么采用“线或非”连接,用软件查询的方式进行控制如图。如果个中断源之间有优先级的区别,固定优先级时用“菊花链”电路,不定优先级时用 8259.8、外部中断 INT0、INT1 的两种触发方式在原理上有何区 别?如何用软件设置?ITx 为外部中断触 发方式 选择。当 ITx 为 0 时为低 电平触发方式, CPU 在每个机器周期的 S5P2 采样 ITx, 当 Itx 输入低电平的时,就置位 IEx,采用这种触发方式时,外部中断源的低电平必须保持到 CPU 响应为止。ITx 为 1 的时 候边沿触发 方式, CPU 在每个

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报