当前位置:文档之家› 单片机复习重点

单片机复习重点

5. 何谓时钟周期、指令周期、机器周期?针对MCS5-1 系列单片机,如采用12MHZ 晶振,它们的频率和周期各是什么?答:振荡器输出的振荡脉冲经分频成为内部时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,其周期称时钟周期指令周期:CPU 执行一条指令的时间机器周期:6 个时钟周期构成一个机器周期针对MCS5-1 系列单片机,采用12MHZ 晶振,则单周期指令和双周期指令的执行时间分别为1us 和2us,乘法指令和除法指令为4us6. 综述MCS-51 系列单片机其内存可由哪几部分组成?其编址与访问的规律是怎样的?答:MCS-51 系列单片机其内存可由程序存储器与数据存储器两个独立的空间。

程序存储器的编址自0000H 开始,最大可至FFFFH。

MCS-51 单片机有3 种不同的芯片:片内有掩膜只读存储器的(如8051、8052)、片内有EPROM 的(如8751)和片内没有只读存储器的(如8031、8032),而ROM的寻址范围为64KB,所以片内程序存储器的容量远小于该数,可见如扩展片外存储器,其裕量是很大的。

ROM 编址规律:程序存储器的编址规律为:先片内、后片外,片内、片外连续,二者一般不作重叠。

根据PC 的内容进行访问。

片内RAM 从00H 开始编址,片外RAM 从0000H 开始,部分地址重叠(实际并不完全一样),若只需扩展少量片外RAM,容量不超过256 个单元,则也可以按照8 位二进制编址,从00H 开始,到FFH 结束。

由于访问片内外RAM 所用的指令不一样,不会引起混淆。

8. MCS-51 系列单片机片内RAM 有多少单元?有哪些用途?这些用途各占用哪些单元?堆栈的栈区设在哪里?答:单片机内RAM 有:工作寄存器区,位寻址区,数据缓冲区三个区域。

(1)寄存器区00H—1FH 单元为工作寄存器区。

供用户编程时使用,临时寄存8 位信息。

同时只能有一组0 7 R ~ R 参与程序程序的运行,分别为四组:00H~07H,08H~0FH,10H~17H,18H~1FH,用RS1,RS0来选择参与运行的工作寄存四组。

(2)位寻地址20H~22H,对该区的每一位,都有一个位地址,共有128 个位地址。

共有221 个可寻地址。

有3 位地址就可以位寻址,对特定位进行处理,内容传送或据以判断,给编程带来很大方便。

(3)数据缓冲区30H~7FH,普通的RAM 单元,(30H~FFH)(4)堆栈与堆栈指针:有一个8 位的堆栈指针寄存器,专用于指出当前堆栈顶部是片内RAM 的哪一单元。

栈区设在2FH 以上的单元7. 区分下列指令的不同功能:⑴MOV A ,#24H 与MOV A,24H⑵MOV A ,R0 与MOV A,@R0⑶MOV A,@R0 与MOVX A,@R0答:⑴者是将立即数24H 送入A 中,后者是将24H 单元的内容送入A 中.⑵前者将R0 中的内容送入A 中,后者是将以R0 中的内容为地址所在单元的内容送入A 中.⑶前者是将片内RAM 以R0 中的内容为地址所在单元的内容送入A 中,后者是将片内外RAM 的以R0中的内容为地址所在单元的内容送入A 中.8. 设片内RAM30H 单元的内容为40H,设片内RAM40H 单元的内容为10H,设片内RAM10H 单元的内容为00H,(P1)=0CAH,请写出下列指令执行后的结果.(1) MOV R0,#30H(2) MOV A,@R0(3) MOV R1,A(4) MOV B ,@R1(5) MOV @R0 ,P1(6) MOV P3 ,P1(7) MOV 10H ,#20H(8) MOV 30H,10HMOV R0,#30H ;R0←30HMOV A,@R0 ;A←40HMOV R1,A ;R1←40HMOV B ,@R1 ;B←10HMOV @R0 ,P1 ;30H ←0CAHMOV P3 ,P1 ;P3←0CAHMOV 10H ,#20H ;10H←20H13. 为达到下列要求,请说明应采用何种逻辑操作,采用什么操作数,要求不得改变各未涉及位的内容。

(1) 使累加器的最低位置1(2)清除累加器的高四位(3) 使A.2 和A .3 置1。

(4) 清除A.3、A .4、A.5、A .6解:(1)逻辑操作:逻辑或操作操作数:00000001(2)逻辑操作:逻辑与操作操作数:00001111(3)逻辑操作:逻辑或操作操作数:00001100(4)逻辑操作:逻辑与操作操作数:10000111MOV 30H,10H ;30H←20H15. 试编程:将累加器A 内容低四位送片外RAM 7AH 单元,高4 位送片外RAM 7BH 单元,7AH、7BH单元的高4 位均清零。

解:ORG 0050HSTART:MOV 7AH,AANL A,#0F0HSWAP AMOV 7BH ,ASJMP $END START20. 试编程:将ROM 中以TAB 为初址的32 个单元的内容依次传送到片外RAM 以00H 为初址的区域去(规定用查表指令)。

