单片机应用技术复习题及答案-16电科20186_第1页
单片机应用技术复习题及答案-16电科20186_第2页
单片机应用技术复习题及答案-16电科20186_第3页
单片机应用技术复习题及答案-16电科20186_第4页
单片机应用技术复习题及答案-16电科20186_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

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

文档简介

1、单片机应用技术复习题及答案一、简答题(回答要点,并简明扼要解释)第一、二章1 .MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。答:MCS51系列单片机上有1个8位CPU128B的RAM21个SFR4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM8051内有4KB的掩膜ROM8751内有4KB的EPROM2 .在MCS-51单片机系统中,外接程序存储器和数据存储器共用16位地址线和8位数据线,会不会发生冲突,并说明为什么?答:不会。因为MCS-51单片机访问外部程序存储器用的指针是PC,控制线为PSEN

2、,而访问外部数据存储器时,使用的指针是DPTR有效的控制信号是RD,WR。所以不会发生冲突。3 .MCS-51单片机的内部RAMt有128个字节存储单元(0047FH),根据功能可将其划分为三个区域,试述这三个区域的特点及其首末地址答:80C51单片机白片内RAMf氐128单元分为:1)寄存器区(00H-1FH),32字节,共有四个寄存器组,由RS1和RS0设置,主要为寄存器访问方式,常用数据存储。2)位寻址区(20H-2FH),16字节,128个位。主要用于位数据存放,也可用于存放字节数据。3)普通用户RAMK(30H7FH),80字节,只用于存放字节数据。4 .存储器的容量如下所示,若它的

3、首地址为0000H,写出它的末地址。(1)存储容量1KB,末地址为多少?(2)存储容量4KB,末地址为多少?答:(1)末地址为3FFH;(2)末地址为FFFH5 .简述累加器的ACC的作用答:8位专用寄存器。(2) 运算时存放一个操作数。(3) 运算后存放运算结果,所以称它为累加器。6. DPTR是什么寄存器?它的作用是什么?它是由哪几个寄存器组成?答:DPT觉数据寄存器;作用:1)在访问外部数据存储器时用DPTR作为地址指针,寻址整个64KB外部数据存储器空间;2)用DPTR作为基址寄存器,对程序存储器空间进行访问。DPTR由DPL和DPH两个8位寄存器构成。7. 说明MCS-51的外部引脚

4、EA的作用?答:为访问内/外部程序存储器控制信号。高电平时,对ROM勺读操作先从内部4KB开始,当地址范围超出4KB时自动切换到外部进行;当为低电平,对ROM的读操作限定在外部程序存储器。8. 开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPUffl何确定和改变当前工作寄存器组?答:开机复位后,CPU使用的是0组工作寄存器;它们的地址是什么00H07H;CPU过PSW勺PSW.4PSW.3两位来确定和改变当前工作寄存器组。9. MCS-51单片机的时钟周期与振荡周期之间有什么关系?一个机器周期的时序如何划分?答:时钟周期是单片机最基本的时间单位。机器周期则是完成某一个规定操作所

