单片机原理与应用及C51程序设计--杨加国主编-完整版答案_第1页
单片机原理与应用及C51程序设计--杨加国主编-完整版答案_第2页
单片机原理与应用及C51程序设计--杨加国主编-完整版答案_第3页
单片机原理与应用及C51程序设计--杨加国主编-完整版答案_第4页
单片机原理与应用及C51程序设计--杨加国主编-完整版答案_第5页
已阅读5页,还剩39页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、1单片机原理与应用及C51程序设 计-杨加国主编-完整版答案单片机原理与应用及C51程序设计第一章 酗岀下F瘤特*t1廉磁、ff (t计算机才长曲£低)*+15-89-6+112-:÷451 -ODIOl)01. -00L0 IDl.(+45 1 b-D010 ) I LdEPJ -IIo)IOOl. L P门嵐 IOlOallOH SeJ i-ooo-61-10OOOli 0.( -61 J-l 1 IIIOoIt C -fi hi IIlIelO+L12) DlllooGof t-4iJ K-OllIoQoOf +J3 *1- 011100002 脂昭下列#持忒诃斯机旳

2、爭时表示海式*AfiEN dfJ F mdM匚S-5l片杠式娥/1牛部录曲歲F甞:MCS 单姑机圭妥由祸下部-fej :吋种电密、中J¾lf(CPU),存储器(E.AMR.OM),定计薮 器,并行養口 r串行援口、中斷蘇轨矗一些特硃励離窈存器饰FJ0 MCS-51-!tH YiW 舍罠是件也 了 MCS-SIa4JS卑存8PSWl ijj5DT D< D D Ce 皿 D】 DG-C-I AC Fo RSL RSO OVPX* 下 iCCPSW.') n&ft.ACiPSW鞘到t&或催位可标志輕rccr&w <);用户标芯C, f,5户直己

3、九罠的标忑匕EI5】.RSOCPSW.4, PSWJ)I酋存崙渥选择应.可用執柞習应盛睛再.炜于从匹Sa王作寄申褂中选龙当前的工作奇 存辖第.OV(PSW.2)満岀际盂弧 在加柱或减袪运算时”如话昇的结睪趣出述二进制的艳風 则X置1标走満出, 否理Qf淆芋P(PSW D)I奇儻标志祗.用于记录抬夸执行右霜初養A中1的牛J的奇偶性"若黑加器ARl质牛栽为奇. WP置 若遐训謂入中1的小献诜.刪P毕零.; P<W 1 p 可谊帀产礎申 E051的需4旳坏钦t存穗盎耳汨沖尤个區域J各碍什么特質片內救第埠寻蕃牲驹能可此务庶且-卜部洽匸丁乍奇存蓉自区、赴寻址氏、-ramE和徉蘇功 区.其

4、中HKo工件奋存器虫区,GOH-IFn单元.可RCR7ffi÷问,检寻址区.2ftH-2TH单 7t,可按悅方式访1引-般RAMAr 3OH-7FH单孙 tl<j 0S到廿单口 将駅瓦勰需存器区桂于切H-FFH单 元”4 M亡咅-幻单+叽耐用枉此理过胖:堆祐是舷吨入茹出*后扎先出的康則进稈營理附一農存轄区L CS-51单片机的堆桂是向上空煤型的*存入麴 据是从地MIK端向高端延悻.取出t据是从地址高端向低端延惮<入tfffiftlL字节为单竝的.ftf SPtf 前内容免自S加1,矮捂再把匏据1SP计霸冋代中币K出能时,ftSPRl单元的叢帯耽出,爵后再把客P楕 针佻內C

5、E1- 120# 41H 73H 45H 4EH 64H 66H 4AH "H 6DH 64H 73H 76H 31H 32H 30H3 ? t7 .是把徹坐讨畀机申的锻妣理筋-护健軾To越口、足附如诃StJT f rfo h tf < S!-电踣芯片上爵威柏撤愛计莽atttt *KLa4. K U*A件玄?諄】主藍特点如"F,)左再储舉話构上,草片机的存艦器用用pffiIlam話构:) 吃芯月引上.丸常井呆用井鬥蔦坤技卞-) 衽内IP资梯访冋上”不同存殊或龍需存寻(課阳的形式4)在16令貝班上,禾用直网担雄的杓令廉纸5J 內部Ijti舊卑眾一个宝飓工的厲行援口时也片

