2011-2012-1单片机原理及应用复习大纲

更新时间:2024-01-30 19:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2011-2012-2单片机原理及应用复习大纲

一、填空(20分)

1、单片机就是一个在其中集成了中央处理器、存储器、输入输出接口的,具有计算机基本属性的大规模集成电路芯片。

2、为了强调单片机的控制属性,在国际上,多把单片机称为微控制器其英文缩写为MCU。在使用时,通常处于测控系统的核心地位,并嵌入其中,所以也称其为嵌入式微控制器其英文缩写为EMCU。

3、通用型单片机把所有可开发的内部资源全部提供给用户。用户可以以此为核心,根据需要,再配以外部接口电路及外围设备,来开发满足各种不同需要的测控系统。

4、专用型单片机,是为特定产品或某种测控应用而专门设计的。其系统结构最简,性价比最高。

5、单片机具有小巧灵活、成本低、易于产品化。能够方便地组装成各种智能测控设备及各种智能仪器仪表。

6、单片机可靠性好、适应温度范围宽,具有适应恶劣环境的能力。

7、单片机易扩展,很容易构成各种规模的应用系统。利用通信接口可以方便地多机系统和分布式控制系统。

8、单片机的发展趋势是,CPU处理能力不断增强,内部存储器容量不断增大,片内I/O驱动能力及种类不断增加,功耗不断降低以及外围电路的内装化。

9、单片机正在向多功能、高性能、高速度、低电压低功耗、低价格、外围电路内装化及片内存储器不断增大方向发展。

10、MCS-51单片机的基本系列,包括8031、8051和8751

11、嵌入式处理器按体系结构主要分为:嵌入式微控制器,嵌入式信号处理器与嵌入式微处理器。

12、CPU中的PC被称为程序计数器,是用来存放下一条指令地址的。当计算机由此取出指令字节后,PC会自动加1,所以PC的内容始终是指向下一条指令的地址。

13、PSW中的OV是溢出标志。用来表示符号数运算结果是否溢出。=1表示结果溢出。=0结果无溢出。如果两个正数相加结果为负OV=1。如果两个负数相加结果为正OV=1。异号数相加OV=0。

14、PSW中的CY是进位标志。在执行加法指令后,是用来表示位7是否有进位。=1,表示有进位。=0,表示没有进位。

15、PSW中的OV、CY、AC与P标志位是由硬件自动置位的。F0是用户自定义标志,只能通过软件置位。

16、PSW称为程序状态字,其中P用来表示累加器A中的奇偶性的。若其中内容为53H,P=0。

17、MCS-51的内部数据存储器的00~1FH单元,是4组通用工作寄存器区。每组都有8个寄存器,分别是R0~R7。

18、PSW的RS1与RS0是用来选择R0~R7的4个工作寄存器组的,=11时的R7位于片内数据存储器的17H单元;=11时的R7位于片内数据存储器的1FH单元。

19、堆栈在子程序设计中,可以用来保护断点与现场,以及参数传递。 20、机器周期是CPU完成一个基本操作所需要的时间,指令周期是执行一

条指令所需要的时间。

21、MCS-51单片机的P0与P2口,除了可以作为普通的I/O使用以外,还可以作为地址与数据总线使用。P0~P3,可以并行的操作,也可按位进行操作。

22、当系统出现异常,单片机可以通过上电复位或者手动复位操作来重新启动系统。

23、MCS-51单片机的直接寻址方式只限于内部数据存储器与特殊功能寄存器。基址加变址寻址方式用于读出程序存储器的数据。

24、采用中断技术完全消除了CPU在查询中的等待现象,大大提高了CPU的工作效率。

25、IE是MCS-51的中断允许寄存器。可以通过位寻址方式,设置EX0、EX1、ET0、ET1、ES,对各中断源实现允许或者禁止其中断。可以通过对EA位的设置实现系统的开中断与关中断。

26、中断向量是中断处理程序的特定入口。MCS-51单片机是在硬件控制下,自动产生“LCALL 向量地址”指令进入中断服务程序。其中INT1的向量地址是0013H。

27、MCS-51的定时/计数器的计数工作模式是对外来脉冲进行计数。定时工作模式的计数脉冲是来自内部。