5、需的时间。一个机器周期为6个时钟周期,共12个振荡周期性,依次表示为S1P1、S1P2、,,S6P1、S6P2。10. 单片机的复位(RST操作有几种方法,复位功能的主要作用。答:单片机的复位操作方式有:1、上电复位;2、手动复位。复位功能的主要作用是:复位时,PC初始化为0000H,使MCS-51单片机从0000H开始执行程序。11. 简述堆栈。(1)在程序中断或子程序调用时,为了保护返回地址(断点)和保护现场而设立的RAMKo(2)用MOVSP#DATA旨令建立堆栈。(3)存放数据按“后进先出”原则进行。(4)利用PUSHPOP指令即可进行进栈、出栈操作。第三章12.MCS-51指令系统有

6、哪几种寻址方式?答:MCS-51指令系统有7种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,相对寻址,基址寄存器加变址寄存器间接寻址(变址寻址),位寻址等方式。13. MCS-51单片机对I/O口操作有哪几类指令?并要求每类指令写出两条指令答:单片机对I/O口操作有两类指令读引脚指令和读修改写指令例如读引脚指令MOVA,P1;ANLA,P1读修改写指令ANLP1,#0FH;ORLP1,#0FH14. 若SP=60H标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行指令如下:2000HLCALLLABEL后,堆栈指针SP和堆栈内容发生了什么变化?PC

7、的值等于什么?如果将指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?答:1)SP=SP+1=61H(61H尸PC的彳氐字节=03HSP=SP+1=62H(62H尸PC的高字节=20H2)PC=3456H3)可以4)2KB=2048Byte第四章15. 为什么外扩存储器时,P0口要外接锁存器,而P2口却不接?答:P0口要传送外部数据存储器的低8位地址和8位数据,而P2口只传送外部数据存储器的高8位地址。16. 常用的I/O接口编址有哪两种方式?它们各有什么特点?MCS-51的I/O端口编址采用的是哪种方式?答:一.独立编址方式:独立编址方式就是I/O地址

8、空间和存储器地址空间分开编址。独立编址的优点是I/O地址空间和存储器地址空间相互独立,界限分明。但是,却需要设置一套专门的读写I/O的指令和控制信号。二.统一编址方式:这种编址方式是把I/O端口的寄存器与数据存储器单元同等对待,统一进行编址。统一编址的优点是不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强大。MCS-51单片机使用的是I/O和外部数据存储器RAM一编址的方式。17. MCS-51采用6MHz的晶振,定时0.5ms,如用定时器方式1时的初值(16进制数)应为多少?(写出计算过程)答:T0初值=216-500科m/2dm=65536-250=6

9、5286=FF06H18. 8051的定时/计数器T0的有几种工作模式,对各工作模式作简单的叙述。答:定时/计数器T0的有4种工作模式:方式0:13位定时/计数器;方式1:16位定时/计数器;方式2:8位重装初彳1的定时/计数器;方式3:2个独立的8位定时/计数器,T1用作波特率发生器。19. 定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。20. THX与TLX(X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当

10、前计数器计满后才能刷新?答:THX与TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值是立即刷新。但在读THXTLX的值时,应该先读THX值,后读TLX,再读THX若两次读得THX相同,则可确定读得的内容正确。若前后两次读得的THX有变化,再重复上述过程。21. MCS51的中断系统有几个中断源?几个中断优先级?如何用指令设置各中断源的优先级别?如果同一级别同时存在多个中断申请时,CPU安什么顺序响应(按自然优先级顺序写出各个中断源)?各个中断源的入口地址是多少?;答:MCS5伸片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现

11、同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH0013H、001BH0023H22. 定时器T1中断,用指令如何实现?CPU响应中断后,转到何处开始执行服务程序?此中断服务程序的最后一条指令是什么?功能怎样?答:1)用指令SETBTF1产生中断。2) CPUP向应中断后,转到001BH处开始执行服务程序。3)中断服务程序的最后一条指令是RETI4) RETI的功能是将断点地址弹给PC,返回断点。23. CPU响应中断的条件有哪些?答:1、CPU有处在一个同级或高级的中断服务中2、查询中断请求的机器周期

12、是当前指令的最后一个机器周期3、当前指令不是返回指令(RET,RETI)或访问IE、IP的指令。24. 想将中断服务程序放置在程序存储区的任意区域,在程序中应该作何种设置?请举例加以说明。答:以外部中断0为例说明,外部中断0的入口地址是0003H,想将外部中断0的中断服务程序放置在程序存储区的任意区域可使用跳转指令。如:ORG0003HLJMPINT0INT0:RETI25. 已知一MCS5伸片机系统使用12MHz的外部晶体振荡器,计算:1)该单片机系统的状态周期与机器周期各为多少?2)当单片机的定时器0(T0)工作在方式2时,T0的最大定时时间为多少?答:1)状态周期=2/fosc=0.16

