《单片机原理及接口技术》(第二版)余锡存著 课后习题答案 二到七_第1页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案 二到七_第2页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案 二到七_第3页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案 二到七_第4页
《单片机原理及接口技术》(第二版)余锡存著 课后习题答案 二到七_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

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口为外接程存和数存的地址低8位和数据总线的时分复用接口;其中P2口为外接程存和数存的地址高8位总线

2、接口;其中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 个通用工作寄存器区。每一个区有 8 个通用寄存器R0R7。4. MCS-51单片机由哪几个部分组成。答: 一个8位CPU; 4KB ROM or EPROM(8031

3、无ROM); 128字节RAM数据存储器; 21个特殊功能寄存器SFR; 4个8位并行I/O口,其中P0、P2为地址/数据线,可寻址64KB 程序存储器和64KB 数据存储器; 一个可编程全双工串行口; 具有5个中断源,两个优先级,嵌套中断结构; 两个16位定时器/计数器; 一个片内振荡器及时钟电路。7.8.4.5.6.5. MCS-51单片机的信号各自的功能是什么?答:都是控制总线 :访问内部程序存储器的控制信号/编程电压输入端。 时,CPU从片内读取指令, CPU从片外读取指令。 :地址锁存允许/编程信号线。 :外部程序存储器读选通信号。:复位输入信号/掉电保护后备电源引脚。6.MCS-5

4、1单片机如何实现工作寄存器组的选择? RS1(PSW.4)、RS0(PSW.3) 为工作寄存器组的选择位; 取值为00时选择第0组工作寄存器,片内RAM地址是00H07H,名称为R0R7; 取值为01时选择第1组工作寄存器,片内RAM地址是08H0FH,名称为R0R7; 取值为10时选择第2组工作寄存器,片内RAM地址是10H17H,名称为R0R7; 取值为11时选择第3组工作寄存器,片内RAM地址是18H1FH,名称为R0R7。7. 什么是时钟周期、机器周期、指令周期?当单片机的时钟频率为12MHz时,一个机器周期是多少?ALE引脚的输出频率是多少?(1) 振荡周期: 也称时钟周期, 是指为

5、单片机提供时钟脉冲信号的振荡源的周期。 (2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。 (3) 机器周期: 一个机器周期包含 6 个状态周期S1S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。(4) 指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。 当单片机的时钟频率为12MHz时,一个机器周期是多少1s(微秒);ALE引脚的输出频率是多少2s(微秒)。第三章1. MCS-51指令系统按功能分为几类?具

6、有几种寻址方式?他们的寻址范围如何? 答: 按功能分为5类,分别是: 数据传送类、算术操作类、逻辑操作类、控制转移类和位操作类; 具有7种寻址方式; 立即寻址,寻址范围是程序存储器; 直接寻址,寻址范围是内部RAM低128字节和高128字节; 寄存器寻址,寻址范围是四组工作寄存器R0R7; 寄存器间接寻址,寻址范围是内部RAM的低128和外部RAM低64K可寻址空间; 基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器; 相对寻址,寻址范围是以下一条指令为相对地址的-128+127字节范围内; 位寻址,寻址范围是可位寻址空间,包括内部RAM的可寻址位,特殊功能寄存器中的可寻址位。2.设内部R

7、AM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0,和内部RAM中50H、51H单元的内容为和值?答:MOV A,59H ; (A)=(59H)=50HMOV R0,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,

8、#56H ADD A,#74H 答:Cy进位、借位标志位;OV溢出标志位。MOV A,#56H ;(A)=56H=0101 0110 BADD A,#74H ;(A)=56H+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

9、addr11 ;下调指令为基准的2KB范围内的跳转指令。 LJMP addr16 ;转移的目标地址可以在64KB程序存储器的任何地方。 SJMP rel ;下调指令为基准的-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) = (

10、31H) = 10HPOP DPL ; (DPL) = (62H) = 10HPOP DPH ; (DPH) =(61H)= 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

