2.8031、8051、8751有何异同?
3.MCS-51的位存储区在哪里?寻址范围是多少?
4.8051的定时器/计数器有几个?是多少位的?有几种工作方式?其工作原理如何? 5.8051有哪几个中断源?哪些是内部中断源?哪些是外部中断源? 三、判断题(20分)
1.判断以下各条指令是否正确(LL1和PROC为标号)(10分) (1)MOVX @R0,B (2)MOV A,30H (3)MOVX A,30H
(4)ADDC A,R7 (5)SUB A,R2 (6)ANL #99H ,36H
(7)MOV C,ACC.0 (8)ORL P1.0,P3.1 (9)JBC P0,LL1
(10)ACALL PROC
2.判断以下说法是否正确,不正确予以改正。(10分) (1)单片机是面向数据处理的。
(2)定时器与计数器的工作原理均是对输入脉冲进行计数。
(3)由于MCS-51的串行口的数据发送和接收缓冲器都是SBUF,所以其串行口不能同时发送和接收数据,即不是全双工的串行口。
(4)END表示指令执行到此结束。
(5)ADC0809是8位逐次逼近式模/数转换接口。 四、阅读程序(20分)
1.下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?(5分)设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)MOV A,#48H ;寻址方式: (A)= (2)ADD A,60H ;寻址方式: (A)= (3)ANL A,@R0 ;寻址方式: (A)=
2.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?(15分) MOV R1,#30H ;(R1)= MOV A,#64H ;(A)= ADD A,#47H ;(A)= ,(CY)= ,(AC)= DA A ;(A)= ,(CY)= ,(AC)= MOV @R1,A ;(R1)= ,(30H)=
此程序段完成的功能:
五、计算(画图)题(10分) 若8051的晶振频率fosc为6MHz,定时器/计数器T0工作在工作方式1,要求产生10ms定时,写出定时器的方式控制字和计数初值(分别写出TH0与TL0值)。
【参考答案】 一、填空题(每空1分,共10分)
1.CPU;存储器;I/O接口 2.先进后出;内部RAM30H~7FH的范围内;SP 3.串行通信 4.通用的可编程并行 5.异;4 二、简述题(每题5分,共25分)
1.单片机具有体积小、可靠性高、控制功能强、使用方便、性能价格比高、容易产品化等特点。
2.8051、8751和8031均为8位单片机,其内部结构是基本相同的。
不同点为:8051内部有4KBROM,8751内部有4KBEPROM,而8031内部无程序存储器。
3.内部RAM的20~2FH为位寻址区域,位地址范围00~7FH;特殊功能寄存器中地址能被8整除的字节地址单元也可以位寻址,位地址范围80~FFH;位存储区共256个位。
46
4.8051有2个16位的定时器/计数器,有4种工作方式。
定时器与计数器的工作原理是相同的,8051的定时器/计数器是根据输入的脉冲进行加1计数,当计数器溢出时,将溢出标志位置1,表示计数到预定值。
5.8051有5个中断源,分别是定时器/计数器T0、T1的溢出中断TF0、TF1,串行口的收/发中断RI/TI,外部中断IE0、IE1;其中定时器/计数器T0、T1的溢出中断TF0、TF1、串行口的收/发中断RI/TI是内部中断源,外部中断IE0、IE1是外部中断源。
三、判断题(20分)
1.判断以下各条指令是否正确(LL1和PROC为标号)(10分)
(1)× (2)○ (3)×(4)○(5)×(6)×(7)○(8)×(9)×(10)○ 2.判断以说法是否正确:(10分)
(1)× 单片机是面向控制的。 (2)○
(3)× 由于MCS-51的串行口的数据发送和接收缓冲器都是SBUF,但在物理上,实际上是两个缓冲器,其串行口可以同时发送和接收数据,是全双工的串行口。
(4)× END表示指令汇编到此结束。 (5)○ 四、阅读程序(20分) 1.(5分)(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。 (1) 立即寻址 ; 48H (2) 直接寻址 ; 4EH
(3) 寄存器间接寻址 ; 09H 注意本题是(1) (2) (3)在题所示条件下单独执行 2.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?(15分) MOV R1,#30H ;(R1)= 30H MOV A,#64H ;(A)= 64H ADD A,#47H ;(A)= ABH (CY)= 0 (AC)= 0 DA A ;(A)= 11H ,(CY)= 1 (AC)= 1 MOV @R1,A ;(R1)= 30H ,(30H)= 11H 此程序段完成的功能:(5分)求两个BCD码数(64H和47H)的和,并将结果放在内部RAM的30H单元。
五、计算(画图)题(10分) (1)(5分)T0:定时方式,工作在方式1。 方式字TMOD=01H (2)(5分)fosc=6MHz,16位计数器,10ms定时,设计数初值为a, t=12/ fosc*(216 - a) 10*103=12/6 *(216 - a) a=60536=EC78H 即TH0=ECH TL0=78H 所以:TMOD=01H TH0=ECH TL0=78H
⑥ 单片机模拟试题⑥ (答案见后)
一、填空题(每空格1分,共10分)
1.MCS—51布尔处理机的存储空间是_______。
2.P2口通常用作_______,也可以作通用的I/O口使用。
3.若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为______。 4.8051的堆栈区一般开辟在_______。 5.所谓寻址,其实质就是_______。 6.存储器映象是_______。
7.定时器中断请求发生在_______。 8.中断响应时间是指______。
9.通过CPU对I/O状态的测试,只有I/O已准备好时才能进行I/O传送,这种传送方式称为_______。
47
10.在中断服务程序中现场保护和现场恢复期间,中断系统应处在____状态。 三、简答题(每小题4分,共20分) 1.如何正确使用P3口?
2.简述累加器的ACC的作用。
3.简述寄存器间接寻址方式及其寻址范围。 4.简述MCS-51单片机的中断入口地址。 5.简述串行数据传送的特点。
四、读程序题(每小题4分,共20分) 1.执行下列程序段后,(P1)=_______。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7
2.执行下列程序段后,(A)=_______,(CY)=____。 MOV A,#C5H RL A
3.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H INC @R0 INC R0 INC @R0 4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。 5.阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A
MOV R1,A RL A RL A
ADD A,R1 MOV @R0,A RET
单片机模拟试题⑥参考答案
一、填空题(每空1分,共10分)
1.00H~7FH 2.高8位地址线 3.08~0FH 4.用户RAM区 5.如何确定操作数的单元地址 6.存储器在整个存储空间的地址范围 7.定时时间到
8.从查询中断请求标志位到转向中断区入口地址所需的机器周期数 9.程序查询方式 10.关中断
48
三、简答题(每小题4分,共20分) 1.要点:
(1)说明P3口有第一功能和第二功能的使用。 (2)P3口的第二功能各位线的含义。
(3)使用时应先按需要选用第二功能信号,剩下的口线才作第一功能I/O线用。 (4)读引脚数据时,必需先给锁存器输出“1”。 2.(1)8位专用寄存器。
(2)运算时存放一个操作数。
(3)运算后存放运算结果,所以称它为累加器。
3.(1)寄存器中存放的是操作数的地址,操作数是通过寄存器间接得到,这种寻址方式称
为寄存器间接寻址方式。
(2)寻址范围:
①内部RAM低128单位,形式@Ri(i=0,1)。
②外部RAM64K使用DPTR作间址寄存器,形式为@DPTR。 4.中断入口地址为中断响应后PC的内容即中断服务的入口地址。
它们是:外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H
定时器T1中断 001BH 串行口中断 0023H
5.(1)传送按位顺序进行,速度慢。
(2)传输线少,成本低。
(3)传送距离远,可达几公尺到几千公里。 四、读程序题(每小题4分,共20分)
1.(P1)=9BH 2.(A)=8BH(或10001011B) (CY)=不影响 3.(R0)=7FH (7EH)=00H (7FH)=41H
4.(PC)=0345H (61H)=25H (62H)=01H 5.(data)×10操作 填空:满量程为10V的8位DAC芯片的分辨率为_____(10/28 V)_______。 简答题
8031外部数据存储器和外部程序存储器的可扩展的地址空间分别为多少?,它们的地址范围分别是什么?外部数据存储器和外部程序存储器为什么不会发生总线冲突?
答:MCS-51的单片机外ROM的寻址空间都是64K,既可扩展为64K,地址范围为0000H-FFFFH。由于访问外部ROM时,为低电平有效,而和都无效;访问外部RAM时,为低电平或为低电平,而总无效。因此不会发生总线冲突。(注:8051是片内带4KROM,8031不带ROM。)
补充内容(计算题):
对于计算题,我总结了一下,认为单片机可能就这几类计算题,重要!
第一类:计算延时时间,按要求分为粗略算法和精确算法,要求用粗算而用精算则不合题 1、以下为延时子程序,假设时钟频率为6M,估算其延时时间。 DELAY: MOV R0,#100 ;单周期 DEL2: MOV R1,#10 DEL1: MOV R2,#7DH
49
DEL0: NOP ;单周期 NOP
DJNZ R2,DEL0 ;双周期 DJNZ R1,DEL1 DJNZ R0,DEL2
RET ;双周期
2、以下为延时子程序,假设时钟频率为6M,精确计算其延时时间。 DEL1: MOV R2,#0C8H ;单周期 DEL0: NOP ;单周期 DJNZ R2,DEL0 ;双周期
RET ;双周期
解: 三、1 :7DH为125,机器周期数≈125*4*10*100=500000,6MHz每机器周期=2us,
500000*2=1000000us=1s
2:机器周期数=1+3*(0C8H)+2=1+3*200+2=603 时间=603*2us=1206us
编程:让P1.0输出周期为1s的方波。属于同类题目。
第二类:计算定时时间,可以是要求定时时间求初值(多数题),或给定初值求定时时间。 3、晶振fosc为12MHz,用定时器0方式1产生20ms定时,计算确定其初值TL0和TH0。 4、晶振fosc为6MHz,用定时器1方式1产生2.5ms定时,计算确定其初值TL1和TH1。
解:由晶振fosc=6MHz=6×106Hz,得晶振周期为(1/6) ×10-6秒=(1/6)us,
一个机器周期=12个晶振周期=12×(1/6)us=2us(微妙) 2.5ms=2500us=(2500us/2us)个机器周期=1250机器周期 定时器1方式1的计数器是16位,216=65536
定时常数=65536-1250=64286=(FB1E)H,所以TH1=0FBH,TL1=1EH
编程:让P1.0输出周期为1s的方波,要求用中断方式编程。属于同类题目,一定要掌握。
第三类:计算波特率,可以是要求波特率求初值(多数题),或给定初值求波特率。
5、若8051的晶振频率fosc为11.0592MHz,串行口工作在方式1,T1作为波特率发生器,T1工作在自动重装初值的8位定时方式,设SMOD=0,(TH1)=0FAH,求串行口的波特率。
解:0FAH=250
T1的溢出率=fosc/(12*(256-250))= 11.0592MHz /72=0.1536 MHz=153.6KHz 波特率=(2SMOD/32)*( T1的溢出率)= 153.6KHz/32=4.8 Kbps=4800 bps
6、若8051的晶振频率fosc为11.0592MHz,串行口工作在方式1,T1作为波特率发生器,T1工作在自动重装初值的8位定时方式,要求串行口的波特率为4800Hz,请设置SMOD、TH1的值。
【是5题的反问题,答案是设SMOD=0,(TH1)=0FAH,或设SMOD=1,(TH1)=0F4H】
7、若8051的晶振频率fosc为11.0592MHz,串行口工作在方式1,T1作为波特率发生器,T1工作在自动重装初值的8位定时方式,设SMOD=0,要求串行口的波特率为4800Hz,求出TH1的值。
【是5题的反问题,由:
波特率=(2SMOD/32)*( T1的溢出率)= ( T1的溢出率)/32=4.8 Kbps 知: T1的溢出率=4.8 KHz*32=153.6KHz=0.1536 MHz 再由: T1的溢出率=fosc/(12*(256-TH1))
=11.0592 MHz /(12*(256-TH1))= 0.1536 MHz
50