6、机有惺坐旳外带扩展憐才5<.tl*) ± JSJfI.¾单机Ml DT业自J 2) 龍仪器傥褻* 3)计鼻机>b¾接口 4)露舅包器 t用.陰能弥故系统、并行爭利处理茶妍和局詡阳堪杀妊。第二章iU< ! OjX 机射外啣总或 计二关 WT齧;MCS-51+XM-32POit 由Po口经地址招供低砸(A2A臥 PgSAI5S)IJ.數据鼠宽 :.IPDBUL T2J由第二功離枣东下的卩口翻聊只独立的控制S* EA. ALnPSENt6 什名是机雅周 MCS-51U -4Ufe÷*+W?:机裁周期机寻周期单斤机的亘且拽作周期.赵个机器周期S

7、1. “、- 566状怎.毎牛式恚包含鬲拍P-P2.煜一拍为一心町怦匡軀庞葯周期h因此* -牛机疇貝期尅言门牛时神胃期F丹炭軒忖-囿”*1賞硕辛为门MH卄 胖工ALE信专施频呼为多PY磐:2MIIZ第三章1. 在MCS-51单片机中,寻址方式有几种?其中对片内 RAM可以用哪几种寻址方式?对片外 RAM可以用哪几种寻址方式?答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接 寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的 寻址有绝对寻址和相对寻址。片内RAM寻址有:寄存器寻址、直接寻 址方式和寄存器间接寻址方式。

8、片外RAM寻址有:寄存器间接寻址方 式。2. 在对片外RAM单元寻址中,用Ri间接寻址与用DPTR可接寻址有什么区别?答:片外数据存储器寻址中,用 Ri间接寻址只能访问低端的256字节单元,而用DPTR乍指针间接访问可访问整个 64K字节。3. 在位处理中,位地址的表示方式有哪几种?答:1.直接位地址(00H0FF) 例如:20H2. 字节地址带位号。例如:20H.3表示20H单元的3位。3. 特殊功能寄存器名带位号。例如:P0.1表示P0 口的1位。4. 位符号地址。例如:TRo是定时/计数器T0的启动位。4. 写出完成下列操作的指令(1) Ro的内容送到R1中。MoV A R0MoV R1

9、 A(2) 片内RAM勺20H单元内容送到片内 RAM勺40H单元中。MOV 40H 20H(3) 片内RAM勺30H单元内容送到片外 RAM勺50H单元中。MOV A 30HMOV R0 #50HMOVX R0A(4) 片内RAM勺50H单元内容送到片外 RAM勺3000H单元中。MOV A 50HMOV DPTR #3000HMOVX DPTFA(5) 片外RAM勺2000H单元内容送到片内 RAM的20H单元中。MOV DPTR #2000HMOVX A DPTRMOV 20H A(6) 片外RAM勺1000H单元内容送到片外 RAM的4000H单元中MOV DPTR #1000HMOV

10、X A DPTRMOV DPTR #4000HMOV DPTRA(7) RoM勺1000H单元内容送到片内 RAM勺50H单元中。MOV A #0MOV DPTR #1000HMOVC A A+DPTRMOV 50H A(8) ROM勺1000H单元内容送到片外 RAM勺1000H单元中。MOV A #0MOV DPTR #1000HMOVC A A+DPTRMOVX DPTFA5. 区分下列指令有什么不同?(1) MOV A 20H和 MOV A #20H答:前者源操作数是直接寻址,后者源操作数立即寻址。(2) MOV A 只和 MOVX A R1答:前者源操作数是访问片内数据存储器,后者源

11、操作数访问片外数据存储器低256字节。(3) MOV A R1 和 MOV A R1答:前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。(4) MOVX A Rft MOVX A DPTR答:前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个 64K字节。(5) MOVX A DPT和 MOVC A A+DPTR答:前者源操作数是访问片外数据存储器,后者源操作数访问程 序数据存储器。6. 设片内 RAM勺(20H) =40H (40H) =10H (10H) =50H, (P1) =OCAH分析下列指令执行后片内 RAM勺20H 40H 10H单元以及P1、