28、PSEN:是程序存储器允许输出控制端。此引脚的下降沿作为读外部程序存储器的选通信号。因此,此信号应连接到外部程序存储器的OE端。以区别对外部数据存储器的读操作。

29、WR/RD:作为数据存储器的读写控制,用以区别同一地址总线上的程序存储器。

30、ALE信号称之为地址锁存矢能。用以锁存P0口发出的地址低8位,解决了P0口的数据总线与地址总线低8位的分时复用问题。

二、四选一(每题2分,共10分)

1、寄存器间接寻址是指寄存器中的内容,是操作数的地址。 2、访问外部数据存储器可用指令:MOVX 3、访问程序存储器可用指令:MOVC

4、P0口作为输出端口时必须外接上拉电阻。

5、当系统时钟为12MHz时,方式0的最长定时时间是8196μS

6、如果系统时钟是6MHz,希望定时器定时时间为100mS,应该选择定时/计数器工作在方式1定时模式。

7、MCS-51单片机系统时钟f osc=6MHz时,一个机器周期为2μS。 8、如果需要单片机一个机器周期为3μS,系统时钟应该是4MHz。 9、立即寻址方式,操作数是在指令中。(包括其它寻址方式)

10、指令“MOV A,P1”的助记符格式,在指令表中属于MOV A,direct。 11、P1口作为输入端口时其锁存器应该先为1

12、如果想将P1.0取反,其它位不变可用指令XRL P1,#00000001B 13、查表指令“MOVC A,@A+PC”,所访问的数据表是在程序存储器中。

14、系统复位后,I/O口P0~P15全1。

15、指令寄存器的内容是计算机当前正在执行的指令码 16、指令译码器向CPU解释当前指令功能。 17、从电路图看,区别程序存储器与数据存储器最简单的方法是看其读写控制信号是采用的PSEN还是WR/RD。

18、程序中的标号字段,用来指出其后的指令或数据在程序存储器中的位置。 19、8031没有内部程序存储器。只有128字节的内部数据存储器。 20、外部程序存储器的只能采用译码法,不能采用线选法。 21、指令“MOV P1,A”是一条输出指令。 22、指令“MOV C,P1.5”是一条输入指令。

23、对程序存储器数据读操作的指令只能用MOVC指令。

24、51单片机中,所有的中断请求信号都可以标记在TCON与SCON寄存器中。

三、判断,正确打?,错误打?。(10分)

1、R0~R7是特殊功能寄存器。? 2、MOV A,@R2。? 3、MOV AH,R6。? 4、P0~P3只能字节操作。?

5、MCS-51中的程序存储器只能存放程序。 ?

6、执行PUSH指令是先SP+1,再数据进栈。? 7、伪指令在汇编时也会产生机器代码。? 8、INT0的中断请求标志不能够自动撤销。? 9、MCS-51只有两个中断优先级。? 10、如果要单片机重新启动,按一下复位键即可。? 11、A不是特殊功能寄存器。? 12、MOV A,[42H]。? 13、MOV @R2,A。? 14、P0~P3也可以按位操作。?

15、字节减,直接使用SUBB指令即可。 ?

16、执行PUSH指令是访问的内部数据存储器。? 17、指令“ADD R1,A”是正确的。? 18、LJMP指令执行的是相对转移。? 19、MCS-51正在服务一个中断时,不允许同级中断。? 20、外部信号可以通过INT0端口控制T0计数。? 21、51单片机中断系统只有两个中断优先级。? 22、伪指令在汇编时也会产生机器代码。? 23、串行口的中断请求标志不能够自动撤销。?

24、当GATE=0时,TR0可以控制定时/计数器0启停。? 25、重新启动单片机,也可以按一下复位键即可。? 26、MOV 28H,@R2 ? 27、CLR R0 ?

28、51单片机的堆栈是在内部数据存储器中。? 29、SP中的内容等于栈顶地址的内容。? 30、51单片机的一个机器周期等于1μS。? 31、单片机的主频越高其速度越快。? 32、Rn可以作为间接寻址寄存器。?