11、ACC.2,LOOP2LOOP2: MOV P1,A答: CLR C ; (Cy)=0MOV A,#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单元的内容送R

12、0; 片外RAM 20H单元的内容送片内RAM 20H单元; 片外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

13、单元;MOV DPTR,#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,#3

14、3H ; (R1) = 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

15、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 ; 取被加数十个位ADD

16、 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单元置0。解: ORG 00H MOV 30H, #0AAH

17、 ; MOV R1, #31H ; MOV R0, #20H ; BIJIAO: MOV A, R0 CJNE A, #0AAH , LOOP; MOV 51H,#01H SJMP JIESHU LOOP: INC R0 DJNZ R1,BIJIAO MOV 51H,#00HJIESHU :SJMP $第四章1、若有两个符号数X,Y分别存放在内部存储器50H、51H单元中,试编写一个程序实现X*10+Y,结果存入52H、53H中。 1 ORG00H 0000 7850 2MOVR0,#50H 0002 E6 3MOVA,R0 0003 75F00A 4MOVB,#0AH 0006 A4 5MU

18、LAB 0007 08 6INCR0 0008 26 7ADDA,R0 0009 08 8INCR0 000A A6F0 9MOVR0,B 000C 08 10INCR0 000D F6 11MOVR0,A 12END2、在以3000H为首地址的外部RAM中,存放了14个以ASCII码表示的09的数,试编写程序将它们转换成BCD码,并以压缩BCD形式存放在以2000H为首地址的外部RAM中。 1ORG00H 0000 903000 2MOVDPTR,#3000H;原始数据首地址 0003 7807 3MOVR0,#07;循环次数 0005 7930 4MOVR1,#30H;转换结果暂存区指针

19、0007 E0 5CH1:MOVXA,DPTR 0008 550F 6ANLA, #00001111B 000A C4 7SWAPA 000B F5F0 8MOVB,A 000D A3 9INCDPTR 000E E0 10MOVXA,DPTR 000F 550F 11ANLA, #00001111B 0011 45F0 12ORLA,B 0013 F7 13MOVR1,A 0014 09 14INCR1 0015 A3 15INCDPTR 0016 D8EF 16DJNZR0,CH1 0018 902000 17MOVDPTR,#2000H;转换结果存储区 001B 7A07 18MOVR2

20、,#07H;结果个数 001D 7930 19MOVR1,#30H 001F E7 20CH2:MOVA,R1;3、采样的5个值分别存放在R0、R1、R2、R3、R4中,求出它们的中间值,并存放在R2中。 1ORG00H> 0000 7805 2MOVR0,#5 0002 7906 3MOVR1,#6 0004 7A07 4MOVR2,#7 0006 7B08 5MOVR3,#8 0008 7C09 6MOVR4,#9 000A E4 7CLRA; 000B C3 8CLRC; 000C E8 9MOVA,R0; 000D 29 10ADDA,R1; 000E 2A 11ADDA,R2;

21、 000F 2B 12ADDA,R3 0010 2C 13ADDA,R4 0011 75F005 14MOVB,#5 0014 84 15DIVAB 0015 FA 16MOVR2,A 0016 17END 18END4、以BUF1为起始地址的外部数据存储区中存放着16个单字节的无符号数,求其平均值并送入R2中。 1ORG00H 2BUF1EQU#1000H 0000 901000 3MOVDPTRBUF1 0003 AA00 4MOVR2,0 0005 7816 5MOVR0,#16H 0007 E0 6SUM:MOVXA,DPTR 0008 2A 7ADDA,R2 0009 FA 8MOV

