《单片机应用技术》复习题及答案电科2018.doc

上传人:s****u 文档编号:12767412 上传时间:2020-05-23 格式:DOC 页数:14 大小:117KB
返回 下载 相关 举报
《单片机应用技术》复习题及答案电科2018.doc_第1页
第1页 / 共14页
《单片机应用技术》复习题及答案电科2018.doc_第2页
第2页 / 共14页
《单片机应用技术》复习题及答案电科2018.doc_第3页
第3页 / 共14页
点击查看更多>>
资源描述
单片机应用技术复习题及答案一、简答题(回答要点,并简明扼要解释)第一、二章1 MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。答:MCS51系列单片机上有1个8位CPU、128B的RAM、21个SFR、4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM;8051内有4KB的掩膜ROM;8751内有4KB的EPROM。2 在MCS-51单片机系统中,外接程序存储器和数据存储器共用16位地址线和8位数据线,会不会发生冲突,并说明为什么?答:不会。 因为MCS-51单片机访问外部程序存储器用的指针是PC,控制线为,而访问外部数据存储器时,使用的指针是DPTR,有效的控制信号是,。所以不会发生冲突。3 MCS-51单片机的内部RAM共有128个字节存储单元(00H7FH),根据功能可将其划分为三个区域,试述这三个区域的特点及其首末地址答:80C51单片机的片内RAM低128单元分为:1)寄存器区(00H1FH),32字节,共有四个寄存器组,由RS1和RS0设置,主要为寄存器访问方式,常用数据存储。2)位寻址区(20H2FH),16字节,128个位。主要用于位数据存放,也可用于存放字节数据。3)普通用户RAM区(30H7FH),80字节,只用于存放字节数据。4 存储器的容量如下所示,若它的首地址为0000H,写出它的末地址。(1)存储容量1KB,末地址为多少?(2)存储容量4KB,末地址为多少?答:(1)末地址为3FFH; (2)末地址为FFFH5 简述累加器的ACC的作用答:(1)8位专用寄存器。 (2)运算时存放一个操作数。 (3)运算后存放运算结果,所以称它为累加器。6 DPTR是什么寄存器?它的作用是什么?它是由哪几个寄存器组成?答:DPTR是数据寄存器;作用:1)在访问外部数据存储器时用DPTR 作为地址指针,寻址整个64KB 外部数据存储器空间;2)用DPTR 作为基址寄存器,对程序存储器空间进行访问。DPTR 由DPL 和DPH两个8位寄存器构成。7 说明MCS-51的外部引脚EA的作用?答:为访问内/外部程序存储器控制信号。 高电平时,对ROM的读操作先从内部4KB开始,当地址范围超出4KB时自动切换到外部进行;当为低电平,对ROM 的读操作限定在外部程序存储器。8 开机复位后,CPU 使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?答:开机复位后,CPU 使用的是0组工作寄存器; 它们的地址是什么00H07H; CPU通过PSW 的PSW.4、PSW.3两位来确定和改变当前工作寄存器组。9 MCS-51单片机的时钟周期与振荡周期之间有什么关系?一个机器周期的时序如何划分?答:时钟周期是单片机最基本的时间单位。机器周期则是完成某一个规定操作所需的时间。一个机器周期为6个时钟周期,共12个振荡周期性,依次表示为S1P1、S1P2、S6P1、S6P2。10 单片机的复位(RST)操作有几种方法,复位功能的主要作用。答:单片机的复位操作方式有:1、上电复位;2、手动复位。 复位功能的主要作用是:复位时,PC初始化为0000H,使MCS-51单片机从0000H开始执行程序。11 简述堆栈。(1)在程序中断或子程序调用时,为了保护返回地址(断点)和保护现场而设立的RAM区。(2)用MOV SP,#DATA指令建立堆栈。(3)存放数据按“后进先出”原则进行。(4)利用PUSH、POP指令即可进行进栈、出栈操作。第三章12 MCS-51指令系统有哪几种寻址方式?答:MCS-51指令系统有7种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,相对寻址,基址寄存器加变址寄存器间接寻址(变址寻址),位寻址等方式。13 MCS-51单片机对I/O口操作有哪几类指令?并要求每类指令写出两条指令答:单片机对I/O口操作有两类指令 读引脚指令和读修改写指令 例如读引脚指令MOV A, P1; ANL A,P1 读修改写指令 ANL P1,#0FH ;ORL P1,#0FH14 若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行指令如下: 2000H LCALL LABEL 后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL 直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?答:1)SP=SP+1=61H (61H)=PC的低字节=03H SP=SP+1=62H (62H)=PC的高字节=20H 2)PC=3456H 3)可以 4)2KB2048 Byte第四章15 为什么外扩存储器时,P0口要外接锁存器,而P2口却不接?答:P0口要传送外部数据存储器的低8位地址和8位数据,而P2口只传送外部数据存储器的高8位地址。16 常用的I/O接口编址有哪两种方式?它们各有什么特点?MCS-51的I/O端口编址采用的是哪种方式?答:一.独立编址方式:独立编址方式就是I/O地址空间和存储器地址空间分开编址。独立编址的优点是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-500m/2m =65536-250 = 65286 =FF06H 18 8051的定时/计数器T0的有几种工作模式,对各工作模式作简单的叙述。答: 定时/计数器T0的有4种工作模式:方式0:13位定时/计数器;方式1:16位定时/计数器;方式2:8位重装初值的定时/计数器;方式3:2个独立的8位定时/计数器, T1用作波特率发生器。19 定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。20 THX与TLX(X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新?答:THX与TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值是立即刷新。但在读THX、TLX的值时,应该先读THX值,后读TLX,再读THX。若两次读得THX相同,则可确定读得的内容正确。若前后两次读得的THX有变化,再重复上述过程。21 MCS51的中断系统有几个中断源?几个中断优先级?如何用指令设置各中断源的优先级别?如果同一级别同时存在多个中断申请时,CPU按什么顺序响应(按自然优先级顺序写出各个中断源)?各个中断源的入口地址是多少?;答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H22 定时器T1中断,用指令如何实现?CPU响应中断后,转到何处开始执行服务程序?此中断服务程序的最后一条指令是什么?功能怎样?答: 1)用指令SETB TF1 产生中断。 2)CPU响应中断后,转到001BH处开始执行服务程序。 3)中断服务程序的最后一条指令是 RETI 4)RETI的功能是将断点地址弹给PC,返回断点。23 CPU响应中断的条件有哪些?答:1、CPU没有处在一个同级或高级的中断服务中2、查询中断请求的机器周期是当前指令的最后一个机器周期3、当前指令不是返回指令(RET,RETI)或访问IE、IP的指令。24 想将中断服务程序放置在程序存储区的任意区域,在程序中应该作何种设置?请举例加以说明。答:以外部中断0为例说明,外部中断0的入口地址是0003H,想将外部中断0的中断服务程序放置在程序存储区的任意区域可使用跳转指令。如: ORG 0003H LJMP INT0 INT0: RETI 25 已知一MCS51单片机系统使用12MHZ的外部晶体振荡器,计算:1)该单片机系统的状态周期与机器周期各为多少?2)当单片机的定时器0(T0)工作在方式2时,T0的最大定时时间为多少?答:1)状态周期=2/fosc=0.167m机器周期=12/fosc=1m 2)TMAX =28机器周期=2561=256m 26 在由8031CPU芯片设计的系统中,若规定外部中断0为电平触发方式,高优先级,此时,特殊功能寄存器TCON、IE、IP为多少?答:TCON=00H IE=81H IP=01H若规定外部中断1边沿触发方式,高优先级,写出初始化程序。答:初始化程序如下:SETB EA SETB EX1 SETB PX1CLR IT127 编制中断服务程序时,为什么在主程序的初始化程序中,必须设置 SETB EA 这条指令,以及在中断服务程序中为什么通常需要保护现场和恢复现场?答:中断允许寄存器IE中有1个总的开关中断控制位EA,当EA=0时,所有的中断请求被屏蔽,CPU不接受任何中断;只有当EA=1时,CPU才开放中断。所以主程序的初始化程序中,必须设置 SETB EA 这条指令。 现场是指中断时刻单片机中某些寄存器和储存器单元中的数据或状态,为了使中断服务程序的执行不破坏这些数据和状态,以免在中断返回后影响主程序的运行,因此要这些数据和状态送入堆栈保存,这就是现场保护。中断结束后,在返回主程序谦,则需要把保存的现场数据和状态从堆栈中弹出,以恢复那些寄存器和存储器单元中的原有内容,这就是现场恢复。24. 中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?答:中断服务子程序返回指令RETI和普通子程序返回指令RET的区别在于:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断。28 8051的串行通信的有几种工作模式,请对各工作模式作简单的叙述。 答: 串行通信共有4种工作模式 ,分别是:模式0:8位同步移位寄存器;TXD时钟端,RXD数据端,波特率fosc/12模式1:10位两机的异步通信;TXD数据发送端,RXD数据接收端,波特率可变,模式2:11位可多机的异步通信;TXD数据发送端,RXD数据接收端,波特率fosc/32或fosc/64。模式3: 11位可多机的异步通信;TXD数据发送端,RXD数据接收端,波特率可变,波特率可变,公式与模式1同。29 通信波特率为2400bps,fosc=11.2592MHZT1工作在模式2,其SMOD=0计算T1的初值X。答: 通信波特率为2400bps,fosc=11.2592MHZT1工作在模式2,其SMOD=0计算T1的初值X。根据 波特率= ,得出n=76800 根据 ,得出X=244,即X=F4H二、编程题 1、 从P1口引脚读入数据,并将该数据写入外部RAM 2100H单元。 MOV P1,#0FFH MOV DPTR,#2100H MOV A,P1 MOV DPTR,A 2、 将内部RAM 30H单元的内容求补后,送回30H单元。 MOV A,30H CPL A ADD A,#1 MOV 30H,A 3、 使外部RAM 2100H单元内容的高两位清“0”,其余位变反。 MOV DPTR,#2100H MOV A,DPTR CPL A ANL A,#3FH MOV DPTR,A 4、 将R6寄存器的内容取反,送到内部RAM 20H单元。 MOV A,R6 CPL A MOV R6,A MOV 20H, A5、 将R6寄存器的内容高4位与低4位交换,送到内部RAM 20H单元。 MOV A,R6 SWAP A MOV R6,A MOV 20H, A6、 将程序存储器 0600H单元内容送到内部RAM 30H单元中。 MOV DPTR,#0600H CLR A (或MOV A,#0H) MOVC A,A+DPTR MOV 30H,A 7、 请将ROM 1000H单元内容送外部RAM 1000H单元。 MOV DPTR,#1000H CLR A (或MOV A,#0H) MOVC A,A+DPTR MOVX DPTR,A 8、 请将ROM 1000H单元内容送R6单元。 MOV DPTR,#1000H CLR A (或MOV A,#0H) MOVC A,A+DPTR MOV R6,A 9、 将外部RAM 2100H单元的内容取反后,送回原单元。 MOV DPTR,#2100H MOVX A,DPTR CPL A MOVX DPTR,A 10、 将外部RAM 2200H单元内容的高4位清“0”,低4位不变。 MOV DPTR,#2200H MOVX A,DPTR ANL A,#0FH MOVX DPTR,A 11、 将外部RAM 3100H单元的内容求补后,送回原单元中。 MOV DPTR,#3100H MOVX A,DPTR CPL A ADD A,#01H (或 INC A) MOVX DPTR,A 12、 将内部RAM 30H单元的内容求补后,送到31H单元。 MOV A,30H CPL A ADD A,#1 (或 INC A ) MOV 31H,A 13、 使外部RAM 2000H单元内容的高两位置“1”,其余位变反。 MOV DPTR,#2000H MOVX A,DPTR CPL A ORL A,#0C0H MOVX DPTR,A 14、 将工作寄存器R7的内容求补。 MOV A,R7 CPL A INC A (或 ADD A,#1) MOV R7,A 15、 编制定时器T1中断初始化程序,采用方式2。 MOV TMOD,#20H MOV TL1,#DATA MOV TH1,#DATA SETB TR1 SETB ET1 SETB EA16、 编制定时器T0中断初始化程序,采用方式1。MOV TMOD,#01H MOV TL0,#DATA1 MOV TH0,#DATA2SETB TR0 SETB ET0 SETB EA17、 编制中断初始化程序,外部中断0开中断(边沿触发),定时器0开中断,定时器1关中断。 SETB IT0 SETB EX0 STEB ET0 CLR ET1 SETB EA18、 编制中断初始化程序,外部中断1开中断(边沿触发)、定时器0关中断、定时器1开中断、串行口关中断。SETB IT1 SETB EX1 CLR ET0 SETB ET1 CLR ESSETB EA19、 编程将内部RAM 25H和26H单元的BCD码转换成压缩BCD码存放在30H单元中。MOV A, 26HSWAP A ORL A, 25H MOV 30H, A20、 编程将内部RAM 30H和31H单元中的低4位合并为一个字节,存放在40H单元中. ORG 0000H MOV A, 30HANL A, #0FHSWAP AMOV B, AMOV A,31HANL A,#0FHADD A, B MOV 40H,ARET21、 编程将内部RAM 30H3FH单元内容送到外部RAM 1000H100FH单元。 ORG 0000HMOV R0,#30H MOV DPTR,#1000H MOV R7,#10H AT0:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R7,AT0 RET22、 编程将程序存储器 2000H200FH单元内容送到内部RAM 40H4FH单元。 ORG 0000HMOV R0,#40H MOV DPTR,#2000H MOV R7,#10H AT0:CLR AMOVC A, A+DPTRMOV R0,A INC R0 INC DPTR DJNZ R7,AT0 RET23、 编程将外部RAM 1500H1507H单元内容送到内部RAM 30H37H单元。 ORG 0000HMOV R0,#30H MOV DPTR,#1500H MOV R7,#8 AT0:MOVX A,DPTR MOV R0,A INC R0 INC DPTR DJNZ R7,AT0 RET24、 编写统计内部RAM 20H单元中所存的单字节数二进制位中1的个数,存于21H中。ORG 0000HAT0: MOV R1, #00H MOV R7, #08HMOV A, 20HAT1: JB ACC.7, AT2 SJMP AT3AT2: INC R1AT3: RL A DJNZ R7, AT1 MOV 21H, R1 END25、 编写一循环程序,将内部RAM的20H2FH共16个连续单元清零。 ORG 0000HAT0: MOV R0,#20H MOV R2, #0FH CLR AAT1: MOVR0, A INC R0 DJNZ R2, AT1 RET26、 编程程序,将外部RAM 4000H40FFH单元内容全部置“1”。ORG 0000HAT0: MOV A, #0FFH MOV R0, #0FFH MOV DPTR, #4000HAT1:MOVX DPTR, AINC DPTRDJNZ R0, AT1END27、 试编写程序,查找在内部RAM的40H60H单元中是否有0FFH这一数据。若有,则将51H单元置为“00H”;若未找到,则将51H单元置为“01H”ORG 0000HAT0: MOV R0,#40H MOV R2, #20HAT1: MOV A,R0 CJNE A, #0FFH, AT2 MOV 51H, #00H SJMP AT3AT2: INC R0 DJNZ R2, AT1 MOV 51H, #01HAT3: END28、 编写一循环程序,查找内部RAM 30H50H单元中出现FFH个数,并将查找搭结果存入51H单元。ORG 0000HAT0: MOV R0,#30H MOV R2, #20H MOV R3 ,#00HAT1: MOV A,R0 CJNE A, #0FFH, AT2 INC R3AT2: INC R0 DJNZ R2, AT1 MOV 51H, R3 END29、 设在内RAM 40H 开始的存储区有若干个字符和数字,已知最后一个为字符 “F”(并且只有一个),试统计这些字符数字的个数,结果存入30H单元中。ORG 0000HAT0: MOV R0, #40H CLR AAT1: CJNE R0, #46H, AT2 SJMP AT3AT2: INC AINC R0SJMP AT1AT3: INC A MOV 30H, A END三、应用题1.设计一个循环灯程序,如图所示,使这些发光二极管每次只点亮一个(高电平亮),依次一个一个地点亮,循环不止(从D0开始)。 ORG 0000HAT0:MOV R7 ,#8 MOV A,#01H AT1:MOV P0,A RL A ACALL D1MS DJNZ R7,AT1SJMP AT0 D1MS: RET END 2.根据图示电路(P0接LED),设计一个程序,开机后LED显示0,以后每按一次键(P2.7),显示的数字加1,显示9后,再回到0,并照此循环。(LED为共阴极,0-9的字形段码依次为3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7EH,6FH) ORG 0000HAT0:MOV DPTR ,#TAB MOV R7,#10 MOV R1,#00H AT1:MOV A,R1 MOVC A,A+DPTR MOV P0,A JB P2.7,$ INC R1 DJNZ R7,AT1SJMP AT0 LAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7EH,6FH END3.设计一个循环灯程序,如图所示,使这些发光二极管每次只点亮一个并闪烁10次(高电平亮),再依次一个一个地点亮闪烁10次,循环不止(从D0开始)。 ORG 0000HAT0: MOV A,#01HAT1: MOV R7 ,#10 AT2:MOV P0,A ACALL D1MS MOV A, #00H ACALL D1MS DJNZ R7,AT2RL A SJMP AT1 D1MS: RET END 4.用8051的P1口接8个发光二极管,由/INT0接一按键开关,开始P1.0的LED亮(高电平亮),以后由/INT0按键每中断一次,下一个LED亮,顺序下移,且每次只一个LED亮,周而复始。请编制程序。ORG 0000HAJMP AT0ORG 0003HAJMP AT1ORG 0040HAT0: MOV A, #01H MOV P1, A SETB EA SETB EX0 SETB IT0 SJMP $AT1: RL AMOV P1, ARET1END5. 用8051的P0口接8个发光二极管,P1口接8个开关。每按一次开关K产生一个负脉冲作用于INT1,作为中断请求信号。单片机每响应一次中断请求,就从开关读入数据,然后送到发光二极管显示。ORG 0000HAJMP AT0ORG 0013HAJMP AT1ORG 0040HAT0: SETB EX1 SETB IT1SETB EASJMP $AT1: MOV P1, #0FFH MOV A, P1 MOV P0, A RETIEND6.用8051的P0.4-P0.7口接4个发光二极管,P1.0-P1.3口接4个开关。每按一次开关K产生一个负脉冲作用于INT0,作为中断请求信号。单片机每响应一次中断请求,就从开关读入数据,然后送到发光二极管显示。ORG 0000HAJMP AT0ORG 0003HAJMP AT1ORG 0040HAT0: SETB EX0 SETB IT0SETB EASJMP $AT1: MOV P1, #0FFH MOV A, P1 SWAP A MOV P0, A RETI END7. 8051单片机P2口的低4位输入开关设置的4位二进制数,用P1口输出控制一个共阴七段LED显示器,要求每当INT0有一个跳变时单片机从P2口输入一个数据,并将其显示在七段LED上。请编制该程序。ORG 0000HAJMP AT0ORG 0003HAJMP AT1ORG 0040HAT0: SETB EX0 SETB IT0SETB EASJMP $AT1: MOV DPTR ,#TABMOV P2, #0FFH MOV A, P2 ANL A, #0FH MOVC A,A+DPTR MOV P1, A RETITAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7EH,6FH END8.根据图示电路(P0接LED),设计一个程序,开机后LED显示9,以后每按一次键(P2.7),显示的数字减1,显示0后,再回到9,并照此循环。(LED为共阴极,0-9的字形段码依次为3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7EH,6FH) ORG 0000HAT0:MOV DPTR ,#TAB MOV R7,#10 MOV R1,#09H AT1:MOV A,R1 MOVC A,A+DPTR MOV P0,A JB P2.7,$ DEC R1 DJNZ R7,AT1SJMP AT0 LAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7EH,6FH END9. 根据图示电路(P0接LED),设计一个程序,从0显示到9再到0,每个字符显示1秒,并照此循环不止。(LED为共阴极,0-9的字形段码依次为3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7EH,6FH)ORG 0000HAT0:MOV DPTR ,#TAB MOV R7,#10 MOV R1,#00H AT1:MOV A,R1 MOVC A,A+DPTR MOV P0,A LCALL DT1SINC R1 DJNZ R7,AT1SJMP AT0 LAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7EH,6FH DT1S: RET END10. 使用定时器T0以工作方式2实现定时,在P1.0输出周期为200s的连续方波。已知晶振频率fosc=6MHz。求计数初值,方式控制字,编制相应程序。(中断方式)解:(2分)计数初值X=256-50=206=CEH (2分)TMOD=02H(8分)主程序ORG 0000H AJMP AT0ORG 000BH AJMP AT1ORG 0040HAT0:MOV TMOD,#02HMOV TH0, #0CEHMOV TL0, #0CEHSETB ET0SETB EASETB TR0SJMP $AT1: CPL P1.0 RETI END
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!