33、同级别的中断请求按时间先后顺序响应。? 34、同级中断不能嵌套。?

四、简答(16分)

1、指出下列哪些指令能够访问外部数据存储器,如何访问的。

a) MOVC A, @A+DPTR b) MOV A, direct

c) MOVC A, @A+DPTR d) MOV @R1, direct e) MOVX A, @DPTR f) MOV direct1, direct2 g) MOVX @R0, A

答、e)、

MOV DPTR, #A15_0 ;首先将外部数据存储器地址送入DPTR MOVX A, @DPTR ;再执行该指令

g)、

MOV A, #data

MOV P2, # A15_8 MOV R0, # A7_0 MOVX @R0, A

;将地址高8位送入P2口 ;地址低8位送入R0 ;再执行该指令

2、简述如何利用T0扩展中断? 答、

1) 首先让定时/计数器0工作在计数方式下。GATE=0, 2) 设置T0计数器为全1。

3) 设置ET0=1,允许T0中断。TR0=1,启动计数器。 4) 将扩展中断处理程序,放在T0的中断服务程序中。

3、简述MCS-51单片机程序的第一条指令应该放在程序存储器的什么位置上?为什么?如果系统使用了中断,该存储单元应该放什么指令?

答、

1) MCS-51单片机程序的第一条指令应该放在程序存储器的0000H单元

处。

2) 因为系统初始化时,(PC)=0000H。

3) 如果系统使用了中断,其后的存储单元就是中断的入口处。所以,通常将无条件转移指令放在0000H单元处,主程序放在中断入口地址之后。系统启动时,由0000H单元转移到主程序。从而避免主程序覆盖中断入口的预留单元。

4、简述MCS-51的程序存储器的片内4KB与片外的4KB虽然会重叠(000H~FFFH),但为什么又不会发生访问冲突呢?

答、MCS-51有一个EA控制端口,在使用时此端口非1则0。=0时,单片机访问程序存储器的片外的4KB。=1时,单片机访问程序存储器的片内的4KB。所以不会发生访问冲突。

5、已知寄存器A中内容是一个待显示5的7段码,想在其后加上小数点,已知小数点dp是在编码的第7位上。如果数码管是共阴极,程序如何写?共阳极呢?(2分)

答、共阴极:ORL A,#80H 共阳极:ANL A,#7FH

6、已知ext1~ext4是扩展的4个外部中断源的请求信号。都是低有效。简述图示的中断扩展电路的工作原理。(4分)

答、

由图可知,4个扩展中断源是通过INT0向CPU发中断请求的。ext1~ext4只要有一个请求(为低)有效,信号就可以通过INT0发给CPU。

CPU如果响应中断,就会进入INT0的中断服务程序。 在INT0中断服务程序中,CPU由软件通过P1.0~P1.3识别ext1~ext4中那一个发出了中断请求。CPU再转移到相应的程序去执行。

7、7段数码管与单片机接口有两种接口方式,一个是静态工作方式;一个是动态工作方式。请简述它们各自的特点。(5分)

答、

静态工作方式:

每个LED有一个锁存器。有一个I/O地址。锁存器的Q端连接各自的数码管。所有锁存器的D端连接在一起。

各个数码管的公共端连在一起。共阳极接VCC,共阴极接GND。

电路较复杂,程序控制简单。 动态工作方式:

所有LED共用一个数据锁存器,与这个锁存器的Q端连接。使用一个I/O地址。

公共端,作为显示位选择控制端,采用分(定)时轮流循环显示的控制。电路简单。程序较复杂。

8、简述MCS-51的数据存储器的片内128B与片外的128B虽然会重叠(00H~7FH),但为什么又不会发生访问冲突呢?(5分)

答、MCS-51使用了两种不同的指令,访问片内的数据存储器使用的是MOV指令。访问片外的数据存储器使用的是MOVX指令。所以不会发生访问冲突。

9、MCS-51是如何解决扩展程序存储器与扩展的数据存储器的地址冲突的? 答、将读写控制信号分开,PSEN,控制外部程序存储器读操作。WR、RD,控制外部数据存储器读写操作。而这两种控制信号不能同时有效。

10、简述上电复位与手动复位有什么异同?