13、7mm机器周期=12/fosc=1mm2) Tmax=28X机器周期=256X1=256科m26. 在由8031CPU芯片设计的系统中,若规定外部中断0为电平触发方式,高优先级,此时,特殊功能寄存器TCONIE、IP为多少?答:TCON=00HIE=81HIP=01H若规定外部中断1边沿触发方式,高优先级,写出初始化程序。答:初始化程序如下:SETBEASETBEX1SETBPX1CLRIT127. 编制中断服务程序时,为什么在主程序的初始化程序中,必须设置SETBEA这条指令,以及在中断服务程序中为什么通常需要保护现场和恢复现场?答:中断允许寄存器IE中有1个总的开关中断控制位EA当EA=0

14、时,所有的中断请求被屏蔽,CPU接受任何中断;只有当EA=1时,CPU才开放中断。所以主程序的初始化程序中,必须设置SETBEA这条指令。现场是指中断时刻单片机中某些寄存器和储存器单元中的数据或状态,为了使中断服务程序的执行不破坏这些数据和状态,以免在中断返回后影响主程序的运行,因此要这些数据和状态送入堆栈保存,这就是现场保护。中断结束后,在返回主程序谦,则需要把保存的现场数据和状态从堆栈中弹出,以恢复那些寄存器和存储器单元中的原有内容,这就是现场恢复。24.中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?答:中断服务子程序返回指令RETI和普通子程序返回指令RET的区别在

15、于:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断。28. 8051的串行通信的有几种工作模式,请对各工作模式作简单的叙述。答:串行通信共有4种工作模式,分别是:模式0:8位同步移位寄存器;TXD时钟端,RXD数据端,波特率fosc/12模式1:10位两机的异步通信;TXD数据发送端,RXD数据接收端,波特率可变,曾x(定时器】的溢出率人:怎T)模式2:11位可多机的异步通信;TXD数据发送端,RXD数据接收端,波特率fosc/32或fosc/64。模式3:11位可多机的异步通信;TXD数据发送端,RXD数据接收端,波特率可变,波特率可变,公式与模式1同。29. 通信波特率为2

16、400bps,fosc=11.2592MHZT1工作在模式2,其SMOD=0t算T1的初值X答:通信波特率为2400bps,fosc=11.2592MHZT1工作在模式2,其SMOD=0f算T1的初值X。根据波特率=,得出n=76800根据,得出X=244,即X=F4H二、编程题1、从P1口引脚读入数据,并将该数据写入外部RAM2100F元。MOVP1,#0FFHMOVDPTR,#2100HMOVA,P1MOVDPTR,A2、将内部RAM30Hl元的内容求补后,送回30Hll元。MOVA,30HCPLAADDA,#1MOV30H,A3、使外部RAM2100年元内容的高两位清“0”,其余位变反。

17、MOVDPTR,#2100HMOVA,DPTRCPLAANLA,#3FHMOVDPTR,A4、将R6W存器的内容取反,送到内部RAM20Hl元。MOVA,R6CPLAMOVR6,AMOV20H,A5、将R箭存器的内容高4位与低4位交换,送到内部RAM20咪元。MOVA,R6SWAPAMOVR6,AMOV20H,A6、 将程序存储器0600H单元内容送到内部RAM30加元中。MOVDPTR,#0600HCLRA(或MOVA,#0HMOVCA,A+DPTRMOV30H,A7、 请将ROM1000H元内容送外部RAM1000Hl元。MOVDPTR,#1000HCLRA(或MOVA,#0HMOVCA,

18、A+DPTRMOVXDPTR,A8、 请将ROM1000H元内容送R邨元。MOVDPTR,#1000HCLRA(或MOVA,#0H)MOVCA,A+DPTRMOVR6,A9、 将外部RAM2100H单元的内容取反后,送回原单元。MOVDPTR,#2100HMOVXA,DPTRCPLAMOVXDPTR,A10、将外部RAM2200H单元内容的高4位?#“0”,低4位不变。MOVDPTR,#2200HMOVXA,DPTRANLA,#0FHMOVXDPTR,A11、将外部RAM3100H单元的内容求补后,送回原单元中。MOVDPTR,#3100HMOVXA,DPTRCPLAADDA,#01H(或IN