12、P2的内容。MOV R0 #20H;R0=20HMOV A R0;A=40HMOV R1, A;R仁40HMOV A R1;A=10HMOV R0 P1;(40H) =0CAHMOV P2 P1;P2=0CAHMOV 10H A;(10H) =10HMOV 20H 10H;(20H) =10H结果:(20H) =10IH (10H) =10H (40H) =0CAH P2=0CAI和 P1=0CAH7. 已知(A) =02H, ( R1) =7FH) (DPTR =2FFCH 片内 RAM( 7FH) =70H 片外 RAM( 2FFEH =11H RO(2FFEH =64H 试分别写出以 下

13、各条指令执行后目标单元的内容。(1)MoV A R1 结果:累加器 A等于70H(2)MoVX DPTFA 结果:片外 RAM(2FFCH单元等于02H(3)MOVC A A+DPTR结果: 累加器A等于64H(4)XCHD A R1 结果:累加器 A等于00H,片内RAM(7FH)单元等于72H8 已知:(A) =78H (R1) =78H, (B) =04H CY=I 片内 RAM( 78H) =ODDH (80H) =6CH试分别写出下列指令执行后目标单元的结果和相应标志位的值。(1) ADD A, R1;累加器A等于55H,CY等 于 1(2) SUBB A,#77H;累加器A等于00

14、H,CY等 于 0(3) MUL AB;累加器A等于EOHB寄存器等于01H, CY等于1,OV等于0(4) DIV AB;累加器A等于1EH B寄存器等于00H, CYOV等于0(5) ANL 78H,#78H;片内RAM(78H)单元等于58H(6) ORL A,#0FH;累加器A等于7FH(7) XRL 80H,A;片内RAM(80H)等于14H9 .设(A) =83H (R0)= 17H, (17H) =34H,分析当执行完下面指令段后累加器A、Ra 17H单元的内容。ANL A, #17H;A=03HORL 17H, A;(17H) =37HXRL A, R0;A=34HCPL A;

15、A=CBH结果:A=CBH (R0) =17H (17H) =37H10.写出完成下列要求的指令。(1) 累加器A的低2位清零,其余位不变。ANL A, #11111100B(2) 累加器A的高2位置“ 1”,其余位不变ORL A, #1100OoooB(3) 累加器的高4位取反,其余位不变。XRL A, #11110000B(4) 累加器第0位、2位、4位、6位取反,其余位不变。XRL A, #01010101B 11.说明LJMP指令与AJMP指令的区别?答:LJMP指令后面提供的是16位目标地址,所以可以转移到64KB 程序存储器的任意位置,缺点是:执行时间长,字节数多。AJMP指令后带

16、的是11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址addr11 送给程序指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。12.设当前指令 CJNE A,#12H, 10H的地址是0FFEH若累加器 A的值为10H,则该指令执行后的PC值为多少?若累加器A的值为12H 呢?答:指令执行后的PC值为1011H若累加器A的值为12H贝S指 令执行后的PC值为1001H13 .用位处理指令实现 P1.4=P1.0( P1.1 P1.2 )/P1.3的逻辑功厶匕 能。程序:MOV C, P1.1ORL C, P1.2ANL C, P

17、1.0ORL C, /P1.3MOV P1.4, C14. 下列程序段汇编后,从1000H单元开始的单元内容是什么?ORG 1000HTAB DB 12H , 34HDS 3DW 5567H) 87H答:(1000H) =12H, (1001H) =34H, (1002H) =OolH (1003H) =00, (1004H) =00, (1005H) =67IH ( 1006H) =55H, (1007H) =87IH (1008H) =00H15. 试编一段程序,将片内RAM勺20H 21H 22H单元的内容依次存 入片外RAM的20H 21H 22H中。程序:MOV R0, #20HMO