22、R2,A 000A A3 9INCDPTR 000B D8FA 10DJNZR0,SUM 000D 75F010 11MOVB,#10H 0010 84 12DIVAB 0011 FA 13MOVR2,A 14END5、试编写程序,将内部RAM单元中DATA1开始的20个单字节数依次与DATA2单元为起始地址的20个单字节数据进行交换。> 1DATA1EQU#30H 2DATA2EQU#50H 3LENEQU#16 4ORG0H 0000 7830 5MOVR0,DATA1 0002 7950 6MOVR1,DATA2 0004 7A10 7MOVR2,LEN 0006 E6 8EXC:

23、MOVA,R0 0007 C7 9XCHA,R1 0008 F6 10MOVR0,A 0009 08 11INCR0 000A 09 12INCR1 000B DAF9 13DJNZR2,EXC14 END6、某场歌手赛,共有10个评委,试编写一程序,输入10个评分,去掉最高分和最低分,求平均分(均为BCD码)。ORG0HNEQU#5BLOCKEQU#30HISELSORT:MOVR7,NDECR7MOVR1,BLOCKISST1:MOVR0,BLOCKMOVA,R7MOVR6,AMOVA,R0MOVB,AISST2:INCR1MOVA,R1CLRCSUBBA,BJCISST3MOVA,R1M

24、OVR2,AMOVB,R1ISST3:DJNZR6,ISST2MOVA,BXCHA,R1MOVB,R2MOVR1,BMOVR1,ADJNZR7,ISST1MOVR0,BLOCKMOVR0,#0;去掉最低分MOVA,BLOCKADDA,#9MOVR0,AMOVR0,#0;去掉最高分AD:MOVR0,BLOCKINCROMOVR1,#8CLRACLRCMOVB,#0ADL:ADDA,R0DAAMOVR2,AADDCA,#0MOVB,AMOVA,R2DJNZR1,ADLMOVR5,0MOVR4,BMOVR3,AMOVR2,#0MOVR1,#8R5R4R3/R2R1=R4R3MOVR1,#00HMOV

25、R2,#0FHMOVR3,#04HMOVR4,#05HMOVR5,#06HLCALL_DIVAJMP$_DIV:;CLRCMOV30H,#0MOV31H,#0MOV32H,#0_DIV_LOOP:CLRCMOVA,R3SUBBA,R1MOVR3,AMOVA,R4SUBBA,R2MOVR4,AMOVA,R5SUBBA,#0MOVR5,AJC_DIV_END_INC_SHANG:CLRCMOVA,30HADDCA,#1MOV30H,AMOVA,31HADDCA,#0MOV31H,AMOVA,32HADDCA,#0MOV32H,ALJMP_DIV_LOOP_DIV_END:CLRCMOVA,R1AD

26、DCA,R3MOVA,R2ADDCA,R4MOVR3,30HMOVR4,31HEND7、编写将一个十六进制数转换为十进制数的子程序。> 0000 78FE 2MOVR0,#FEH 0002 7930 3MOVR1,#30H 0004 E8 4HEXBCD:MOVA,R0 0005 75F064 5MOVB,#100 0008 84 6DIVAB 0009 F7 7MOVR1,A 000A 740A 8MOVA,#10 000C C5F0 9XCHA,B 000E 84 10DIVAB 000F 09 11INCR1 0010 F7 12MOVR1,A 0011 09 13INCR1 00

27、12 A7F0 14MOVR1,B 15RET8、在内部RAM的BLOCK开始的单元中有一无符号数据块,数据长度为LEN。试编程求其中最大的数并存入MAX中。MCS51 1ORG0H 2LENEQU#10;数据块长度 3MAXEQU#40H 0000 7830 4MOVR0,#30H;BLOCK首地址 0002 790A 5MOVR1,LEN 0004 19 6DECR1;循环次数 0005 C3 7CLRC 0006 E6 8LOOP:MOVA,R0 0007 08 9INCR0 0008 96 10SUBBA,R0 0009 4002 11JCEXCHANG 000B 8002 12SJM

