2013(答案)单片机原理与应用试卷A(最新)
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
……………………………………………………………………………………………………………… 得 分 一、填空题(每空1分,共15分) 1. 8051内部有4个8位的并行I/O口,其中 P3 口的引脚还具有外中断、串行通信等第二功能。 2. MCS-51系列单片机内部数据存储器,片内RAM中位寻址区的地址范围是20H ~ 2FH ,工作寄存器区的地址范围是 00H~1FH 。 3. MCS-51的时钟频率范围为 1.2—12MHz 。设fosc=6MHZ,执行一条2个机器周期的指令,时间为 4us ,ALE信号的工作频率是 1MHZ 。 4. 在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问 程序 存储器提供地址,而DPTR是为访问 数据 存储器提供地址。 5. 在MCS-51中,只有当EA引脚接 高 电平时,CPU才访问片内的ROM。 6. 用于查表的汇编指令语言助记符是 MOVC 。 7. 五个中断源中优先级最高的是 外部中断0 ,其对应的中断号为 0 。 8. MCS-51的堆栈寄存器SP是 8 位寄存器,堆栈是按__向上__方向伸展的. 9. 中断服务程序的返回指令是 RETI 。 得 分 三、阅读程序题(每小题5分,共20分) 1.已知(A)=22H,(R1)=50H,(40H)=15H,(50H)=33H试写出80C51执行下列程序段后,寄存器(A)= 44H ,(R1)= 40H ,地址(40H)= 22H ,(50H)= 33H 。(要求写出分析过程)。 MOV R1,#40H MOV @R1 ,A 解:(R1)=40H,((40H)=22H;(A)=44H, (50H)不变 。 RL A 2. 已知(SP)=65H ,(A)=30H,(R0)=80H,(B)=20H则当MCS-51执行下列程序后,(SP)= 66H ,(DPTR)= 2080H (要求写出分析过程)。 PUSH ACC PUSH R0 PUSH B POP DPH POP DPL 解:SP=SP+1=66H,(SP)=30H; SP=SP+1=67H,(SP)=80H;SP=SP+1=68H,(SP)=20H;(DPH)=20H, SP=SP-1=67H;(DPL)=80H, SP=SP-1=66H;。 3.试用文字叙述程序所完成的功能是什么?(要求写出分析过程) ORG 8000H MOV R0,#50H MOV R2,#10H MAIN1: MOV @R0,#0H INC R0 DJNZ R2,MAIN1 SJMP $ END 4.指出下面程序的错误。 #include main() { a=b; int a=6,b;解:单片机执行上述程序后,所实现的功能是:对地址50H开始的连续16个单元清零。评分标准: 可复制、编制,期待你的好评与关注! 解:变量应先定义再使用; 函数delay后无分号、且缺少“}”;delay为无参函数,不能传递参数。 此处多了分号; 无char类型,应为unsigned char delay(10) void delay(); { char i; for(i=0;i<=255;i++); } 得 分 四、简单程序设计(每小题10分,共20分) 1、用8051单片机实现2-4译码器逻辑功能。假设以单片机的P1口的高2位作为译码器的2个输入端口,P3口作为译码器的4个输出端(低电平有效),P1.0作为译码器的使能端(低电平有效)。请写出其2-4译码器的C51程序。 # include void main() { unsigned char n; while(1) { P1 = 0xff; if(P1_0 == 0) { n = P1&0xC0; switch(n) { case 0: P3_0 =0; break; case 64: P3_1 =0; break; case 128: P3_2 =0; break; case 192: P3_3 =0; break; default:P3=0xff;break; } } else P3 = 0xff; } } 2.编写一个由P1.2口周期输出400us的等宽连续方波信号的程序,系统采用12MHz晶振,要求使用T1工作在方式1。试编写其以中断方式实现的相关C语言程序。提示: 解: 计算计算初值:(65336-x)*1us=200us; 即:0FF38H; 控制寄存器设计:0001XXXX # include sbit P1_2 = P1^2 void service_int0() interrupt 3 {可复制、编制,期待你的好评与关注! TH1 = 0xffH; TL1 = 0x38H; P1_2 = !P1_2; } void main(void) { TMOD = 0x10; TH1 = 0xffH; TL1 = 0x38H; EA= 1; ET1 = 1; TR1 = 1; While(1); } 得 分 五、应用题(每小题15分,共30分) 1. 将8031单片机外接一片2716 EPROM和一片6116 RAM,一片6264RAM组成一个应用系统。要求用线选法(限定用P2.7、P2.6、P2.5)完成下图MCS-51片外存储器扩展线路的连接,并指出各存储器芯片的地址范围(没用到的地址线设为1)。 解:2716的地址为1101 1000 0000 0000-1101 1111 1111 1111 D800H-DFFFH 6116的地址为1011 1000 0000 0000-1011 1111 1111 1111 B800H-BFFFH 6264的地址为0110 0000 0000 0000-0111 1111 1111 1111 6000H-6FFFH 88322716A11A1262643 2、假设图2中PA口和PC口共同接两个共阳极的七段显示器,MCS-51RAM 70H-73H存放的内容为3、4、5、6,将这些数以动态显示方式分别在对应位的数码管上显示,即显示的效果为3456。试编写C语言程序。可复制、编制,期待你的好评与关注! 8051P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7ALEP2.2P2.5RDWR8155PA0AD0PA1AD1PA2AD2PA3AD3PA4AD4PA5PA6AD5PA7AD6AD7ALEIO/MCERDWRPC1PC2PC3PC474LS244100欧×8+5V74LS06 图2 #include #include #define unchar unsigned char #define _8155A_cmd XBYTE[0xDF00] #define _8155A_PA XBYTE[0xDF01] #define _8155A_PC XBYTE[0xDF03] const unchar segtab[4]={ 0x4F,0x66,0x6D, 0x7D}; void main(void) { unchar i; _8155A_cmd=0x0f; 控制字为0x0d也对 While(1) { for(i=0;i<4;i++) { _8155A_PC=(1<_8155A_PA=segtab[i]; delay(); } }
} 得 分
三、阅读程序题(每小题5分,共20分)
1.已知(A)=11H,(R1)=50H,(40H)=15H,(50H)=33H试写出80C51执行下列程序段后,寄存器(A)= 80H ,(R1)= 40H ,地址(40H)= 11H ,(50H)= 33H 。(要求写出
分析过程)。
MOV R1,#40H R1 <— 40H
可复制、编制,期待你的好评与关注!
XCHD
@R1 ,A ((40H))0-3 <—> (A)0-3
RR A (A)右移一位
2. 已知(SP)=60H ,(A)=30H,(B)=70H则当MCS-51执行下列程序后,(SP)= 60H ,(DPTR)= 3070H (要求写出分析过程)。
PUSH ACC PUSH B POP DPL POP DPH
解:(SP)=(60H)+1=61H; (61H) =(A)=30H;(SP)=(61H)+1=62H; (62H) =(B)=70H; (DPL) =(62H)=70H; (SP)=(62H)-1=61H; (DPH) =(61H)=30H;(SP)=(61H)-1=60H。
3.下面查表指令执行后,累加器(A)= D或者44H (要求写出分析过程)
ORG 8000H
MOV A,#30H (A)=30H,2字节指令 MOVC A,@A+PC 执行时(PC)=8003H ......
ORG 8030H
TAB: DB ‘ABCDEFGHIJ’ 执行查表指令后将8003H+30H=8033H地址对应的程序存储器中的内容字符’D’送到A 4.指出下面程序的错误。 #include Void main() {
uchar data var1; uchar pdata *dp1; var1=XBYTE[0x0008]; dp1=0x1000; *dp1=0x80; delay(10) while(1);
void delay();
{ uchar i;
for(i=0;i<=255;i++); } 得 分
四、简单程序设计(每小题10分,共20分)
1、用8051单片机实现8-3编码器逻辑功能。假设以单片机的P2口作为编码器的8个输入端口(低电平有效),P3口的低3位作为编码器的3个输出端,P3.5作为编码器的使能端(低电平有效)。请画出该编码器的逻辑图,并写出其8-3
编码器的C51程序。 # include void main() {
解:1. uchar 别名需先定义; 2. 缺少头文件 3. dp1赋值的地址应小于FFH;4、Delay()不能传递参数且Delay(10)后缺少“;” 5. void delay()之前缺少“}”且之后多“;”.。
可复制、编制,期待你的好评与关注!
unsigned char n; while(1) {
P2 = 0xff;
P3 = 0x20;或者P3=P3& 0x20; if(P3_5 == 0) { n = P2; switch(n) {
case 254: P3= 0x00; break; case 253: P3= 0x01; break; case 251: P3= 0x02; break; case 247: P3= 0x03;break; case 239: P3= 0x04;break; case 223: P3= 0x05; break; case 191: P3= 0x06;break; case 127: P3= 0x07;break; default:P3=0x00;break; } } else
P3 = 0xff; } }
I0I1I2I3I4I5I6I7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
P3.0P3.1P3.2
EN
P3.5
8051
2.编写一个由P2.0口周期输出300us的等宽连续方波信号的程序,系统采用12MHz晶振,要求使用定时器1工作在方式2。试编写其以查询方式实现的相关C语言程序。提示:
TCON TMOD IE
TF1 GATE EA
TR1 C/T’ —
TF0 M1 ET2
TR0 M0 ES
IE1 GATE ET1
IT1 C/T’ EX1
IE0 M1 ET0
IT0 M0 EX0
可复制、编制,期待你的好评与关注!
答:计算初值:(256 解得:
X)1150
X106D6AH
# include sbit P2_0 = P2^0 void main (void) {
EA0;
ET1 = 0; TMOD &= 0x0f; TMOD |= 0x20; TH0 = 0x6A; TL0 = 0x6A; For(; ;) { If(TF1) {TF1 = 0; P2_0 =!P2_0; }}}
得 分
五、应用题(每小题15分,共30分)
1. 将8031单片机外接一片2764 EPROM芯片、一片6264 RAM和一片8155组成一个应用系统。其中,8155作为256B的
RAM使用。要求用线选法(限定用P2.7、P2.6、P2.5)完成下图MCS-51片外存储器扩展线路的连接,并指出各存储器芯片的地址范围(没用到的地址线设为1)。
8
8
AD0AD7ALE
IO/M
8
5
6224
WE
CS
8155
OE
2764的地址为1100 0000 0000 0000-1101 1111 1111 1111 C000H-DFFFH 6264的地址为1010 0000 0000 0000-1011 1111 1111 1111 A000H-BFFFH
8155的地址为0111 1111 0000 0000-0111 1111 1111 1111 7F00H-7FFFH
可复制、编制,期待你的好评与关注!
2、假设图2中PA口接一组开关,PB口接一组指示灯,MCS-51不断查询PA口开关的状态,并用指示灯的状态反映开关的状态,即开关闭合时灯亮,开关断开时灯灭。试编写C语言程序。*提示:8255的PA口和PB口均工作在方式0,8255的控制字格式 # include # include < absace.h > #define unchar unsigned char #define CONT 0x90
#define ADDR8D XBYTE[0XDFFF] #define ADDR8C XBYTE[0XDFFE] #define ADDR8B XBYTE[0XDFFD] #define ADDR8A XBYTE[0XDFFC] Void main(void) {
Unchar x; While(1){
ADDR8D=CONT; x = ADDR8A; ADDR8B= ~x; } }
评分标准:结构正确6分,控制字正确2分, 控制端口、PA口和PB口传输地址正确3分, PA口读入数据1分,PB口输出数据1分,按照图能根据PA状态正确使得PB口灯点亮或者熄灭2分。
(注:文档可能无法思考全面,请浏览后下载,供参考。)
可复制、编制,期待你的好评与关注!
本文来源:https://www.wddqw.com/doc/614caeef8aeb172ded630b1c59eef8c75fbf95de.html