四川理工学院试卷(2010 至2011 学年第2学期)课程名称:微控制器原理及应用 (考查课 开卷考试 A 卷 参考答案及评分标准) 命题教师:适用班级:电气工程及其自动化08级1、2、3、4、5、6班考查(开卷考试) 年 月 日 共8页注意事项:1、 满分100分。
要求卷面整洁、字迹工整、无错别字。
2、 考生必须将姓名、班级、学号完整、准确、清楚地填写在试卷规定的地方,否则视为废卷。
3、 考生必须在签到单上签到,若出现遗漏,后果自负。
4、 如有答题纸,答案请全部写在答题纸上,否则不给分;考完请将试卷和答题卷分别一同交回,否则不给分。
试 题一、填空题 (每空1分,共10分)1. 微控制器片外总线按功能分为三种:包括控制总线、 地址 总线和数据 总线。
2. 8051微控制器的CPU 主要包括 运算 和 控制 两大部件。
3. 8051单片机片内有 5 个中断源,其中 2 个外部中断源。
4. 指令POP B 的源操作数是SP ,是 寄存器间接 寻址方式,目的操作数是B ,是寄存器寻址方式。
5. 为确保单片机读键的准确性,消除按键抖动可用 软件消抖 和硬件消抖 两种办法解决。
二、选择题,请将答案填入题后括号内,否则不得分 (每小题2分,共20分) 1. PSW 中的RS1=0、RS0=1时,当前使用的工作寄存区对应的单元是: ( B)A. 00H~07HB. 08H~0FHC. 10H~17HD. 18H~1FH 2. MCS-51单片机用来开放或禁止中断的控制寄存器是:( A )A. IEB. IPC. TCOND. EA3.下列指令中错误的是:( B )A. MOVX ﹫R0,AB. SUB R4,R3C. ANL 20H,#20HD. ADDC A,R44.8051微控制器的晶振频率为fosc=12MHz,则执行一条双周期指令需要( C )A. 1µSB. 0.5µSC. 2µSD. 4µS5.MCS-51中,PC的值是:( B )A. 当前指令前一条指令的地址B. 当前正在执行指令的地址C. 下一条指令的地址D. 控制器中指令寄存器的地址6.8051微控制器的定时器T0工作在计数方式时:( D )A. 由内部时钟频率定时,一个时钟周期加1B. 由内部时钟频率定时,一个机器周期加1C. 对外部计数脉冲计数,上升沿加1D. 对外部计数脉冲计数,至少需要二个机器周期才能识别1个计数脉冲7.以下不属于液晶显示器LCD的特点的是( B )A. 体积小、重量轻、功耗低B. 耐高温等恶劣环境C. 可分为笔段式、字符点阵式和图形点阵式D. 字符点阵式LCM的控制器可分为带字库型和不带字库型8.以下8051中断优先级控制的叙述中,错误的是( D )A. 低优先级不能中断高优先级,但高优先级能中断低优先级B. 同级中断不能嵌套C. 同级中断请求按时间的先后顺序响应D. 同时同级的多中断请求,将形成阻塞,系统无法响应9.如果把8255A的A1、A0分别与80C51的P2.l、P2.0连接,则8255A的A、B、C 口和控制寄存器的地址可能是( B )A. ××00H~××03HB. 00××H~03××HC. 0×××H~3×××HD. ×00×H~×03×H10.与其他接口芯片不同,A/D转换芯片中通常需要编址的是( C )A. 用于转换数据输出的数据锁存器B. A/D转换电路C. 模拟信号输入的通道D. 地址锁存器三、判断题(正确的划“√”,错误的划“×” )(每小题1分,共10分) 1. MCS-51单片机的数据空间与程序空间是独立编址的。
(√) 2. CPU 取指令时,完全由程序计数器PC 控制。
(√) 3. DAC0832是8位D/A 转换器,其输出量为电流量。
(√) 4. 8051片内RAM 的任何一个单元均可进行位操作。
(×) 5. 执行LCALL 指令时,栈指针SP 的内容不会发生变化。
(×) 6. 执行CLR 30H 指令后,30H 字节单元被清0。
(×)7. 只要中断允许寄存器IE 中的EA=1,那么中断请求就一定能够得到响应。
(×) 8. CPU 在响应INT0中断时,INT0的中断申请标志IE0要用软件清除。
(×) 9. MOV C ,00H 指令中00H 是字节地址。
(×) 10. 特殊功能寄存器都具有位地址。
(×)四、读程序及绘图题 (共30分,每题10分) 1. 读下列程序,回答问题。
MOV R0,# data MOV A ,@R0 RL A MOV R1,ARL A RL A ADDA ,R1MOV @R0,A上述程序段实现的功能是:把data 单元的内容乘以10放回原单元(2分); 若程序执行前data=40H ,(40H)=10H ,执行上述程序段后,(A )=0A0H (2分),(40H )= 0A0H (2分),(R0)= 40H (2分),(R1)= 20H (2分)。
2. 下图为8051扩展3片2764的电路连接示意图,用片选法完成剩下的硬件电路连接并写出每一片2764的地址范围(用十六进制数表示,否则不得分)。
58555882764可外扩作为8051的 程序 存储器,单片2764容量是: 8K 字节 ;(2分) 第(1)片2764的地址范围是: C000H ~DFFFH ;(2分) 第(2)片2764的地址范围是: A000H ~BFFFH ;(2分) 第(3)片2764的地址范围是: 6000H ~7FFFH 。
(2分) 3. 读下列程序,回答问题。
void main(void) {unsigned char data var1; unsigned char pdata *dp1; unsigned int xdata *dp2; unsigned char data *dp3; var1=XBYTE[0x0005]; dp1=0x30; dp2=0x1000; *dp1=0xff; *dp2=0x1234; dp3=&var1; *dp3=0x20; while(1); }上述程序段中“pdata ”的含义是指:以Ri 间接访问的片外RAM 低256Byte (1分);“xdata ”的含义是指: 以DPTR 间接访问的片外RAM ,可访问全部64KB 范围(1分);执行完上述指令后:变量var1的值是 0x20(2分) ,片外0x1000单元的内容是 0x12(2分),片外0x1001单元的内容是0x34(2分) ,dp3的值是0x08(2分) 。
绘图2分产2. 设fosc =11.0592MHz ,试编写一段程序,其功能为对串行口初始化,使之工作于方式1,波特率为1200bps ,SMOD=0;并用查询串行口状态的方法,读出接收缓冲器的数据并回送到发送缓冲器。
答:Baud=120012)256(322)256(322mod mod=⨯-⨯⨯=-x f T x osc s s ,smod=0 时,x =232=E8H(3分)和ALE输入高电平脉冲时,启动一次A/D转换。
EOC为高电平时,A/D转换结束,当OE输入为高电平时,可读取A/D转换的结果。
(1)A/D转换通道端口地址分别是多少?(未连接地址引脚取“0”)(2)根据图形编写采集8路模拟量程序,并将结果存入20H地址开始的内部RAM中。
74LS373 Array模模答:(1)由图可得,A/D转换通道端口地址范围是0000H~0007H (2分)(2)程序如下:汇编:ORG 0003HLJMP INT0ORG 0100H ;主程序MAIN: MOV R0,#30H ;设立数据存储区指针MOV R2,#08H ;设置8路采样计数值SETB IT0 ;设置外部中断0为边沿触发方式SETB EA ;CPU开放中断SETB EX0 ;允许外部中断0中断MOV DPTR,#0000H ;送入口地址并指向IN0 (2分) LOOP:MOVX @DPTR,A ;启动A/D转换,A的值无意义(2分) HERE:SJMP HERE ;等待中断ORG 0200H ;中断服务程序INT0:MOVX A,@DPTR ;读取转换后的数字量MOV @R0,A ;存入片内RAM单元INC DPTR ;指向下一模拟通道INC R0 ;指向下一个数据存储单元DJNZ R2,NEXT ;8路未转换完,则继续CLR EA ;已转换完,则关中断CLR EX0 ;禁止外部中断0中断RETI ;中断返回(2分) NEXT:MOVX @DPTR,A ;再次启动A/D转换RETI ;中断返回(2分)C语言:#include <reg51.h>#include <absacc.h> //定义绝对地址访问#define uchar unsigned char#define IN0 XBYTE[0x0000] //定义IN0为通道0的地址static uchar data x[8] _at_ 0x20; //定义0x20开始的数组,存放结果uchar xdata *ad_adr; //定义指向通道的指针uchar i=0;void main(void){IT0=1; //初始化EX0=1;EA=1;i=0;ad_adr=&IN0; //指针指向通道0*ad_adr=i; //启动通道0转换(3分)while(1); //等待中断}void int_adc(void) interrupt 0 //中断函数{x[i]=*ad_adr; //接收当前通道转换结果i++;ad_adr++; //指向下一个通道(3分) if (i<8){ *ad_adr=i; } //8个通道未转换完,启动下一个通道返回else{ EA=0;EX0=0; } //8个通道转换完,关中断返回}(2分)。