19、CA)MOVXDPTR,A12、将内部RAM30H单元的内容求补后,送到31H单元。MOVA,30HCPLAADDA,#1(或INCA)MOV31H,A13、使外部RAM2000H单元内容的高两位置“1”,其余位变反。MOVDPTR,#2000HMOVXA,DPTRCPLAORLA,#0C0HMOVXDPTR,A14、将工作寄存器R7勺内容求补。MOVA,R7CPLAINCA(或ADDA,#1)MOVR7,A15、编制定时器T1中断初始化程序,采用方式2。MOVTMOD,#20HMOVTL1,#DATAMOVTH1,#DATASETBTR1SETBET1SETBEA16、编制定时器T0中断初始

20、化程序,采用方式1。MOVTMOD,#01HMOVTL0,#DATA1MOVTH0,#DATA2SETBTR0SETBET0SETBEA17、编制中断初始化程序,外部中断叫中断(边沿触发),定时器0开中断,定时器1关中断。SETBIT0SETBEX0STEBET0CLRET1SETBEA18、编制中断初始化程序,外部中断1开中断(边沿触发)、定时器0关中断、定时器1开中断、串行口关中断。SETBIT1SETBEX1CLRET0SETBET1CLRESSETBEA19、编程将内部RAM25闲26Hl元的BC网转换成压缩BC网存放在30Hll元中。MOVA,26HSWAPAORLA,25HMOV3

21、0H,A20、编程将内部RAM30闲31Hl元中的低4位合并为一个字节,存放在40Hli元中.ORG0000HMOVA,30HANLA,#0FHSWAPAMOVB,AMOVA,31HANLA,#0FHADDA,BMOV40H,ARET21、编程将内部RAM30+3FF#元内容送到外部RAM1000H-100FHII元。ORG0000HMOVR0,#30HMOVDPTR,#1000HMOVR7,#10HAT0:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR7,AT0RET22、编程将程序存储器2000H200FHII元内容送到内部RAM40H-4FH1|元。ORG0000H

22、MOVR0,#40HMOVDPTR,#2000HMOVR7,#10HAT0:CLRAMOVCA,A+DPTRMOVR0,AINCR0INCDPTRDJNZR7,AT0RET23、编程将外部RAM1500H-1507H单元内容送到内部RAM30+37Hll元。ORG0000HMOVR0,#30HMOVDPTR,#1500HMOVR7,#8AT0:MOVXA,DPTRMOVR0,AINCR0INCDPTRDJNZR7,AT0RET24、编写统计内部RAM20Hl元中所存的单字节数二进制位中1的个数,存于21H中。ORG0000HAT0:MOVR1,#00HMOVR7,#08HMOVA,20HATI

23、:JBACC.7,AT2SJMPAT3AT2:INCR1AT3:RLADJNZR7,AT1MOV21H,R1END25、编写一循环程序,将内部RAM勺20H2FH16个连续单元清零。ORG0000HAT0:MOVR0,#20HMOVR2,#0FHCLRAAT1:MOVR0,AINCR0DJNZR2,AT1RET26、编程程序,将外部RAM4000H40FFHI元内容全部置“1”。ORG0000HAT0:MOVA,#0FFHMOVR0,#0FFHMOVDPTR,#4000HAT1:MOVXDPTR,AINCDPTRDJNZR0,AT1END27、试编写程序,查找在内部RAMJ40H60Hli元中