28、PNEXT 000D 86F0 13EXCHANG:MOVB,R0 000F C3 14NEXT:CLRC 0010 D9F4 15DJNZR1,LOOP 0012 85F040 16MOV40H,B; MAX单元 17END9、试编程将内部RAM中41H43H单元中的数左移4位,移出部分送50H。 题意不清。10、在外部RAM中BLOCK开始的单元中有一数据块,数据长度为LEN,试编程统计其中的正数、负数和零的个数分别存入内部RAM的Pcount、Mcoun和Zcount单元。 MCS51> 1ORG0H 2LENEQU#10;数据块长度 3PCOUNTEQU#30H 4MCOUNTE

29、QU#31H 5ZCOUNTEQU#32H 6BLOCKEQU#40H 0000 7840 7MOVR0,BLOCK;BLOCK首地址 0002 790A 8MOVR1,LEN 0004 E6 9LOOP:MOVA,R0 0005 C3 10CLRC 0006 B40004 11CJNEA,#0H,SULT1 0009 0532 12INC32H 000B 8009 13SJMPSULT2 000D 33 14SULT1:RLCA; 移出符号位以判断正负! 000E 4004 15JCNEG 0010 0530 16INC30H 0012 8002 17SJMPSULT2 0014 0531

30、18NEG:INC31H 0016 08 19SULT2:INCR0 0017 D9EB 20DJNZR1,LOOP11、试编写一查表求平方的子程序SQR(设X在累加器A中,A小于15,平方数存入工作寄存器R7中)。0000 900008 2MOVDPTR,#TAB 0003 7830 3MOVR0,#30H 0005 E6 4MOVA,R0 0006 93 5MOVCA,A+DPTR 0007 FF 6MOVR7,A 0008 01010409 7TAB:DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 000C 10 19 24 31

31、0010 40 51 64 79 0014 90 A9 C4 E1 8END12、试编写一程序,将外部数据区DATA1单元开始的50个单节数逐一依次移动到内部RAM中DATA2单元开始的数据区中。> MCS51 1ORG0H 2DATA1EQU#1000H 3DATA2EQU#30H 4LENEQU#10H 0000 901000 5MOVDPTR,DATA1 0003 7830 6MOVR0,DATA2 0005 7910 7MOVR1,LEN 0007 E0 8LOOP:MOVXA,DPTR 0008 F6 9MOVR0,A 0009 A3 10INCDPTR 000A 08 11I

32、NCR0 000B D9FA 12DJNZR1,LOOP13 END13、14,略第五章1、简述中断、中断源、中断源优先级及中断嵌套的含义。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去、。 中断的意义在于资源共享和应急处理。 中断的功能有四:一、调整CPU与外设的速度配合;二、实时控制的实现;三、故障检测;四、实现人机交流 引起中断的原因,或者能够发出中断请求信号的来源统称为中断源。通常中断源有以下几种: ()外部设备请求中断。一般的外

33、部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。由计算机硬件异常或故障引起的中断,也称为内部异常中断。 ()故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。 ()实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。 (4)数据通道中断。数据通

34、道中断也称直接存储器存取()操作中断,如磁盘、磁带机或等直接与存储器交换数据所要求的中断。 为了使得系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。 中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程称为是中断嵌套。2、 MCS-51单片机提供了几个中断源?几个中断优先级? MCS-51单片机的中断源共有三类,分别是外部中断、定时计数器中断和串行通信口中断,第一类有

35、IE0和IE1,第二类有TF0和TF1,第三类的RI、TI合二为一。 MCS-51单片机分两个优先级,每个中断源的优先级都可以通过中断优先级寄存器IP中的相应位进行设定。在同级优先级中,五个中断源的优先级次序由高到低分别是:IE0、TF0、IE1、TF1、RI或TI。3、简述TCON、SCON、IE、IP四个特殊功能寄存器各位的定义及功能。TCON(Timer Control Register)定时器/计数器控制寄存器 TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,所以可以于进行位操作。 TCON的作用是控制定时器的启、停,标志定时器溢出和

