单片机考试.docx
- 文档编号:29853531
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:26
- 大小:156.92KB
单片机考试.docx
《单片机考试.docx》由会员分享,可在线阅读,更多相关《单片机考试.docx(26页珍藏版)》请在冰豆网上搜索。
单片机考试
微机原理与应用
课程复习
要求掌握:
1、第一章:
计算机的基础知识
计算机的历史与发展,计算机的基本构成、工作原理、微机的三总线、数的数制与编码,如补码、ASCII码、BCD码等;
2、第二章:
MCS51系列单片机的结构与组成
MCS51系列单片机的结构、特性、功能,内部寄存器、单片机的片内/片外程序存储空间与地址,片内/片外RAM存储空间与地址、SFR名称、功能、地址及其特性,位地址单元的分布、51单片机的端口特性(P0~P3的特性、引脚功能)、常用的51系列单片机(8031、89C51、89C2051及52系列单片机),51单片机的最小系统、51单片机的时序等硬件特性;这是进行单片机应用设计的基础知识。
重点章节
3、第三章:
指令系统
熟悉MCS51系列单片机的指令系统(7种寻址方式、5种指令类型)常用到的指令及其特性【那种指令是正确的】,熟悉常用指令的功能、字节长度、指令的执行时间等。
重点章节
4、第四章:
汇编语言程序设计
掌握程序设计的基本要求与方法,8条伪指令及其特性与应用方法,程序设计的基本框图,程序的5种基本类型及其特性,熟悉常用的典型程序(如延时程序、置数程序、排序程序、搜索程序、拆字程序、显示程序等),能进行典型汇编语言程序的设计;重点章节
5、第五章:
MCS51系列单片机的中断系统
掌握单片机中断的特性与要求,熟悉MCS51系列单片机的中断系统(功能、特性、应用方法,中断入口地址、中断标志、中断的开放与禁止,外部中断与内部中断等),能利用中断技术进行程序设计。
6、第六章:
MCS51单片机的CTC
熟悉MCS51系列单片机的CTC系统(工作原理、功能、用途、特性、应用方法等),CTC的工作模式、,CTC的计数与定时特性、CTC的中断特性、CTC的典型应用,掌握使用CTC的基本方法。
7、第七章:
MCS51单片机的存储扩展
掌握常用的存储芯片(SRAM/EPROM)的功能、引脚、使用方法,掌握51单片机对片外程序/数据存储器的寻址特性,掌握单片机程序存储器的配置特性和数据存储器的配置特性,设计51单片机的存储扩展电路,掌握如何确定存储地址的方法。
8、第八章:
I/O扩展与并行I/O接口芯片8255
熟悉单片机I/O扩展的特性与要求,掌握8255芯片的结构与应用特性,掌握8255芯片的端口特性,控制字的组成,PA/PB/PC的异同,能使用8255芯片对MCS51系统进行并行I/O端口扩展,能确定8255芯片在单片机系统中的地址,能利用8255进行编程设计。
9、第九章:
熟悉单片机应用系统的一般开发步骤,了解单片机开发系统的功能,至少较熟练掌握一种单片机仿真开发软件,掌握单片机应用开发的基本方法。
总要求:
熟悉51单片机的硬件特性、熟悉51单片机的指令系统,能看懂单片机电路图、自行设计单片机应用电路图,为51单片机应用系统设计基本的程序,掌握典型应用程序设计。
《单片机原理与应用》课程
考试题型
1、判断与填空
2、回答提问
3、改错
4、编程设计
5、系统硬件分析与设计
考试中的典型题型
1.试说明微机系统、微机、中央处理器(CPU)、微处理器、微机开发系统等名词的意义与区别。
2.计算机中为何要采用二进制?
十六进制在计算机中起何作用?
CPU是否可以直接执行十六进制数?
3.简述AT89C51单片机片内与片外RAM的空间分配。
4.MCS51单片机支持的中断数量及中断入口地址;
5.如何改变8051的当前工作寄存器组?
6.指出下列每条指令的寻址方式及其功能
1、MOVA,#40H2、MOVA,40H
3、MOVA,@R04、MOVA,R5
5、MOVCA,@A+DPTR6、SJMPLOOP
7.写出下列指令的机器码并指出每条指令中的50H或66H代表的是什么?
1、MOVA,#50H2、MOV@R0,#66H
MOVA,50HMOVR6,#66H
MOV50H,#20HMOV66H,#45H
MOVC,50HMOV66H,C
MOV50H,20HMOV66H,R1
8.编程,将8031单片机片内RAM40H~4FH单元中的数据传送到片内RAM60H~6FH单元中。
9.编程,将8031单片机片外RAM1000H~1030H单元中的数据顺序传送到片内RAM从30H开始的地址单元中。
其他:
要求每过1s传送1B数据,该如何设计程序?
10.试编写程序,判断30H单元中的数据是奇数还是偶数,是奇数则把31H单元置1,是偶数则把31置0。
要求不破坏30H单元的内容。
12.在单片机片外RAM中,有起始地址为SOURCE及长度为LEN的数据块(长度不超过256B),试编一程序,将该数据块中的奇数(字节中1的个数为奇数)选出并送到以片外RAM起始地址为DIST为地址单元中。
13.请编程,把片内RAM以BLOCK为起始地址的100个无符号数中的最大数找出来(有几个找几个)并放入MAX单元,最大数的个数送NUM单元。
14.编程,将片内RAM50/51H单元中的2个8b无符号数X、Y进行
Z=8X+3Y+12H的运算,和(Z)存入片内RAM60/61H单元。
(高位在前)
15.对一8031单片机应用系统,已知其时钟频率为12MHZ,需将8031片内定时计数器设置成:
CT0:
50mS定时,申请中断,自启动;此时TMOD值应为多少?
TH0/TL0应取值多少?
16.用单片机片内定时计数器CT0和中断方法设计一个单片机秒、分脉冲发生器。
要求同时从P1.0产生秒脉冲,P1.1产生分脉冲。
17.试设计一个单片机控制的大会发言限时器(限时15分钟)。
具体要求是:
当发言者开始讲话时,主持人按动“START”键,15分钟后由单片机控制发出提示信号,提示信号由你自己设置。
已知单片机晶振频率为6MHz,另有1Hz脉冲源为可选件。
1)用文字叙述至少两种设计思想。
(
2)具体实现一种方案,要求给出硬件电路和设计软件,硬件电路设计需尽可能详细,必须包括时钟电路、复位电路、按键电路、提示显示电路等。
18.用8031、LS373、EPROM2764、SRAM6264和8255芯片设计一个单片机应用系统,要求设置EPROM2764的起始地址为0000H,设置SRAM6264的起始地址为8000H。
1)请画出该应用系统的详细电路图并作设计说明,可以使用译码芯片。
(必须要有设计说明)
2)给出8255芯片的地址,说明8255芯片至少须占用系统多少个地址单元。
3)编程,将SRAM6264中的512B数据从8255的PA端口输出。
19:
设计程序,要求当P1.0~P1.3的任一输入值为0时,P1.4~P1.7的输出为1111(点亮4个LED管);当P1.0~P1.3的输入值为1111时,P1.4~P1.7输出一个每0.5秒左移一位的1,使连至P1.4~P1.7的4个LED管循环点亮(即一次点亮一个LED,每0.5秒移一位)。
20:
编程,已知晶振频率为12MHz,要求必须使用CT0中断技术,在P1.0=0时,P1.7恒为高电平;而P1.0=1时,从P1.7输出周期为2秒的方波脉冲。
21:
编程,将8031单片机片内RAM40H至49H单元中的十字节无符号数相加,和送入50H和51H单元(高位在前)。
22、用8031、LS373、EPROM2764和SRAM6264芯片设计一个单片机应用系统,要求设置EPROM2764的起始地址为0000H,设置SRAM6264的起始地址为8000H,请画出该应用系统的详细电路图并作设计说明,可以使用译码芯片。
(必须要有设计说明)
单片机习题解答
E4-4.ASM程序
题目:
设计程序,要求当P1.0~P1.3的任一输入值为0时,P1.4~P1.7的输出为1111(点亮4个LED管);当P1.0~P1.3的输入值为1111时,P1.4~P1.7输出一个每0.5秒左移一位的1,使连至P1.4~P1.7的4个LED管循环点亮(即一次点亮一个LED,每0.5秒移一位)。
编程如下:
ORG0000H
ST:
MOVP1,#0FH;使P1的高4位输出0,低4位FET截止!
AGAIN:
MOVR7,#1FH;R7中存储输出码
LOOP:
MOVA,P1;读P1状态
ANLA,#0FH;P1高4位清0,低4位数据保留
XRLA,#0FH;检查P1低4位输入数据是否全为1
JZROTAT;P1低4位输入数据全为1则转移
LIGHT:
MOVA,#0FFH;否则从P1高4位输出4个1
MOVP1,A
SJMPLOOP
ROTAT:
MOVP1,R7;输出码送到P1
MOVR2,#30H;延时
LCALLDELAY
MOVA,R7;取回输出码
ANLA,#0F0H;保留输出码的高4位,低4位置0
RLA;输出码左移1位
CJNEA,#01H,GOON;“1”未移到右1位,则转移
SJMPAGAIN;“1”已移到右1位,则重复工作
GOON:
ORLA,#0FH;将输出码的低4位置1
MOVR7,A;输出码送回R7中
SJMPLOOP;循环工作
DELAY:
PUSH02H
LOOP1:
PUSH02H
LOOP2:
PUSH02H
LOOP3:
DJNZR2,LOOP3
POP02H
DJNZR2,LOOP2
POP02H
DJNZR2,LOOP1
POP02H
DJNZR2,DELAY
RET
END
题目:
编程,将片内RAM50/51H单元中的2个8b无符号数X、Y进行Z=8X+3Y+12H的运算,和(Z)存入片内RAM60/61H单元。
(高位在前)
解:
设50H单元中的数为X,51H单元中的数为Y,由于X与Y不会大于255,故Z=8X+3Y+12H用2Byte表示足够了。
编程如下:
ORG0000H
START:
MOVA,50H
MOVB,#08H
MULAB;A*B=BA
ADDA,#12H
MOV61H,A;(61H)=A+12H
MOVA,B;低8位相加若有进位,则往高8位增1
ADDCA,#00H
MOV60H,A;(60H)=B+C
;到此,已进行了Z=8X+12H的相加运算
MOVA,51H
MOVB,#03H
MULAB;(60H)(61H)
ADDA,61H;+BA
MOV61H,A;(60H)(61H)
MOVA,B
ADDCA,60H;带进位的加
MOV60H,A
SJMP$;动态停机
END
题:
编程,将8031单片机片内RAM40H至49H单元中的十字节无符号数相加,和送入50H和51H单元(高位在前)。
ORG0000HST:
MOVR0,#40HMOVR1,#51HMOVR7,#0AHCLRAMOV50H,AMOV51H,ALOOP:
MOVA,@R1ADDA,@R0JCADD1LOOP1:
MOV@R1,AINCR0DJNZR7,LOOPSJMPQUITADD1:
INC50HSJMPLOOP1QUIT:
SJMPQUITEND
题:
编程,将8031单片机片外RAM1000H~1030H单元中的数据顺序传送到片内RAM从30H开始的地址单元中。
解:
编程如下:
ORG0000H
MOVDPTR,#1000H;指向片外RAM1000H地址单元
MOVR0,#30H;指向片内RAM30H地址单元
LOOP:
MOVXA,@DPTR;取出片外RAM1000H地址单元中的数据
MOV@R0,A;写入片内RAM30H地址单元
INCDPL;修改片外RAM单元的地址值
INCR0;修改片内RAM单元的地址值
CJNER0,#61H,LOOP;未完成全部数据传送则循环
SJMP$;动态停机
END
若要求每过1秒进行1次(1B)数据传送,则需要进行1秒的定时设置!
我们可使用单片机片内CT0作为50mS定时设计,再进行20倍的定时扩展,则可获得1秒的定时时间。
我们可使用中断,当1秒定时时间到,在中断服务程序中,进行1B数据传送,直到全部49B数据传送完毕!
(设单片机fo=12MHz)
设计如下:
设计CT0工作在方式1定时工作状态,
TMOD=0000,0001B=01H
TC=65536-50000/1=15536=3CB0H,则取:
TH0=3CH
TL0=0B0H
可编程如下:
ORG0000H
LJMPMAIN
;
ORG000BH
LJMPCT0S
;
ORG0030H
MAIN:
MOVTMOD,#01H
MOVTH0,#3CH;设置CT0为50mS定时
MOVTL0,#0B0H
SETBPT0;设置CT0为高优先权
SETBET0;允许CT0中断
SETBEA;开放CPU中断
SETBTR0;启动CT0
MOVR7,#14H;秒定时扩展倍数为20
MOVDPTR,#1000H;指向片外RAM1000H地址单元
MOVR0,#30H;指向片内RAM30H地址单元
LOOP:
CJNER0,#61H,L00P;未完成全部数据传送则循环等待
CLRTR0;已完成全部数据传送则停止CT0工作
CLRET0;关闭CT0中断允许
SJMP$;动态停机
;
CT0S:
MOVTH0,#3CH;恢复CT0的时间常数
MOVTL0,#0B0H
DJNZR7,QUIT;未到1S则退出
MOVR7,#14H;到了1S,则恢复R7的初值
MOVXA,@DPTR;取出片外RAM1000H地址单元中的数据
MOV@R0,A;写入片内RAM30H地址单元
INCDPL;修改片外RAM单元的地址值
INCR0;修改片内RAM单元的地址值
QUIT:
RETI;中断返回
END
题:
1、对一8031单片机应用系统,已知其时钟频率为12MHZ,需将8031片内定时计数器设置成:
CT0:
10mS定时,申请中断,自启动;CT1:
对外部信号16位计数,不中断申请,自启动,问:
此时TMOD值应为多少?
TH0/TL0、TH1/TL1值应为多少?
解:
设计如下:
TMOD=0101,0001B
TH0/TL0=(65,536-10,000/1)=55536=D8F0H
TH1/TL1=00H/00H
题:
使CT0以中断方法产生秒、分脉冲,要求从P1.0端产生秒脉冲,P1.1产生分脉冲。
已知f=12MHz。
解:
编程设计如下:
CT0定时50mS,每过0.5S对P1.0取反1次,则秒定时扩展倍数R7=10=0AH,分定时扩展倍数R6=60=3CH
TMOD=0000,0001B
TH0/TL0=(65,536-50,000/1)=15536=3CB0H
ORG0000H
LJMPMAIN
;
ORG000BH
LJMPCT0S
;
ORG0030H
MAIN:
MOVTMOD,#01H
MOVTH0,#3CH;设置CT0为50mS定时
MOVTL0,#0B0H
MOVR6,#3CH;分定时扩展倍数为60
MOVR7,#0AH;秒定时扩展倍数为10
SETBPT0;设置CT0为高优先权
SETBET0;允许CT0中断
SETBEA;开放CPU中断
SETBTR0;启动CT0
REP:
SJMPREP;循环等待
;
CT0S:
MOVTH0,#3CH;恢复CT0的时间常数
MOVTL0,#0B0H
DJNZR7,QUIT;未到0.5S则退出
MOVR7,#0AH;到了0.5S,恢复R7的初值
CPLP1.0;对P1.0取反
DJNZR6,QUIT;未到0.5分则退出
MOVR6,#3CH;到了0.5分则恢复R6的初值
CPLP1.1;同时对P1.1取反
QUIT:
RETI;中断返回
END
题:
对一8031单片机应用系统,两个4位2进制数分别从8031P1口的高、低4位输入,P3口的高5位连接有5个LED发光二极管。
请设计程序,要求在按下外部中断申请INT0开关后,这5个LED发光二极管将显示输入的这两个4位2进制数之和(包括进位状态)。
解:
电路设计如下:
程序设计如下:
ORG0000H
LJMPMAIN
ORG0003H
SJMPINT0S
MAIN:
CLRA
MOVP3,A;P3清0,
SJMP$;动态停机
INT0S:
MOVA,P1;读P1端口的输入数据
MOVR7,A;暂存在R7中
ANLA,#0FH;得到P1的低4位数(DATA1)
MOVR0,A;P1的低4位数暂存在R0中
MOVA,R7;取回P1值
SWAPA;高/低4位交换
ANLA,#0FH;得到P1的高4位数(DATA2)
ADDA,R0;与低4位数相加
RLA;移到高5位
RLA
RLA
MOVP3,A;送至P3口
RETI;中断返回
END
题:
编程,已知晶振频率为12MHz,要求必须使用CT0中断技术,在P1.0=0时,P1.7恒为高电平;而P1.0=1时,从P1.7输出周期为2秒的方波脉冲。
解:
设计如下:
CT0定时50mS,每过1S对P1.7取反1次,
则定时扩展倍数R7=20=14H
TMOD=0000,0001B=01H
TH0/TL0=(65,536-50,000/1)=15536=3CB0H
ORG0000H
LJMPMAIN
;
ORG000BH
LJMPCT0S
;
ORG0030H
MAIN:
MOVTMOD,#01H
MOVTH0,#3CH;设置CT0为50mS定时
MOVTL0,#0B0H
MOVR7,#14H;定时扩展倍数为20
SETBPT0;设置CT0为高优先权
SETBET0;允许CT0中断
SETBEA;开放CPU中断
SETBTR0;启动CT0
SJMP$;循环等待
;
CT0S:
MOVTH0,#3CH;恢复CT0的时间常数
MOVTL0,#0B0H
DJNZR7,QUIT;未到1S则退出
MOVR7,#14H;到了1S,恢复R7的初值
JBP1.0,PULSE;P1.0=1,则去对P1.7取反
SETBP1.7;P1.0=0,则置P1.7=1
SJMPQUIT
PULSE:
CPLP1.7;P1.0=1时,每秒对P1.7取反1次
QUIT:
RETI
END
例、用8031、LS373、EPROM2764和SRAM6264芯片设计一个单片机应用系统,要求设置EPROM2764的起始地址为0000H,设置SRAM6264的起始地址为8000H,请画出该应用系统的详细电路图并作设计说明,可以使用译码芯片。
(必须要有设计说明)
3.6写出下列指令的机器码并指出下列指令被执行后各指令的执行结果.
1、MOVA,#60H2、MOVDPTR,#2003H
MOVR0,#40HMOVA,#18H
MOV@R0,AMOV20H,#38H
MOV41H,R0MOVR0,#20H
XCHA,R0XCHA,@R0
7460H902003H
7840H7418H
F6H752038H
8841H7820H
C8HC6H
结果:
A=40H,A=38H
R0=60H,R0=20H
(40H)=60H,(R0)=(20H)=18H
(41H)=40H
3.9已知(20H)=X、(21H)=Y、(22H)=Z,请用图示写出程序执行后,堆栈中的内容。
1、MOVSP,#70H2、MOVSP,#60H
PUSH20HPUSH22H
PUSH21HPUSH21H
PUSH22HPUSH20H
解:
SP=73HSP=63H
(71H)=X(61H)=Z
(72H)=Y(62H)=Y
(73H)=Z(63H)=X
3.10已知SP=63H、(61H)=X、(62H)=Y,(63H)=Z,试问程序执行后,20H、21H、22H单元的内容是多少?
1、POP20HPOP22H
POP21HPOP21H
POP22HPOP20H
3.19已知:
SP=70H,PC=2345H,试问执行指令LCALL3456H后,SP和堆栈中的内容是多少?
此时CPU将执行何处的子程序?
答:
执行指令LCALL3456H后,SP=72H,(71H)=48H,(72H)=23H,此时CPU将执行3456H处的子程序
3.20在上题中,当8031CPU执行完子程序的最后一条指令(RET)后,SP和PC将等于多少?
71H、72H单元中的值是多少?
答:
因为RET的功能就是把存在堆栈中的数据送回到PC,故当8031CPU执行完子程序的最后一条指令(RET)后,PC=2348H,SP=70H
3.21编程,将8031单片机片内RAM40H~4FH单元中的数据传送到片内RAM60H~6FH单元
ORG0100H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 考试