24、是否有0FFH一数据。若有,则将51Hli元置为“00HT;若未找到,则将51H单元置为“01H”ORG0000HAT0:MOVR0,#40HMOVR2,#20HAT1:MOVA,R0CJNEA,#0FFH,AT2MOV51H,#00HSJMPAT3AT2:INCR0DJNZR2,AT1MOV51H,#01HAT3:END28、编写一循环程序,查找内部RAM30H50H元中出现FFh数,并将查找搭结果存入51Hll元。ORG0000HAT0:MOVR0,#30HMOVR2,#20HMOVR3,#00HATI:MOVA,R0CJNEA,#0FFH,AT2INCR3AT2:INCR0DJNZR2,

25、ATIMOV51H,R3END29、设在内RAM40H开始的存储区有若干个字符和数字,已知最后一个为字符“F”(并且只有一个),试统计这些字符数字的个数,结果存入30Hm元中。ORG0000HAT0:MOVR0,#40HCLRAAT1:CJNER0,#46H,AT2SJMPAT3AT2:INCAINCR0SJMPAT1AT3:INCAMOV30H,AEND三、应用题1 .设计一个循环灯程序,如图所示,使这些发光二极管每次只点亮一个(高电平亮),依次一个一个地点亮,循环不止(从D0开始)。ORG0000HAT0:MOVR7,#8MOVA,#01HAT1:MOVP0,ARLAACALLD1MSDJ

26、NZR7,AT1SJMPAT0D1MS:RETEND2 .根据图示电路(P0接LED,设计一个程序,开机后LED显示0,以后每按一次键(P2.7),显示的数字加1,显示9后,再回到0,并照此循环。(LED为共阴极,0-9的字形段码依次为3FH,06H,5BH,4FH,66H,6DH7DH07H,7EH,6FH)ORG0000HAT0:MOVDPTR,#TABMOVR7,#10MOVR1,#00HAT1:MOVA,R1MOVCA,A+DPTRMOVP0,AJBP2.7,$INCR1DJNZR7,AT1SJMPAT0LAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH071H7EH,

27、6FHEND3 .设计一个循环灯程序,如图所示,使这些发光二极管每次只点亮一个并闪烁10次(高电平亮),再依次一个一个地点亮闪烁10次,循环不止(从D0开始)。ORG0000HAT0:MOVA,#01HAT1:MOVR7,#10AT2:MOVP0,AACALLD1MSMOVA,#00HACALLD1MSDJNZR7,AT2RLASJMPAT1D1MS:RETEND4 .用8051的P1口接8个发光二极管,由/INT0接一按键开关,开始P1.0的LED亮(高电平亮):以后由/INT0按键每中断一次,下一个LED亮,顺序下移,且每次只一个LED亮,周而复始。请编制程序。ORG0000HAJMPAT

28、0ORG0003HAJMPAT1ORG0040HAT0:MOVA,#01HMOVP1,ASETBEASETBEX0SETBIT0SJMP$AT1:RLAMOVP1,ARET1END5 .用8051的P0口接8个发光二极管,P1口接8个开关。每按一次开关K产生一个负脉冲作用于INT1,作为中断请求信号。单片机每响应一次中断请求,就从开关读入数据,然后送到发光二极管显示。ORG0000HAJMPAT0ORG0013HAJMPAT1ORG0040HAT0:SETBEX1SETBIT1SETBEASJMP$AT1:MOVP1,#0FFHMOVA,P1MOVP0,ARETIEND6 .用8051的P0.

29、4-P0.7口接4个发光二极管,P1.0-P1.3口接4个开关。每按一次开关K产生一个负脉冲作用于INT0,作为中断请求信号。单片机每响应一次中断请求,就从开关读入数据,然后送到发光二极管显示。ORG0000HAJMPAT0ORG0003HAJMPAT1ORG0040HAT0:SETBEX0SETBIT0SETBEASJMP$AT1:MOVP1,#0FFHMOVA,P1SWAPAMOVP0,ARETIEND7 .8051单片机P2口的低4位输入开关设置的4位二进制数,用P1口输出控制一个共阴七段LED显示器,要求每当INT0有一个跳变时单片机从P2口输入一个数据,并将其显示在七段LED上。请编制该程序。ORG0000HAJMP

温馨提示

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

评论

0/150

提交评论