1、第 1 页四川理工学院试卷(2009 至 2010 学年第 1学期)课程名称:微控制器技术 (A 卷) 参考答案及评分标准命题教师:适用班级:自动化 07 级 1、2、3、4 班考试 年 月 日 共 8 页注意事项:1、 满分 100 分。要求卷面整洁、字迹工整、无错别字。2、 考生必须将姓名、班级、学号完整、准确、清楚地填写在试卷规定的地方,否则视为废卷。3、 考生必须在签到单上签到,若出现遗漏,后果自负。4、 如有答题纸,答案请全部写在答题纸上,否则不给分;考完请将试卷和答题卷分别一同交回,否则不给分。试 题一、填空题 (每空 1分,共 25分)1. 单片机是将 CPU 、 存储器 、 I
2、/O 接口 和相应的控制部件集成到一块芯片上形成的微型计算机。2. 在存储器结构上,8051 微控制器采用的是 哈佛 结构,具有 数据 和 程序 两种存储器,每种存储器的最大存储空间可达 64KB 。3. 8052 芯片有 3 个定时/计数器, 6 个中断源。4. 已知 SP25H,PC=2345H,标号 Label 的地址为 3456H,问执行 LCALL Label 指令后,堆栈指针 SP= 27H , (26H) 48H , (27H) 23H ,PC= 3456H 。5. 8051 微控制器的中断系统最多可以有 2 级中断嵌套。外部中断的触发方式有两种,分别为 低电平触发 和 下降沿触
3、发 。6. 指令 POP B 的源操作数是 SP ,是 寄存器间接 寻址方式,目的操作数是 B ,是 寄存器 寻址方式。7. MCS-51 单片机的串行口有 4 种工作方式,其中方式 0 是 移位寄存器 方式,用 RXD 引脚传送数据,用 TXD 引脚输出同步时钟信号。8. I2C 总线由一根_ 数据线 _和一根_ 时钟线 _构成。题号 一 二 三 四 总分 评阅(统分)教 师得分得分 评阅教师系 专业 级 班 学号 姓名 密 封 线 密 封 线 内 不 要 答 题 第 2 页二、选择题,请将答案填入题后括号内 (每小题 2分,共 20分)1. 单片机能直接运行的程序叫 ( C )A. 源程序
4、 B. 汇编程序 C. 目标程序 D. 编译程序2. 8051 与 80C51 的区别在于: ( B )A. 内部 ROM 的类型不同 B. 半导体工艺的形式不同C. 内部寄存单元的数目不同 D. 定时器数目不同3. 8051 微控制器的晶振频率为 fosc=24MHz,则执行一条双周期指令需要 ( A )A. 1S B. 0.5S C. 2S D. 4S4. 下列指令中错误的是: ( D )A. MOV R0,A B. ADD A,R4C. ANL 20H,#20H D. SUB R4,R35. 8031 微控制器的定时器 T0 工作在计数方式时: ( D )A. 由内部时钟频率定时,一个时
5、钟周期加 1B. 由内部时钟频率定时,一个机器周期加 1C. 对外部计数脉冲计数,上升沿加 1D. 对外部计数脉冲计数,至少需要二个机器周期才能识别 1 个计数脉冲6. 以下 MCS-51 中断优先级控制的叙述中,错误的是 ( D )A. 低优先级不能中断高优先级,但高优先级能中断低优先级B. 同级中断不能嵌套C. 同级中断请求按时间的先后顺序响应D. 同时同级的多中断请求,将形成阻塞,系统无法响应7. 外中断初始化的内容不包括 ( A )A. 设置中断响应方式 B. 设置外中断允许C. 设置中断总允许 D. 设置中断方式8. 在进行串行通信时,若两机的双向发送与接收只能分时进行,则为 ( A
6、 )A. 半双工传送 B. 单工传送C. 全双工传送 D. 以上都不对9. 关于 I2C 总线的描述,错误的是 ( C )A. 属于串行总线B. 传递信息数据时,数据线上每一位信息的改变必须发生在时钟线为低电平期间C. 发送开始信号和结束信号时,时钟线应为低电平D. 器件地址码包含器件类型码、片选码和读写控制码得分 评阅教师第 3 页10. 以下不属于液晶显示器 LCD 的特点的是 ( B )A. 体积小、重量轻、功耗低B. 耐高温等恶劣环境C. 可分为笔段式、字符点阵式和图形点阵式D. 字符点阵式 LCM 的控制器可分为带字库型和不带字库型三、读程及分析题 (共 19分)1. 读下列程序,回
7、答问题。 (6 分,第一空 2 分,后面四空每空 1 分)MOV R0,# dataMOV A,R0RL AMOV R1,ARL ARL AADD A,R1MOV R0,A 上述程序段实现的功能是: 把 data 单元的内容乘以 10 放回原单元 ;若程序执行前 data=40H,(40H)=10H,执行上述程序段后, (A )= A0H , ( 40H)= A0H , (R0)= 40H ,(R1)= 20H 。2. 读下列程序,回答问题。 (7 分,第一空 3 分,后面四空每空 1 分)void main(void)unsigned char data var1;unsigned char
8、 pdata *dp1; unsigned int xdata *dp2; unsigned char data *dp3; dp1=0x30; dp2=0x1000; *dp1=0xff; *dp2=0x1234; dp3= *dp3=0x20; 得分 评阅教师系 专业 级 班 学号 姓名 密 封 线 密 封 线 内 不 要 答 题 第 4 页上述程序段中“pdata”的含义是指:以 Ri 间接访问的片外 RAM 低 256Byte ;执行完上述指令后,变量 var1 的值是 0x20 ,片外 0x30 单元的内容是 0xff ,片外 0x1000 单元的内容是 0x34 ,片外0x1001
9、 单元的内容是 0x12 。3. 下图为 8051 扩展 3 片存储器 2764 的电路连接示意图,看图完成下列问题。(6 分)585558 8用十六进制数表示各片 2764 的地址范围。第(1)片 2764 的地址范围是: C000HDFFFH (2 分) ;第(2)片 2764 的地址范围是: A000HBFFFH(2 分) ;第(3)片 2764 的地址范围是: 6000H7FFFH (2 分) 。四、综合编程题,编程语言不限,程序应有适当注释 (每小题 12分,共 36分)1. 下图是 8051 的并口扩展图,根据图写出 8255 的 A 口、B 口、C 口和控制口的地址,假设 805
10、1 未用的 P2 口引脚都为“1” 。8255 的 A 口和 B 口都工作得分 评阅教师符号 地址 D7 D6 D5 D4 D3 D2 D1 D0TCON 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TMOD 89H GATE C/T M1 M0 GATEC/T M1 M0IE A8H EA ET2 ES ET1 EX1 ET0 EX0SCON 98H SM0 SM1 SM2 REN TB8 RB8 TI RIPCON 87H SMOD第 5 页于方式 0,编制在 8 个共阴极数码管上从 D0 到 D7 分别显示 18 的程序。已知 09 的字段码表: 0x3f, 0
11、x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f;选通 D0 到 D7 位选码:0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f。 (如果使用延时函数,可只说明不写内容)2.答:8255 的 A 口、B 口、C 口和控制口的地址分别是:7F00H、7F01H、7F02H 、7F03H。 (4 分)D0 D1 D2 D7OEGD0 Q0D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6D7 Q774LS373VCCOEGD0 Q0D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6
12、D7 Q774LS373VCCPA0PA1PA2PA3PA4PA5PA6PA7PB1PB2PB3PB4PB5PB6PB7PB0P2.7 CSWR WRRD RDACE A0A1A0A1P0 D0D78 88051825574LS373系 专业 级 班 学号 姓名 密 封 线 密 封 线 内 不 要 答 题 #include #include /定义绝对地址访问(2 分)void delay(void) /延时函数unsigned char codevalue9=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f;unsigned char
13、chocode8=0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f; (2 分)void main(void) unsigned int i; XBYTE0x7f03=0x80; /8255A 初始化(2 分)while(1) for (i=0;ivoid main(void) unsigned char buf;SCON=0x50;TMOD=0x20;TH1=0xE8;TL1=0xE8;PCON=0x00;TR1=1; (4 分)while(1) while(RI=0);buf=SBUF;RI=0; (2 分)SBUF=buf;While(TI=0
14、);TI=0; (2 分)第 7 页3. 下图是 ADC0809 与微控制器 89C51 的接口电路图,读图完成下列问题。提示:当 START 和 ALE 输入高电平脉冲时,启动一次 A/D 转换。EOC为高电平时,A/D 转换结束,当 OE 输入为高电平时,可读取 A/D 转换的结果。(1) A/D 转换通道端口地址范围是多少?(未连接地址引脚取 “0”)(2) 根据图形编写采集 8 路模拟量程序,并将结果存入 20H 地址开始的内部RAM 中。P 0 . 0P 0 . 7A L EP 2 . 0WRDINTE O CABCC L KD 0 D 7S T A R TA L EO EA D C
15、 0 8 0 9VR E F +VR E F -I N 0I N 7模拟量输入 5 v8 9 C 5 17 4 L S 3 7 3D 0D 7Q 0Q 1Q 2GOE(1)由图可得,(1) A/D 转换通道端口地址范围是 0000H0007H (2 分)(2)程序如下:ORG 0003HLJMP INT0ORG 0100H ;主程序MAIN: MOV R0,#30H ;设立数据存储区指针MOV R2,#08H ;设置 8 路采样计数值SETB IT0 ;设置外部中断 0 为边沿触发方式 SETB EA ;CPU 开放中断系 专业 级 班 学号 姓名 密 封 线 密 封 线 内 不 要 答 题
16、第 8 页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 ;中断返回
17、 (4 分)NEXT: MOVX DPTR,A ;再次启动 A/D 转换RETI ;中断返回 (2 分)#include #include /定义绝对地址访问#define uchar unsigned char#define IN0 XBYTE0x0000 /定义 IN0 为通道 0 的地址static uchar data x8 _at_ 0x20; /定义 0x20 开始的数组,存放结果uchar xdata *ad_adr; /定义指向通道的指针uchar i=0;void main(void)IT0=1; /初始化EX0=1;EA=1;i=0;ad_adr= /指针指向通道 0*ad_adr=i; /启动通道 0 转换 (4 分)while(1); /等待中断void int_adc(void) interrupt 0 /中断函数xi=*ad_adr; /接收当前通道转换结果i+;ad_adr+; /指向下一个通道 (4 分)if (i8) *ad_adr=i; /8 个通道未转换完,启动下一个通道返回else EA=0;EX0=0; /8 个通道转换完,关中断返回 (2 分)