解:ORG 2000HHSTART:MOV DPTR,#TABMOV R0,#00HMOV R2,#20HLOOP:CLR AMOVC A,@A+DPTRMOVX @R0,AINC DPTRINC R0DJNZ R2,LOOPDONE:SJMP DONE第五章1. MCS-51 系列单片机对外有几条总线?哪几条?请说清每条总线的组成。

解:单片机对外呈三总线形式。

由P2、P0 组成16 位地址总线;由P0 分时复用为数据总线;由ALE、PSEN 、RST、EA 与P3 口中的INT1、INT0 、、T0、T1、WR 、RD 共10 个引脚组成控制总线。

因是16 位地址线,使片外存储器的寻址范围达到64K 字节。

4. 8031 的扩展储存器系统中,为什么P0 口要接一个8 位锁存器,而P2 口却不接?答:这是因为P0 口是扩展储存器系统的多路低8 位地址和数据总线,在访问外部存储器时,P0 口分时用作输出外部储存器低8 位地址和传送数据,为了在整个访问外部存储器期间,对外部存储器存在着有效的低8 位地址信号,所以P0 口需要外接一个地址锁存器。

ALE 信号就是用来把P0 口输出的地址字节锁存在这个外接的锁存器中,再从锁存器输出外部存储器的低8 位地址。

而P2 口只用作扩展存储器系统的高8 位地址线,并在整个访问外部存储器期间不变,所以不必外接地址锁存器。

6. 在8031 扩展系统中,外部程序存储器和数据存储器共用16 位地址线和8 位数据线,为什么两个存储空间不会发生冲突?答:这是因为外部程序存储器和外部数据存储器所使用的控制信号不同。

对外部程序存储器的选读通是用PSEN 控制线,而对外部数据存储器的读/写控制是用RD 和WR 读、写控制线,所以不会发生地址冲突。

9.下图是4 片8K×8 位存储器芯片的连接图,请确定每片存储器芯片的地址范围。

9 题图解:第一片芯片的地址范围是:0000H-1FFFH第二片芯片的地址范围是:2000H-3FFFH第三片芯片的地址范围是:4000H-5FFFH第四片芯片的地址范围是:6000H-7FFFH第六章1. 简述C51 变量存储类型与存储空间的对应关系。

答:DATA 类型可直接寻址片内存储区;BDATA 可位寻址片内数据存储区;IDATA 间接寻址片内数据存储区,可访问片内全部RAM 地址空间(256B);PDATA 分页寻址片外数据存储区(256B);XDATA 寻址片外数据存储区64KB;CODE 寻址代码存储区。

4. C51 中使用51 单片机的位单元的变量如何定义?试举例说明。

答:位变量可以用来定义变量、函数返回值的类型,用bit 关键字来定义,所有的位变量都存储在内部RAM的位寻址区中(20H-2FH)。

如bit flag=0。

6. 用C 语言编写以下数据传送程序。

(1)将地址为4000H 的片外数据存储单元内容,送入地址为5000H 的片外数据存储单元中。

(2)将地址为0100H 的程序存储器中的内容,送入内部RAM 单元中。

答:(1)#include <absacc.h>#include <reg51.h>void main( ){ unsigned char data var1;var1=XBYTE[0X4000];XBYTE[0X5000]= var1;While(1);}(2) #include <absacc.h>#include <reg51.h>void main( ){ unsigned char data var1;var1=PBYTE[0X0100];While(1);}8. 设MCS-51 型单片机的时钟频率为12MHz,利用定时器0 的方式1 在P1.6 口产生一串50HZ 的方波。

定时器溢出时采用中断方式处理。

答:1)定时时间10ms,设T0 的初值为X。

则(216-X)×1μs =10×103μsX = 65536-10000 =55536 =D8F0H2)编程#include<reg51.h>sbit singal=P1^0;void main(){ TMOD=0X01;TL0=0XF0;TH0=0XD8;EA=1;ET0=1;TR0=1;While(1);}void Timer0(void) interrupt 1 using 1{ TL0=0XF0;TH0=0XD8;signal=~ signal;}9. 将一个按键接到8051 外中断INT1 口线上,按键按下将口线接地引起INT1 中断,中断使接P1.2 口的LED灯点亮一会儿,然后关闭等待下次中断。

试用C51 语言编写此功能程序。

答:#include<reg51.h>sbit LED = P1^2;void EXT1_INIT(void){EX1=1;IT1=1;EA=1;}void EXT1_INT_SRV(void) interrupt 2{data int j;LED=0; //将引脚清零因此点亮发光二极管for(j=0;j<30000;j++); //空循环延时for(j=0;j<30000;j++); //空循环延时LED=1; //关闭LED,退出中断}void main(void){EXT1_INIT();while(1){};第七章2.矩阵式键盘的编程要点是什么?解:(1)判断键盘上有无键按下:列输出全0,读行输入状态,若状态为全1,则说明键盘无键按下;若不全为1,则说明键盘有按下。

(2)消除按键抖动的影响:在判断有键按下后,用软件延时的方法,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键按下,否则当作按键抖动处理。

相关主题