36、中断情况。 其中,TFl,TRl,TF0和TR0位用于定时器计数器;IEl,ITl,IE0和IT0位用于中断系统。 如图所示:TF1TR1TF0TR0IE1IT1IE0IT0其中,TF1:定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。 TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作

37、情况同TR1。 IE1:外部中断1请求标志位。 IT1:外部中断1触发方式选择位。当IT1=0,为低电平触发方式;当IT1=1,为下降沿触发方式。 IE0:外部中断0请求标志位。 IT0:外部中断0触发方式选择位。 当IT0=0,为低电平触发方式;当IT0=1,为下降沿触发方式。TCON中低4位与中断有关。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作。SCON(Serial Port Control Register)串行口控制寄存器寄存器地址98H,位寻址9F

38、H98H。位地址9F9E9D9C9B9A9998位符号SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式选择位SM2:多机通信控制位REN:允许/禁止串行口接收的控制位TB8:在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清零,也可以作为奇偶校验位,在方式1中是停止位。RB8:在方式2和方式3中,是被接收的第9位数据(来自第TB8位);在方式1中,RB8收到的是停止位,在方式0中不用。TI串行口发送中断请求标志位当发送完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。RI串行口接收中断请求标志位   

39、0;  当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。 此处的“软件清零”,意指需要用户用指令清零。IE(interrupt Enable Register):中断允许控制寄存器寄存器地址A8H,位寻址AFHA8H。位地址AFAEADACABAAA9A8位符号EA/ET2ESET1EX1ET0EX0EA:中断允许总控制位当EA=0时,中断总禁止。当EA=1时,中断总允许后中断的禁止与允许由各中断源的中断允许控制位进行设置。EX0( EX1):外部中断允许控制位当EX0( EX1)0 禁止外中断当EX0( EX1)1 允许外中断ET0(EX1):定时/计数中断允

40、许控制位当ET0(ET1)0  禁止定时(或计数)中断当ET0(ET1)1  允许定时(或计数)中断ET2:定时器2中断允许控制位,在AT89S52、AT89C52中ES:串行中断允许控制位当ES0  禁止串行中断当ES1  允许串行中断IP(Interrupt Priority Register):中断优先级控制寄存器寄存器地址B8H,位寻址BFHB8H。位地址BFBEBDBCBBBAB9B8位符号/PT2PSPT1PX1PT0PX0PX0外部中断0优先级设定位;PT0定时中断0优先级设定位;PX1外部中断1优先

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

42、恢复现场前要关中断, 以防止现场被破坏。在恢复现场后应及时开中断。 (5) 返回: CPU将推入到堆栈的断点地址弹回到程序计数器, 从而使CPU继续执行刚才被中断的程序。 5、 说明MCS-51单片机响应中断后,中断服务程序的入口地址。MCS-51单片机响应中断后,其中断矢量是由硬件自动生成的。各中断源的中断服务程序的入口地址如下表。6、 指出哪几个中断申请标志在CPU响应中断响应后能被硬件自动清零。除了串行通信中断申请标志在CPU响应中断后需要用户用软件指令清零中断申请标志外,其余的中断源的申请标志都是在CPU响应后由硬件自动清零的。它们分别是:外部中断0申请标志(IE0)、外部中断1申请标

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

44、电平必须保持到CPU响应为止。ITx为1的时候边沿触发方式,CPU在每个机器周期的S5P2采样ITx,如果在相邻的两个机器周期内,前一个机器周期为高,后一个机器周期为低,则置位IEx,因此,采用边沿触发时,高电平和低电平的保持时间需在12拍以上。设置外部中断信号触发方式,可通过对TCON寄存器(字节地址88H,位地址88H8FH)中的ITx位置一或置零进行。9、在一个应用系统中,晶振频率为12MHz,一个外部中断请求信号的宽度是300ns的负脉冲,该采用哪种触发方式?如何实现?晶振频率为12MHz时,机器周期为1微秒,采用边沿触发时,请求信号至少应该保持1微秒,所以只能对原信号进行展宽,常用的