18、V R2, #03HLOOP MOV A R0MOVX R0 AINC R0DJNZ R2, LOOPSJMP $16.编程实现将片外RAM的2000H2030H单元的内容,全部搬到片内RAM勺20H单元开始位置,并将源位置清零。程序:MoV RO, #20HMoV DPTR #2000HMOV R2, #31HLOOPMOVX A,DPTRMOV ROAMOV A,#00MOVX DPTRAINCDPTRINCR0DJNZ R2, LOOPSJMP $17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。程序:MOV DPTR #1000HMOV R2, #1

19、00MOV R7, #00MOV R6, #00LOOPMOVX A, DPTRADD A, R6MoV R6, AMoV A, R7ADDC A, #0MOV R7, AINC DPTRDJNZ R2, LOOPSJMP $18.编程实现R4R3R2,结果放于R7R6R5K程序:ORG 0100HMUL1 MOV A R2MOV B R3MUL AB; R2 R3,结果的低字节直接存入积的R5MOV R5 A ;结果的高字节存入 R6中暂存起来MOV R6 BMUL2 MOV A R2MOV B R4MUL AB; R2 R4,结果的低字节与 R6相加后,再存入R6中ADD A,R6MoV

20、R6 A;结果的高字节加上进位位后存入 R7MOV A B中ADDC A #00 MOV R7 A SJMP $19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、 3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系 拼装在一起放于R2中。程序:MOVC20H.0MOVA.0,CMOVC20H.1MOVA.1,CMOVC21H.2MOVA.2,CMOVC21H.3MOVA.3,CMOVC22H.4MOVA.4,CMOVC22H.5MOV A.5,CMoVC, 23H.6MOVA.6, CMOVC, 23H.7MOV A.7 , CMOV R2 A20.用查表的

21、方法实现一位十六进制数转换成ASCIIO程序:(设一位十六进制数放在 R2中,轮换的ASCII也放于R2中)C16STASCMOV DPTR #TABMOV A R2MOVC A A+DPTRMOVR2 ARETTAB DB30H, 31H, 32H, 33H, 34H, 35H, 36H, 37HDB 38H, 391H, 411H 42H, 43H, 44H, 45H, 46H21.编程统计从片外RAM2000开始的100个单元中“0”的个数放于R2中。程序:MOVDPTR #2000HMOVR3, #100MOVR2, #00LOOPMOVX A , DPTRJNZNEXTINC R2N

22、EXT INC DPTRDJNZ R3, LooPSJMP $第四章4-2有哪里些数据类型是MCS-51系列单片机直接支持的?答:见P89,基本类型:字符型,整型,长整型,浮点型,特殊功能 寄存器;构造类型:数组类型,结构体类型,共用体,枚举指针类型空类型4-3 C51特有的数据结构类型有哪些?答:特殊功能寄存器,位类型4-4 C51的存储类型有几种?它们分别表示的存储器区域是什么?答:见 P94页:存储器类型有:data, bdata,idata,pdata,xdata4-5 C51中bit位与Sbit位有什么区别?答:bit是定义一个一般的位变量;而使用 Sbit定义可位寻址字 节或是特殊

23、功能寄存器的的位,定义时必指定其位地址,其存储空间 为内部RAM中的位寻址区20H-2FH(位地址为:OoFH7F),4-6在C51通过绝对地址来访问的存储器有几种方式?答:使用C51运行库中预定义宏,通过指针访问,使用C51扩展关键字_at_4-7在C51中,中断函数与一般函数有什么不同?答:见P112页:7点4-8按指定存储器类型和数据类型,写出下列变量的说明形式答:(1)在 data 定义字符变量 var11 : Char data var11(2) 在 idata 定义整型变量 var12 : Char idata var12(3) 在Xdata定义无符号字符数组 var114 : U

24、nSigned CharXdata var134(4) 在Xdata 定义一个指向无符号字符的指针px: Un Sig nedChar xdata* PX(5) 定义可寻址位变量flag: bit flag;(6) 定义特殊功能寄存器变量 p3: Sfr p3=0xb0(7) 定义特殊功能寄存器变量 SCoN Sfr SCoN = 0x98(8) 定义16位特殊功能寄存器变量 TO: sfr16 T0=0x8a (无法真正与实际相匹配)4-9设a=3,b=4,c=5,写出下列关系表达式或逻辑表达式的结果答:(1) a+b>c && b=c ( False )(2) ab+

