490 likes | 642 Views
试卷一解析. 一、填空. 1. 若外接晶振为 6MHz ,则 8031 单片机的振荡周期为 ,时钟周期为 ,机器周期为 ,指令周期最短为 ,最长为 。 2 . 8031 单片机的片内外最大程序存储器最大容量为 ,数据存储器最大容量为 。. 1/6 us. 1/3us. 8us. 2us. 2us. 64KB. 64KB+0.128 KB. 一、填空. 5. 3 . 8031 单片机的中断源共有 个,它们分别是 , , , , ; 各中断矢量(入口)地址分别对应为 , , , , 。. 外部中断 0. 定时器/计数器 0. 外部中断 l. 串行口.
E N D
一、填空 1.若外接晶振为6MHz ,则8031单片机的振荡周期为,时钟周期为,机器周期为,指令周期最短为,最长为。 2.8031单片机的片内外最大程序存储器最大容量为,数据存储器最大容量为。 1/6 us 1/3us 8us 2us 2us 64KB 64KB+0.128 KB
一、填空 5 3.8031单片机的中断源共有个,它们分别是, ,,,; 各中断矢量(入口)地址分别对应为,,,,。 外部中断0 定时器/计数器0 外部中断l 串行口 定时器/计数器1 0003H 000BH 0013H 001BH 0023H
一、填空 4 4.8031单片机串行口共有种工作方式,它们的波特率分别为,,,。 5.8031单片机内部有定时器/计数器个,它们具有和功能,分别对 和 进行计数。 fosc/12 可变 fosc/32或fosc/64 可变 2 定时 计数 内部机器周期 单片机引脚T0和T1上的负跳变脉冲
一、填空 数字量 6.D/A转换器是将转换为 的器件,DAC0832具有,,三种工作方式; D/A转换器的主要技术性能有,,。 模拟量 双缓冲 直通 单缓冲 分辨率 转换速率 转换精度
二、简答题 1.8031单片机MOV、MOVC、MOVX指令有什区别?分别用在哪些场合?为什么? 【答】 ①MOV指令用于对内部RAM、寄存器的访问。 ②MOVC指令用于访问程序存储器.从程序存储器中读取数据(如表格、常数等); ③MOVX指令用于访问外部数据存储器和外部端口。要注意:执行MOVX指令时,RD (P3.7) 或WR (P3.6)信号有效(即输出一个低脉冲),可以用做外部数据存储器或I/O的读/写选通控制信号。
二、简答题 2.中断程序与子程序调用有哪几点(至少三点)异同? 【答】 ①都是中断当前正在执行的程序,转去执行子程序或中断服务程序; ②两者都可以实现嵌套,如中断嵌套和子程序嵌套; ③中断请求信号可以由外部设备发出,是随机的;子程序调用却是由软件编排好的。
三、设计题 某应用系统由10台803l单片机构成主从式多机系统,请画出硬件示意框图,简述系统工作原理。 10台803l单片机构成主从式多机系统如图1—1所示。
三、设计题 8051单片机多机通信时.采用1台主机和9台从机的主从式。主机向从机发送的信息分为地址,命令或数据两类。主机发送地址帧时,置第9位数据TB8为1;主机发送命令或数据帧时,将TB8清0。 当8051串行口以方式2或方式3接收时,若SM2=1,则只有当接收到的RB8为1时才将数据送入接收缓冲器SBUF,并使RI置1,申请中断,否则数据将丢失;若SM2=0,则无论RB8是1还是0,都能将数据装入SBUF,并且发中断。因此,SM2被称为“多机通信位”。
三、设计题 各从机开始多机通信时,应将SM2位置1,这时可以响应主机发来的地址信息(接收的RB8=1)。 1台主机首先面对9台从机发送要通信的从机地址(点名),各从机接收地址帧后,有两种不同的操作: • 若从机的地址与主机点名的地址不相同,则该从机将继续维持SM2为1,从而拒绝接收主机后面发来的命令或数据信息,并等待主机的下一次点名。 • 若从机的地址与主机点名的地址相同,则该从机将本机的SM2清0,继续接收主机发来的命令或数据。这时一个主机与一个从机进行一对一的通信。 当一个主机与一个从机的通信完成后,该从机SM2又置1。主机又重新开始呼叫另一个从机,重复上述过程。
四、读程序题 四、读程序,请: ①在电压V—时间t坐标上,画出803l单片机 P1.0~P1.3引脚上的波形图。 ②对源程序加以注释。
ORG 0000H START: MOV SP,#20H MOV 30H,#0FFH MLP0: MOV A,30H CJNE A,#07H,MLP1 MOV A,#00H MLP2: MOV 30H,A MOV DPTR,#ITAB MOVC A,@A+DPTR MOV P1,A ACALL D20ms SJMP MLP0 MLP1: INC A SJMP MLP2 ITAB: DB 1,2,4.8 DB 8,4.2.1 D20ms: …… RET
ORG 0000H START: MOV SP,#20H ;堆栈指针 MOV 30H,#0FFH MLP0: MOV A,30H CJNE A,#07H,MLP1 ;判断表格中数据是否取完 MOV A,#00H ;取完,从表头开始取 MLP2: MOV 30H,A MOV DPTR,#ITAB ;表格首地址 MOVC A,@A+DPTR ;取表格中数据 MOV P1,A ;输出波形 ACALL D20ms ;波形软件延时20 ms SJMP MLP0 MLP1: INC A ;表格中数据未取完,准备取下一个 SJMP MLP2 ITAB: DB 1,2,4,8 ;输出波形表 DB 8,4,2,1 D20ms: ……. RET • 程序注释如下:
五、编程题 五、按题意编写程序,并加上注释和必要的伪指令。 • 1.根据2000H单元中的值X,决定P1口引脚输出为: • 2X X>0 • P1= 55H X=0 • X X<0 • (X小于63)
【答】这是典型的分支结构程序设计。 由题意分析可知,X为带符号数。因此,应判断X的最高位,若最高位为0,表示X>0或X=0;若最高位为1,表示X<0。 注意:如果把X与0比较大小,并以进位C的值来实现分支,则会得到错误结果。
ORG 0000H SJMP BEGIN ORG 0030H BEGIN: MOV DPTR,#2000H MOVX A,@DPTR JB ACC.7,SMALLER ;判符号位 SJMP UNSIGNED ;数≥0 SMALLER:MOV P1,A ;X<0,输出X SJMP OK UNSIGNED:CJNE A,#00H,BIGGER ;不等于0即大于0 MOV P1,#55H、 ;X=0,输出55H SJMP OK BIGGER: CLR C RLC A ;A×2 MOV P1,A ;X>0,输出2X OK: SJMP OK END 程序如下:
六、应用题 六、某型号直流测速发电机,输出为0~5 V时,对应电动机转速为0-1024rad/min,设计单片机巡回检测系统。系统晶振为12M。 1.每隔100 ms(采用定时器/计数器T0的定时中断方式)对8路电动机转速进行A/D采样,并存入40H~47H单元。请编写定时巡检程序。当某台电动机转速低于512rad/min时,发出报警信号使对应LED点亮。同时继续巡回检测。对源程序加以注释和加上伪指令,写出必要的计算步骤。 2.回答两个问题: ①A/D启动信号是由哪条指令产生的?启动信号为什么是窄脉冲? ②在图卷1— 4的设计中存在两处错误,请指出并加以修正。 ③连接2764程序存储器(容量为8 KB),并说明其地址范围。
提示: IE: TMOD: 此题测考内容主要包括:程序存储器的扩展及地址译码: A/D转换接口ADC0809的扩展、地址译码及编程应用; 片内定时器/计数器的编程应用:中断的编程应用等。
【答】 ①计算:晶振为1 2 MH z,则机器周期为l us。定时方式1为16位定时器。 (216-TC)×1 us=50 ms 计算得出:TC=3CB0H 直流测速发电机输出为0~5 V时,对应电动机转速为0~1 024 rad/min;电压经A/D转换后的数字量为00H~FFH(255);所以当电动机转速为512 rad/min时,经A/D转换后的数字量应为80H。
主程序流程 T0 50ms定时初始化,中断初始化 50ms计数器置2 报警LED全灭 原地踏步,等待中断 入口 中断服务程序 N 50ms次数 --1=0? N Y 结果<80H? 重置时间常数 重置时间常数 Y 中断返回 对应LED位置1,并输出(取消报警) 对应LED位清0,并输出(报警) 50ms次数置为2 置通道数=8 数据保存指向首址 A/D地址指向0通道 通道数 -1=0? Y 启动A/D转换 中断返回 N 转换结束? Y 读结果,保存 存放地址+1通道均+1 N
程序如下: ORG 0000H AJMP MAIN ORG 000BH ;定时器中断 AJMP TIMER0_INT ORG 0030H MAIN: MOV TMOD,#01H ;设定时器/计数器T0为 定时方式1 MOV TH0,#3CH ;设定时50ms MOV TL0,#0BOH MOV R4,#2 ;两次中断产生100 ms定时 MOV P1,#0FFH ;初始令LED全灭 SETB TR0 SETB EA SETB ET0 AJMP $ ;定时中断等待 下页继续
TIMER0_INT: DJNZ R4,AGAIN ;判定时到否 MOV R3,#01H ;亮LED初始值 MOV R4,#2 ;两次中断产生100 ms定时 MOV R0,#40H ;要存入数据的首地址 MOV R1,#8 ;采样8路计数 MOV DPTR,#0DFF8H ;通道0地址 LOOP: MOVX @DPTR,A JB P3.2,$ ;查询等待A/D完成 MOVX A,@DPTR ;存入A/D转换值 MOV @R0,A JB ACC.7,NEXT0;判断是否大于128(这时转速为512rad/min) MOV A,R3 ;若小于128,则点亮对应的LED灯 CPL A ANL P1,A SJMP NEXT1 NEXT0: MOV A,R3 ;若大于128,则熄灭对应的LED灯 ORL P1,A NEXT1: INC DPTR ;转换至下一通道 INC R0 MOV A,R3 ;移位变量左移1位 RL A MOV R3,A DJNZ R1,LOOP AGAIN: MOV TH0,#3CH ;重置定时器值 MOV TL0,#0BOH RETI END
A/D启动信号是由指令“MOVX @DPTR,A”产生的。指令“MOVX @DPTR,A”执行时,WR信号产生的窄脉冲,同时P2.5有效,选通ADC0809,所以是窄脉冲,脉冲宽度与WR信号相同。 ②回答如下: 错误1:ALE作为ADC0809的时钟信号,由图卷1-4可知,单片机晶振频率为12MHz,因而ALE信号频率为2 MHz,超过了ADC0809的时钟允许频率范围(10~1280kHZ),可以把单片机晶振频率改为6 MHz或对ALE信号进行二分频。 错误2:有ADC0809时序可知,EOC信号从低电平变为高电平表示A/D转换结束,而程序中判断转换是否结束,是在等待变为低电平;改进方法:1、将JB P3.2,$ 改为JNB P3.2,$ ; 2、 EOC信号经反相器后与相连INT0 。 错误3:2764的OE端应该连接到MCU的PSEN端。
一、填 空 PC DPTR SP 1.程序存储器地址使用的计数器为 ;外部数据存储器地址指针为;堆栈的地址指计为。 2.外接程序存储器的选通(读)信号为,外接数据存储器的读信号为。 3.已知803l单片机的机器周期为2 us,则8051应外接晶振 为MHz,其指令周期最短为。 4.程序中“LOOP:SJMP rel”的相对转移以转移指令所在地址为基点向大地址方向最多偏移个单元地址,向小地址方向最多偏移个单元地址。 5.串行口的中断矢量地址为 ,在同一优先级中,排列 位。 6 8us 129 -126 0023H 第5
二、简述8031单片机ALE引脚的时序功能,请举例说明其二、简述8031单片机ALE引脚的时序功能,请举例说明其 在应用系统中有哪些应用。 【答】ALE被称为“地址锁存信号”。时序上,当ALE输出为高电平时,8051的P0口输出地址线的低8位A0~A7(此时74LS373直通(或称透明)),当ALE从高变低时,低8位地址线A0~A7 被锁存到74LS373的输出端。所以ALE信号通过锁存器(74LS373 )来锁存A0~A7。在时序上ALE以1/6振荡频率的固定速率输出。 在应用系统中,ALE主要有两个用途: ①在805l并行扩展时,P0 口为地址/数据复用口。利用ALE信号来锁存地址A0~A7。 ②ALE输出频率为1/6振荡频率的脉冲信号。
三、设(70H)=60H,(60H)=20H,P1口为输入口,三、设(70H)=60H,(60H)=20H,P1口为输入口, 当前输入状态为B7H,执行下面程序: MOV R0, #70H MOV A, @R0 MOV R1, A MOV B, @R1 MOV P1, #0FFH MOV @R0, P1 试分析(70H)、(B)、(R0)、(R1)的内容各是什么? (70H)=B7,(B)=20H,(R0)=70H,(R1)=60H
四、简述下列程序段完成的功能,程序完成后SP指针指向哪里?四、简述下列程序段完成的功能,程序完成后SP指针指向哪里? MOV SP, #2FH MOV DPTR, #2000H MOV R7, #50H LOOP: MOVX A, @DPTR PUSH ACC DJNZ R7, LOOP SJMP $ 7FH
五、按题意编写程序并加以注释,加上必要的伪指令。五、按题意编写程序并加以注释,加上必要的伪指令。 已知经A/D转换后的温度值存在4000H中,设定温度值存在片内RAM的40H单元中,要求编写控制程序,当测量的温度值大于设定温度值时,从P1.0引脚上输出低电平;当测量的温度值小于设定温度值时,从P1.0引脚上输出高电平;当测量的温度值等于设定温度值时,P1.0引脚输出状态不变。
【答】程序如下: ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV DPTR,#4000H MOV B,40H ;设定的温度值送B MOVX A, @ DPTR ;取测量的温度值 CLR C SUBB A,B JZ MAIN ;相等, P1.0输出不变 JNC LOWER ;测量的温度值>设定温度值,转移 SETB P1.0 ;测量的温度值<设定温度值,P1.0输出低电平 SJMP MAIN LOWER:CLR P1.0 ;测量的温度值>设定温度值,P1.0输出低电平 SJMP MAIN END
答:扫描键盘工作原理 • 首先按键判断:X0~X3始终接高电平,Y0~Y3给低电平,读取P1.0~P1.3若全为高电平,则没有键按下,若有低电平,则有键按下。 • 接着逐行扫描: Y0输出低电平,Y1~Y3输出高平,扫描P1.0~P1.3,若全为高电平,则没有键按下,若有低电平,则找出相位,得到所按的键。 • 再Y1输出低电平,Y0,Y2,Y3输出高电平,重复第2 步骤作. • 再Y2输出低电平,Y0,Y1,Y3输出高电平扫描 • 再Y3输出低电平,Y0,Y1,Y2输出高电平扫描 • 根据以上扫描,确定以上各键是否按下。
七、请回答:(共20分) 1、下图中外部扩展的数据存储器容量是多少?(2分) 2、三片6264的地址范围分别是多少?(地址线未用到的位填1) (6分) 3、若外部程序存储器已扩展(未画出),请编写程序,要求: ①将30H~3FH中的内容送入6264 1# 的前16个单元中;(6分) ②将6264 2# 的前32个单元的内容送入40H~5FH中;(6分)
解: 1、系统外扩了3片8K的RAM,所以共外扩了24K的数据存储器。 2. A15 A14 A13 地址范围 1#6264芯片 0 1 1 6000H~7FFFH 2#6264芯片 1 0 1 A000H~BFFFH 3#6264芯片 1 1 0 C000H~DFFFH
3.(1)程序如下: ORG 0000H START: AJMP MAIN ;转主程序 ORG 0100H MAIN: MOV DPL,#00H ;初始化DPTR MOV DPH,#60H MOV R0,#30H. ;初始化R0 Loop: MOV A,@R0 MOVX @DPTR, A INC R0 INC DPTR CJNE R0,#40H,Loop SJMP $
(2)程序如下: ORG 0000H START:AJMP MAIN ;转主程序 ORG 0100H MAIN: MOV DPL#00H ;初始化DPTR MOV DPH,#0A0H MOV R0,#40H ;初始化 R0 Loop2: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 CJNE R0,#60H,Loop2 SJMP $
编程题 1. 编程将2000H单元开始存放的100个ASCII码加上奇校验后从8031单片机的P1口依次输出。(加上适当注释) ORG 0000 SJMP BEGIN ORG 0030H BEGIN:MOV DPTR,#2000H ;ASCII码首地址 MOV R0,#64H ;发送计数器 LOOP: MOVX A,@DPTR ;取ASCII码 MOV C,P CPL C MOV ACC.7,C ;置奇校验 MOV P1,A ;输出 INC DPTR DJNZ R0,LOOP ;循环 SJMP $ END • ASCII码有效位为7位,因此,字节的最高位可以用做奇偶校验位,使得字节中8位(包括ASCII码7位)反映累加器A中1的个数的奇偶性。
2.已知热电偶采样值以补码形式存于40H中。编写控制程序,当采样值大于0时,置2.已知热电偶采样值以补码形式存于40H中。编写控制程序,当采样值大于0时,置 PSW中用户标志F0为1;当采样值小于0时,置用户标志F0为0;当采样值为0时,将用户标志F0变反。(加以注释,并加上必要的伪指令) ORG 0000 SJMP MAIN ORG 0030H MAIN: MOV A,40H ;取热电偶采样值 CJNE A,#0,NZERO ;采样值不为0,转移 CPL F0 ; 采样值=0,用户标志F0变反 SJMP EXIT NZERO:MOV A,40H JB ACC.7,NEG ;采样值是否为负? SETB F0;采样值>0,用户标志FO置1 SJMP EXIT NEG: CLR F0 ;采样值<0,用户标志F0置0 EXIT: SJMP EXIT END • 这是一个三分支程序,根据采样值大于0、小于0或等于0而形成分支。
3.已知一批8位带符号数从1000H单元开始存放,以ASCII码字符“&”为结束字节,这批数的个数最大不超过126。请编写源程序对这批8位带符号数中的正数、0、负数分别进行统计,统计结果依次存入外部RAM的20H、21H和22H单元中。对源程序加以注释和伪指令。3.已知一批8位带符号数从1000H单元开始存放,以ASCII码字符“&”为结束字节,这批数的个数最大不超过126。请编写源程序对这批8位带符号数中的正数、0、负数分别进行统计,统计结果依次存入外部RAM的20H、21H和22H单元中。对源程序加以注释和伪指令。 ORG 0000H • MOV DPTR,#0020H ;清计数单元 • MOV A,#00H • MOVX @DPTR,A • INC DPTR • MOVX @DPTR,A • INC DPTR • MOVX @DPTR,A • MOV 20H,A • MOV 21H,A • MOV 22H,A • MOV DPTR,#1000H ;带符号数存储单元首址 • MOV R1,#126 ;带符号数长度计数器
LP: MOVX A,@DPTR ;取带符号数 CJNE A,“$”,LPl SJMP $ ;是结束字节,停止 LP1: JZ ZERO ;是零,转ZERO JB ACC.7,NEG ;是负数,转ZERO INC 20H ;是正数,正数个数加l SJMP END0 ZER0: INC 21H ;是0,0个数加1 SJMP END0 NEG: INC 22H ;是负数,负数个数加1 END0: INC DPTR DJNZ R1,LP ;统计未结束,循环 MOV DPTR,#0020H ;转存外部RAM MOV R0,#20H MOV R1,#03H SAVE: MOV A,@R0 MOVX @DPTR,A INC DPTR INC R0 DJNZ R1,SAVE SJMP $ END 注意: 1)应先判结束关键字“&”,因为带符号数长度可能为0,否则统计出错。0和正数的符号位都是0,应先判0。 2)8位带符号数存储区和统计结果存储区都以DPTR为指针,有冲突,所以统计结果先存储在内部 RAM中,统计结束后再转移。
4.采用6MHz的晶振,定时2ms,用定时器方式1时的初值应为多少?(请给出计算过程)(6分,哈工大06年考研题)4.采用6MHz的晶振,定时2ms,用定时器方式1时的初值应为多少?(请给出计算过程)(6分,哈工大06年考研题) 答: (1) TM=2us (216-X)×2us=2ms 从而 X=64536 …………………. ……….4分 (2) 64536=FC18H………………………2分
5. 已知如图并给出下列程序,请在读图并理解程序后回答下列问题: • (1)程序功能为_______。 • (2)ADC0809的口地址为_______。 • (3)EOC的作用是_______。 • (4)程序运行结果存于_______。 ADC: MOV DPTR,#7FF0H • MOV R0,#0A0H • MOV R2,#8 • MOV A,#0 LOOP: MOVX @DPTR,A • JB P3.3,$ • MOVX A,@DPTR • MOVX @R0,A • INC DPTR • INC R0 • DJNZ R2,LOOP • AJMP ADC (1)巡回采集8个通道的数据 (2)ADC0809口地址为7FF0H~7FF7H(或7FF8~7FFFH) (3)EOC为A/D转换结束信号,用来引起中断或查询,以便读取A/D的转换结果。 (4)结果存入外部RAM的A0H~A7H。
6.阅读下列程序,说明其功能。 • MOV R0,#data • MOV A,@R0 • RL A • MOV R1,A • RL A • RL A • ADD A,R1 • MOV @R0,A • RET data×10 (data×10后,仍为一个字节)
7.阅读下列程序段并回答问题: 1)该程序执行何种操作? 2)已知初值(60H)=23H,(61H)=61H, 运行程序后(62H)=?(7分,哈工大06年考研题) START: CLR C MOV A,#9AH SUBB A,60H ADD A,61H DA A MOV 62H,A 38H
8.图1(a)所示为某微机中存储器的地址空间分布图。图1(b)为存储器的地址译码电路,为使地址译码电路按图1(a)所示的要求进行正确寻址(设CPU的地址线为16条),要求在答题纸上画出:8.图1(a)所示为某微机中存储器的地址空间分布图。图1(b)为存储器的地址译码电路,为使地址译码电路按图1(a)所示的要求进行正确寻址(设CPU的地址线为16条),要求在答题纸上画出: • A组跨接端子的内部正确连线图?(4.5分)并简要分析(3分) • B组跨接端子的内部正确连线图?(4.5分)并简要分析(3分) • (注:74LS139是2-4译码器,A为低端,B为高端,使能端G接地表示译码器处于正常译码状态)。
ROM1:16K,0000H-3FFFH; ROM2:16K,4000H-7FFFH; 8000H-BFFFH:16K,未用 RAM1:8K,C000H-DFFFH; RAM2:8K,E000H-FFFFH; A15、A14译码把64K空间划分为4个16K, Y0为第1个16K(0000H-3FFFH)的片选; Y1为第2个16K(4000H-7FFFH)的片选; Y2对应的16K空间为8000H-BFFFH; Y3对应的16K空间为C000H-FFFFH; Y3要与A13组合产生2个8K的片选;