45、方法是连接一个单稳态电路,其时常数不在1-1.5微秒之间即可。10、MCS-51的中断服务程序能否放在65KB程序存储器的任意区域?如何实现?MCS-51的中断服务程序可以放在65KB程序存储器的任意区域,只要在对应的中断矢量入口填写相应的跳转指令即可。例如外部中断IE1的中断服务程序的起始地址为3400H,则在0013H单元内填写 LCALL 3400H。第六章1、8051单片机内设几个可编程的定时/计数器?它们有几种工作方式?如何选择和设定?作为定时器或计数器,它们的波特率各为多少?8051单片机内设有两个钧为16位的可编程的定时/计数器,共有4种工作方式,即:方式013位定时/计数器、方

46、式116位定时/计数器、方式2自动重载初值得8位定时/计数器和方式3T0为两个独立的8位定时/计数器,在方式3下,T1停止工作。 8051定时/计数器的工作方式由控制寄存器TMOD的M0、M1两位设置,因为TMOD的地址为89H,所以M0、M1不能位寻址,只能通过字节操作的方式对M0、M1的值进行设定。 当用定时计数器作为波特率发生器时,根据串口的工作模式,有三种情形:方式的波特率为主振频率fosc的十二分之一;方式2的波特率依照下式确定:,其中,SMOD为PCON寄存器中的波特率倍增位。方式1和方式3的波特率计算依照下列关系求的即可: 2、定时/计数器作定时器用时,其定时时间有哪些因素有关?

47、做计数器用时,对外部计数频率有何限制? 8051的定时/计数器工作在定时器状态时,输入的时钟脉冲是由晶体振荡器的输出经12分频得到的,故其频率为晶振频率的十二分之一。所以,定时输出是晶振频率处以12再除以计数值。 8051的定时/计数器工作在计数器状态时,需要两个机器周期才能识别一个从“1”到“0”的跳变,故最高计数频率不大于晶振频率的二十四分之一。3、8051单片机的晶振频率为6MHz,若只使用T0产生500微秒定时,可以选择哪几种定时方式?分别写出定时器的方式控制字和计数器初值。选择方式0或方式1,计数器初值为8192-250,或65536-250。.此处给一个C语言写的程序段,定时信号由

48、P1.0输出: ORG 0000H LJMP MAIN ORG 000BH LJMP TO_INTERRUPTMAIN:SETB EA MOV TH0, (65536-250)/256 MOV TL0, (65536-250)%256 SETB TR0 SETB ET0SJMP $T0_INTERRUPT: CLR TR0 MOV TH0, (65536-125)/256 MOV TL0, (65536-125)%256 P10 = P10 SETB TR0 RETI4、某8051系统晶振频率为6MHz,先欲从P1.7引脚输出一个连续5Hz的方波信号,请编写程序。5Hz的方波周期为200毫秒,

49、高低电平各持续100毫秒,若晶振频率为6MHz,则机器周期为2微秒,故其计数值应为:N=100ms/2s=50000采用方式1进行计数,则 X=M-N=65536-50000=15536H=0C350H程序编写如下:MOVTMOD, #05H;设置T0工作方式,定时,方式1MOVTH0,#0C3H;写入计数器初值MOVTL0,#050H;SETBTR0;启动T0LOOP:JBCTF0,$; 查询定时器溢出标志MOVTH0,#0C3H;MOVTL0,#050HCPL P1.7SJMPLOOP;END 也可以用C语言编写:用定时/计数器T0从P1.7输出周期为5s的方波,晶振频率为6MHz。#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit

温馨提示

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

评论

0/150

提交评论