25、c&&b-c(TrUe)(3) !(a>b) && !c 1 (TrUe)(4) !(a+b)+c-1 &&b+c/2 (TrUe)4-10 break 与Continue 语句的区别是什么?答:见P110;使用break语句可以跳出SWitCh和循环体,提前 结束循环而接着执行循环结构下面的语句continue语句使用在循环体结构中,用于结束本次循环,跳过该 语句下面尚未执行的语句,直接进行下一否执行循环的判断。4-11用分支结构编程实现,输入” 1”时显示“ A”,输入” 2”时显 示“ B”,输入” 3”时显示“ C,输入” 4”时显

26、示“ D',输入” 5” 时结束。答:#include <reg52.h>#i nclude <stdoi.h>#defi ne UChar Un Sig ned Char#defi ne Uint Un Sig ned intUChar I;void mai n()SCanf( “ %d ,&i);SWtCh (i)CaSe 1: Printf(“ A”),break;CaSe 2: Printf(“ B”),break;CaSe 3: Printf(“C”),break;CaSe 4: Printf(“D,),break;CaSe 5: break;

27、default: Printf(“Error! ” );While(1);4-12输入3无符号数据,要求按由大到小的顺序输出解:#include <reg52.h>#i nclude <stdoi.h>#defi ne UChar Un Sig ned Char#defi ne Uint Un Sig ned intUint a,b,c;void mai n()Ui nt max, min, med;SCanf("%d%d%d", &a , &b, &c);if (a>b && b>c) max=a

28、; med=b; min=c;else if (a>b && b<c && a>c) max=a; med=c; min=b;else if (a>b && b<c && a<c) max=c; med=a; min=b;else if (b>a && b<c) max=c; med=b; min=a;else if (b>a && b>c && a>c) max=b; med=a; min=c;else max=b;

29、 med=c; min=a;Printf("%d>%d>%dn", max, med, min);4-13用3种循环结构编写程序实现输出1-10的平方和解:#include <reg52.h>#i nclude <stdio.h>#defi ne UChar Un Sig ned Char#defi ne Uint Un Sig ned intUint sum=0;void mai nUChar i,Square;for (i=1;i<=10;i+)SUm = SUm +i*i;Printf( ” sum=%d', sum)