相同之处,都可以重新启动系统。不同之处,上电复位是通过开关电源启动系统,存储器中的所有已处理信息丢失。手动复位,是不开关电源的复位,是通过按复位键来重新启动系统。由于未断电,所以存储器中的已处理信息不会丢失。

11、由下图所示的电路中分析,在LATCH=0,P1口作为输入。 引脚输入的高电平是否能够顺利进入单片机的内部总线?为什么?为了保证P1口正常输入,应该怎么处理?

在LATCH=0时,由于Q=1。与P1口连接的三极管导通,P1口的引脚在内部被接地。所以,如果P1口的引脚上有高电平输入,在连接上是不可能的。在电路上可能会烧坏外部电路。因此,为了保证P1口正常输入,必须首先保证LATCH=0时,这时Q=0。与P1口连接的三极管截止,不会干扰P1口的输入。 12、PSW中有那些状态标志?描述其含义。你在程序设计中,什么情况下需要关注状态标志的变化?

13、分别指出,你在程序设计中,什么情况下需要计算指令的字节数?指令的周期数?

14、简述中断服务子程序与普通子程序有什么相同与不同之处?

相同之处:同是一个具有特定功能的,独立的程序段。不同之处是子程序的进入与返回。前者是由请求信号发起调用,如果系统允许的话,系统由硬件产生LCALL指令,进入子程序。执行完后通过RETI指令返回。后者由程序中的LCALL指令调用,进入子程序。执行完后通过RET指令返回。

15、当fosc=4MHz时,定时/设计器的4种工作方式的最大定时时间各是多少?

∴ 当fosc=4MHz时,fM?fOSC4 ?MHz 。∵ TM=3μS

1212方式0:最大定时时间=3?S?213?24576?S?24.576mS 方式1:最大定时时间=3?S?216?196608?S?196.608mS 方式2/3:最大定时时间=3?S?28?768?S?0.768mS

16、当fosc=4MHz时,计数器对外界信号频率的最大限制是多少? ∴ fx?

fOSC ,∵ fx=4MHz÷24≈167KHz 24五、阅读程序(24分)

1、阅读程序:(4分)

complement: JNB ACC.7,return XRL A,#01111111B ADD A,#1 return: RET

⑴.分别将+7与-7的原码写出,再分别代入A执行上述程序后A的结果是多少?分别写出。

[+7]原= 00000111B [-7]原 =10000111B (A)= 00000111B (A)=111111001B

⑵.分析A与原码是什么关系?程序实现了什么功能? A是其补吗,这是一个求补码的程序。

2、阅读程序:(4分)

ORG 2000H

TAB: DB 30H,40H,24,\C\,\B\

DW 1246H,7BH,10

答、

地址 1000H 1001H 1002H 1003H 1004H 1005H 1006H 1007H 1008H 1009H 100AH 内容 30H 40H 18H 43H 42H 12H 46H 00H 7BH 00H 0AH

3、已知系统时钟=3MHz,已知程序段:

main : ?? MOV TMOD, #02H

MOV TL0, #156

MOV TH0, #156 ??

试问,定时/计数器0的计数时钟周期是多少?工作方式是什么?定时时间

为多少?要求写出计算过程。

答、程序对定时/计数器0计数时钟周期是4μS。工作方式为方式2,定时。定时时间为400μS。

计算过程如下:

T0工作在方式2下,计数器是TL0,为8位。TH0是预置数寄存器。由程序可知其预置数是156,所以:

计数值=28-156=100 所以:

定时时间=4μS×100=400μS

4、已知8051单片机的P1口分别反向连接了LED0~LED7,8个LED发光二极管。读下列程序,回答问题。

MOV A, #00H

MOV P1, A ??① MOV A,#0FEH

MOV P1,A ??② RL A MOV P1,A ??③ AJMP $

试问:

⑴、要使LED发光P1口应该输出什么样的电平信号? 答、P1口应该输出低电平,LED才能发光。

⑵、程序执行到①所示指令后, P1=? ,LED7~0如何显示?(1分) 答、P1=00H,LED7~0全亮。