30、;i=1;while (i<=10)SUm = SUm +i*i;i+;Printf( ” sum=%d, sum);i=1;doSUm = SUm +i*i;i+;Printf( ” i%d2=%d," i,Square); while (i>10)Printf( ” sum=%d', sum); 4-14对一个5个元素的无符号字符数组按由大到小的顺序输出解:#in elude <reg52.h>#i nclude VStdio.h>#defi ne UChar Un Sig ned Char#defi ne Uint Un Sig ned i

31、ntUint i, n=5, j, m;Uint a=210,108,65,49,72;void mai n()for (i=1; i<n; i+)for (j=0; j Vn-i; j+)if (aj<aj+1)m=aj;aj=aj+1;aj+1=m;Pri ntf(" nThe SOrted in tegers:nn");for (i=0; i<n; i+)Prin tf("%6d",ai);4-15用指针实现输入设备个无符号字符数据按由大到小的顺序输 出。#in elude <reg52.h>#i nclude <

32、;stdio.h>#defi ne UChar Un Sig ned Char#defi ne Uint Un Sig ned intUint i, n=5, j, m;Uint a=210,108,65,49,72;Uint *p;void mai n()P=a;for (i=1;i Vn ;i+)for (j=0;j Vn-i;j+)if (*(P+j)<*(P+j+1)m=*(p+j);*(P+j)=*(P+j+1);*(P+j+1)=m;Printf("nThe Sorted integers:nn");for (i=0; i<n; i+)Prin

33、 tf("%6d",ai);第六章1. 何为“准双向I/O接口”?在MCS-51单片机的四个并口中, 哪些是“准双向I/O接口”?答:准双向I/O接口是能实现输入输出功能,但在使用时只能从 输入和输出中选择一个。MCS-51单片机的四个并口中P1、P2、P3是 准双向I/O接口。2. 80C51单片机内部有几个定时/计数器?它们由哪些功能寄存 器组成?怎样实现定时功能和计数功能?答:80C51单片机内部有两个 16位的可编程定时/计数器,由THO,TLO,TH1,TL1,TMOD和TCON能寄存器组成。通过TMo中的C/T 位选择对机器周期计数实现计数功能,选择对外部脉冲计

34、数实现计数 功能。3. 定时/计数器T0有几种工作方式?各自的特点是什么?答:有四种工作方式,特点见下表:M1M0工作方 式方式说明00013位定时/计数器01116位定时/计数器1028位自动重置定时/计数器113两个8位定时/计数器(只有T0有)4. 定时/计数器的四种工作方式各自的计数范围是多少?如果要计10个单位,不同的方式初值应为多少?答:有四种方式。方式O计数范围:18192;方式1计数范围:165536;方式2计数范围:1256;方式3计数范围:1256。如果计10个单位,方式0初值为:8192-10=8182;方式1初 值为:65536-10=65526;方式2初值为:256-

35、10=246;方式2初值 为:256-10=246。5. 设振荡频率为12MHz如果用定时/计数器T0产生周期为100ms 的方波,可以选择哪几种方式,其初值分别设为多少?答:只能选择方式1,初值为65536-50000=15536。6何为同步通信?何为异步通信?各自的特点是什么?答:异步通信方式的特点是数据在线路上传送时是以一个字符(字 节)为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“ 1”。 特点是对发送时钟和接收时钟的要求相对不高, 线路简单,但传送速 度较慢。同步通信方式的特点是数据在线路上传送时以字符块为单位,一 次传送多个字符,传送时须在前面加上一个或两个同步字符,后面

36、加 上校验字符。特点是对发送时钟和接收时钟要求较高, 往往用同一个 时钟源控制,控制线路复杂,传送速度快。7. 单工、半双工和全双工有什么区别?答:单工方式只有一根数据线,信息只能单向传送;半双工方式 也只有一根数据线,但信息可以分时双向传送;全双工方式有两根数 据线,在同一个时刻能够实现数据双向传送。8. 设某异步通信接口,每帧信息格式为 10位,当接口每秒传送 1000个字符时,其波特率为多少?答:10000波特9. 串行口数据寄存器SBUFt什么特点?答:发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存 器SBUF串行口数据寄存器),执行MoV SBUF,A发送时为发送数据 寄存器,

37、执行MOV A, SBUF接收时为接收数据寄存器。10. MCS-51单片机串行口有几种工作方式?各自特点是什么?答:有四种工作方式,分别是方式 0、方式1、方式2和方式3。 其中:方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯 片扩展I/O接口。方式1,称为8位的异步通信方式,通常用于双机通信。方式2和方式3,称为9位的异步通信方式,通常用于多机通信。11. 说明SM2在方式2和方式3对数据接收有何影响。答:通过SM2对方式2和方式3数据接收进行控制,SM2=1,那 么只有接收的第9位为“ 1”才接收有效。女口 SM2=0接收的第9位 无论为1还是0都接收有效。12. 怎样来实现利

38、用串行口扩展并行输入/输出口?答:利用串行口在方式0时,当外接一个串入并出的移位寄存器, 就可以扩展并行输出口;当外接一个并入串出的移位寄存器时, 就可 以扩展并行输入口。13. 什么是中断、中断允许和中断屏蔽?答:在计算机中,由于计算机内外部的原因或软硬件的原因,使CPU从当前正在执行的程序中暂停下来, 而自动转去执行预先安排好 的为处理该原因所对应的服务程序。 执行完服务程序后,再返回被暂 停的位置继续执行原来的程序,这个过程称为中断,实现中断的硬件 系统和软件系统称为中断系统。中断允许是允许中断请求送 CPUr生 中断,中断屏蔽是禁止中断请求信号送 CPl产生中断。14. 8051有几个