⑶、程序进入②所示指令后, P1=? ,LED7~0如何显示?(3分) 答、P1= FEH,LED7~0的最低(LED0)位亮,其余灭。

⑷、程序进入③所示指令后, P1=? ,LED7~0如何显示?(4分) 答、LED1亮,其余熄灭。

⑸、程序全速运行你将看到什么结果?(2分) 答、看到“⑷”所示结果。

5、已知,下列程序执行前,(R0)=52H,读下列程序段,填空,回答问题。

CLR C

MOV A,R0 SUBB A,R0

答、该指令执行后,(R0)=_52H_,(A)=_0_。 P=_0_,CY=_0_,AC=_0_,OV=_0_。

6、已知系统时钟=12MHz,已知程序段:

delay: MOV R7,#20 loop2:MOV R6,#123 NOP

loop1:DJNZ R6, loop1 DJNZ R7, loop2

试计算该子程序延时了多少时间。写出中间过程。(计算过程3分,共6分)

解、

机器周期计算:

loop1=(2×123),loop2=(loop1+2+1+1) ×20=5000

已知系统时钟=12MHz,所以有

1μS×5000=5mS

答、该子程序延时了5mS。

7、硬件电路如下图所示,读下列程序,回答问题。(共9分)

MOV P1,#0FFH ??① JB P2.0,$ ??② CLR P1.0 ??③

JB P2.1,$

CLR P1.1 JB P2.2,$ CLR P1.2 JB P2.3,$ CLR P1.3

AJMP $

试问:

⑴、要使LED发光P1口应该输出什么样的电平信号? 答、P1口应该输出低电平,LED才能发光。

⑵、程序执行到①所示指令后, P1=? ,LED4~1如何显示?如果这时按下K2,程序如何反应?

答、P1=FFH,LED4~1全灭。如果这时按下K2,程序仍然停留在②处。 ⑶、如果按下的是K4, 那个LED亮?那些熄灭?程序停留在什么地方? 答、LED1亮,其余灭。程序停留在③处。

⑷、程序停留在最后一条指令后,LED如何显示?这些键都按过吗? 答、由程序可知,当按K4键,LED0点亮。按K3键,LED2点亮。按K2键,LED3点亮。按K3键,LED4点亮。所以LED1~LED4全亮,说明每个按键都按过。

8、已知78H、77H与76H与75H存储单元,存放了两个16位二进制数。阅读下列程序,说明程序功能。

differ: exit:

MOV A, 78H CJNE A, 76H, differ MOV A, 77H CJNE A, 75H, differ SETB F0 JAMP exit CLR F0 RET

解、

⑴、程序功能是,比较这两个16位二进制数是否相等。相等,F0=1。否则,F0=0。

⑵、程序首先使用CJNE指令比较了高8位,若相等,继续比较低8位。否则,F0=0。若高8位相等,接着使用CJNE指令比较低8位。相等,F0=1。子程序返回。否则,F0=0。子程序返回。

9、阅读下列程序实现了什么功能?

MOV DPTR,#2000H MOVX A,@DPTR MOV 30H,A

答、程序是将外部数据存储器2000H单元的内容,搬到内部数据存储器30H单元中。

10、阅读下列程序实现了什么功能?

MOV A,R0 MOV R1,A

答、程序是将(R0)→R1

11、阅读下列程序实现了什么功能?

MOV A,R0 XCH A,R1 MOV R0,A

答、程序将(R0)与(R1)交换。

六、程序设计(共20分)

1、试编写程序,统计在内部数据存储器的30H~4FH单元中有多少个不是55H的存储单元?并将结果存入41H中。(6分)

解、

lookup:

MOV R1,#0 MOV R0, #30H

loop: CJNE @R0, #055H, next AJMP next1 next: INC R1 next1: INC R0 CJNE R0, #50H, loop MOV 41H, R1 exit: RET

2、试用查表法,设计将BCD码转换成共阳极7段显示码的程序。7段数码管如图示。要求写出7段编码顺序表与查表程序。(编码表2分,程序3分;共计5分)

要求编码格式:

dp e 解:

⑴.7段编码:

数字 0 1 2 f g d c b a 3 4 5 6 7 8 9 7段码 90H F9H A4H E0H C9H C2H 82H F8H 80H C0H

⑵.程序设计:

display: ADD A,#1 MOVC A,@A+PC RET DB 90H,0F9H,0A4H,0E0H,0C9H DB 0C2H ,82H,0F8H,80H,0C0H

3、已知系统时钟为12MHz。试编写程序, T1以100μS定时中断,控制在P1.7处交替输出0和1。(计数初值计算2分,初始化程序4分,中断服务程序3分。共9分)

解、∵ TM=1μS ,∴ 计数值=100μS÷1μS 程序选择方式2,所以,计数初值=256-100=156

ORG 0000H

reset: LJMP main

ORG 001BH LJMP it1p ORG 0100H

main : MOV TMOD, #20H

MOV TL1, #156 MOV TH1, #156 SETB TR1 SETB ET1 SETB EA here: AJMP here ;等待T1中断

it1p: CPL P1.0

RETI

4、试编写程序,将内部数据存储器的30H~4FH单元清零。 解、

lookup: MOV A,#0 MOV R0, #30H loop: MOV @R0, A INC R0 CJNE R0, #50H, loop exit: RET

5、试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH数据。若有则,(51H)=01H;没有则,(51H)=00H。

有下列两种循环方式。 条件循环:

lookup: MOV R0, #30H

loop: CJNE @R0, #0AAH, next MOV 51H, #01H AJMP exit next: INC R0 CJNE R0, #51H, loop MOV 51H, #0 exit: RET

计数循环:

lookup: MOV R1, #21H MOV R0, #30H

loop: CJNE @R0, #0AAH, next MOV 51H, #01H AJMP exit next: INC R0 DJNZ R1, loop MOV 51H, #0 exit: RET

6、试编写程序,查找在内部RAM的20H~40H单元中出现00H的次数。并将结果存入41H中。

有下列两种循环方式。 计数循环:

ORG 0H AJMP main ORG 0100H main: MOV 41H,#0 MOV R0,#20H MOV R2,#21H loop: MOV A,@R0 JNZ next INC 41H next: INC R0 DJNZ R2,loop RET END

条件循环:

ORG 0H AJMP main ORG 0100H main: MOV 41H,#0 MOV R0,#20H loop: MOV A,@R0 JNZ next INC 41H next: INC R0 CJNE R0,#41H,loop RET END

7、已知系统时钟=6MHz,参照下述程序模板,设计15mS延时子程序。写出L1、L2的计算过程。

delay: loop2: loop1: MOV R7,#L2 MOV R6,#L1 …… ;X DJNZ R6, loop1 DJNZ R7, loop2

8、用R4R5两个8位寄存器,设计一个16位的加1计数器,循环计数程序。

MOV R4,#0

MOV R5,#0

loop: INC R5

MOV A,R5 JNZ loop INC R4 AJMP loop

9、78H与77H两个存储单元存放了一个16的二进制数,试写出对其加1的程序段。

INC 77H MOV A, 77H JNZ end2 INC 78H

end2:

10、已知(A)≤59,试写程序,出将其转换成BCD码,并将十位上的数存入33H单元,个位上的数存入32H单元。

bin_bcd:

MOV B,#10 DIV AB MOV 33H,A MOV 32H,B RET

; A=十位数, B=个位数

11、已知下列数据表是弧度为1~50的正玄函数值,试写出其查表子程序(只写出程序)。将结果存入61H与60H中。61H是高8位,60H是低8位。

DW 174,349,523,697,871,1045,1218,1391,1564,1736

DW 1907,2078,2248,2418,2587,2755,2922,3089,3254,3419 DW 3582,3744,3905,4065,4224,4382,4538,4693,4846,4998 DW 5148,5297,5444,5589,5733,5875,6016,6154,6291,6425 DW 6558,6689,6817,6944,7068,7191,7311,7429,7544,7658

alarm: MOV A,R2

ADD A,R2 MOV 61H,A ADD A,#6 MOVC A,@A+PC XCH A,61H ADD A,#3 MOVC A,@A+PC MOV 60H,A RET

本文来源:https://www.bwwdw.com/article/tomw.html

Top