39、中断源?中断请求如何提出?答:MCS-51单片机提供 5个硬件中断源:两个外部中断源Into (P3.2)和INTT(P3.3),两个定时/计数器T0和T1中断;1个串行 口中断。外部中断源into和INTT的中断请求信号从外部引脚 P3.2和P3.3 输入;两个定时/计数器T0和T1的溢出中断TF0和TF1定时/计数器 T0(或T1)溢出时提出;串行口中断由发送中断标志 T1和接收中断标 志R1产生。15. 8051的中断源中,哪些中断请求信号在中断响应时可以自动清除?哪些不能自动清除?应如何处理?答:工作在边沿触发方式下的两个外部中断源和两个定时/计数器中断中断请求信号在中断响应时可以自动

40、清除,工作在电平触发方式下的两个外部中断源和串行口中断不能自动清除。工作在电平触发方式下的两个外部中断源的中断请求信号通过外加硬件和加软件的方 式清除,串行口中断标志 T1和标志R1完全由软件清除。16. 8051的中断优先级有几级?在形成中断嵌套时各级有何 规定?答:8051的中断优先级有两级;形成中断嵌套时规定 (1)正 在 进行的中断过程不能被新的同级或低优先级的中断请求所中断,直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令 后,CPU才响应新的中断请求。(2)正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。(3)CPU同时接收到几个中断请求时

41、,首先响应优先级最高的中断请求。17. 设8051的P1中各位接发光二极管,分别用汇编语言和 C 语言编程实现逐个轮流点亮二极管,并循环显示。18. 8051系统中,已知振荡频率为12MHz用定时/计数器T0, 实现从P1.0产生周期为2ms的方波。要求分别用汇编语言和 C语言 进行编程。解:分析:从P1.0输出周期为2ms的方波,只须P1.0每1ms取 反一次则可。当系统时钟为12MHZ定时/计数器T0工作于方式1时, 最大的定时时间为65.536ms,满足1ms的定时要求,方式控制字应 设定为00000001B (01H)o定时1ms计数值N为1000,初值 X=65536-1000=64

42、536,则 THO=FCH TL0=18H采用中断处理方式:程序如下:ORG 0000HLJMP MAINORG 000BH;中断处理程序MOV TL0, #18HCPL P1.0MOV TH0 #0FCHRETlORG 0100H;主程序MAIN MOV TMO,#01HMOV TH0 #0FCHMOV TL0, #18HSETB EASETB ET0SETB TR0SJMP $END19. 8051系统中,已知振荡频率为12MHz用定时/计数器T1, 实现从P1.1产生周期为2s的方波。要求分别用汇编语言和 C语言进 行编程。解:从P1.1产生2s的方波,应产生500ms的周期性的定时,定

43、时到 对P1.1取反就可实现。由于定时时间较长,一个定时 /计数器T1不 能直接实现,采用定时/计数器T1产生周期性为10ms的定时,然后 用一个寄存器R2对10ms计数100次来实现。系统时钟为12MHZ定 时/计数器T1定时10ms计数值N为10000,只能选方式1,方式控 制字为 00010000B (10H),初值 X:X=65536-10000=55536=1101100011110000BMOV TL1, #0F0H则 TH1 = 11011000B=D8, TL1 = 1111OOOOB=FoH定时/计数器T1采用中断处理方式。汇编程序:ORG 0000HLJMP MAlNORG

44、 001BHLJMP INTT1ORG 0100HMAIN MOV TMO,#10HMOV TH1 #0D8HMOV TL1, #0F0HMOV R2 #00HSETB EASETB ET1SETB TR1SJMP $INTT1:MOV TH1 #0D8HINC R2CJNE R2, #64H NEXTCPL P1.1MoV R2 #00HNEXT RETIEND20. 8051系统中,已知振荡频率为12MHz用定时/计数器T1, 实现从P1.1产生高电平宽度为10ms,低电平宽度为20ms的矩形波。 要求分别用汇编语言和 C语言进行编程。解:本题处理方式有多种,这里采用对定时/计数器T1形成10ms周期 定时,用R2对10ms计数,当计到1,则对P1.1置1,当计到2和3, 则对P1.1置O来实现。用定时/计数器T1形成10ms周期定时见上题。程序如下:ORG 0000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN MOV T

温馨提示

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

评论

0/150

提交评论