80C51单片机期末复习

80C51有基本型和增强型。区别:增强型多了定时器,内置存储空间不同。

1冯•诺依曼思想计算机由运算器控制器存储器输入设备输出设备组成这一计算机的经典结构。

2将CPU存储器I/O接口集成在一片集成电路芯片上,形成单片机微型计算机(单片机)。

3单片机的特点可总结为点:突出的控制性能、优秀的嵌入品质 。

4 明确无误的硬件设计和良好的软件功能设计是单片机应用系统的设计目标

5各单片机厂商以8051为基核开发出来的CMOS工艺单片机产品统称为80C51系列产品。

6在功能上,80C51有基本型增强型两大类。

7 80C51的累加器ACC用于向ALU提供操作数和存放运算的结果 。

8微型机系统有两种主要的应用形态: 桌面应用嵌入式应用

9 51单片机I/O引脚驱动LED,常采用灌电流方式,P1、P2、P3口由于内部有约30kΩ

上拉电阻,因此它们的引脚可以不加外部上拉电阻,但P0口内部没有上拉电阻,其引脚必须加外部上拉电阻

1、单片机是将微处理器、一定容量的 RAM 和 ROM 以及_1/O口、定时器等电路集成在一块芯片上而构成的微型计算机。
3、两位十六进制数最多可以表示_256_个存储单元。
4、在80C51中,只有当 EA 引脚接_电平时, CPU才访问片内的 Flash ROM
5、当CPU访问片外的存储器时,其低八位地址由PO口提供,高八位地址由P28位数据由 P0_口提供。
6、在I/O口中,_ PO 口在接 LED 时,必须提供上拉电阻,P3口具有第二功能。
7、80C51具有_64 KB 的字节寻址能力。
8、在80C51中,片内 RAM 分为地址为_00H~7FH_的真正 RAM 区,和地址为80H- FFH 的特殊功能寄存器( SFR )区两个部分。
11、在80C51中,一个机器周期包括_12_个振荡周期,而每条指令都由一个或几个机器周期组成,分别有单周期指令、双周期指令和4周期指令。
2、单片机80CS1片内集成了_4_ KB 的 FLASH ROM ,共有_5个中断源,分别为_ INTO 、 INT1 、 TO 、T1以及 TXD/RXD
16、单片机80C51的中断要用到4个特殊功能寄存器,它们是TCON、SCON、IE以及IP
17、在8OC51中,外部中断由ITO(1)位来控制其两种触发方式,分别是电平触发方式和边沿触发方式。在电平方式下,当采集到 INTO 、 INTI 的有效信号为(低电平)时,激活外部中断。

15、80C51单片机的外部中断0中断入口地址为0003H
18、中断处理过程分为4个阶段,即中断请求、中断响应、中断服务以及中断返回。

7、中断的矢量地址位于 RAM 区中。 F 
18、在80C51中,当产生中断响应时,所有中断请求标志位都由硬件自动清零。F(RI/TI不) 

19、在51系列单片机中,中断服务程序从矢量地址开始执行,一直到返回指令 RETI 为止。 T 

27、单片机80C51的定时/计数器是否工作可以通过外部中断进行控制。 T 
20、在执行子程序调用或执行中断服务程序时都将产生压栈的动作。 T 
19、单片机80C51片内有两个_16位的定时/计数器即TO和T1它们都有定时和计的功能。
20、单片机80CS51的时钟频率为6MHz,若要求定时1ms,定时/计数器工作于模式1,其定时/计数器的初值为 FEOCH 
21、单片机80C51具有并行_通信和_串行通信两种通信方式。
22、串行通信有同步通信和异步通信两种通信方式。
23、在异步通信中,数据的帧格式定义一个字符由4部分组成,即:起始位、数据位、_奇偶校验位和停止位。
24、串行通信中,为使设备同步工作,需要通信双方有两个共同的要求,一是_通信双方必须采用统一的编码方式通信双方必须能产生相同的传送速率
25、单片机80C51中的串行通信共有4种方式,其中方式0是用作同步移位寄存器来扩展1/0口的。
26、设80C51的晶振频率为11.0592MHz,选用定时器 T 工作模式2作波特率发生器,波特率为2400b/ s ,且 SMOD 置0,则定时器的初值为_F4H
27、键盘可分为独立连接式和矩阵_式两类。键盘可分为编码式和非编码式两类。
28 80C51单片机的特殊功能寄存器(SFR)有21个特殊功能寄存器。字节能被8整除的(即16进制的地址码尾数为0或8的)单元是具有位地址的寄存器。

C51扩展的数据类型:SFR型:sfr长度8取值范围0-255sfr16:16 0-65535;型:bit/sbit101
9、以下哪种方式的接口总线最少?单总线
10、以下哪个是属于单片机系统前向通道的器件?A/D转换

11、80C51单片机的RS1,RS0-01时,当前寄存器 RO-R7占用内部RAM08H-0FH单元。

12、80C51单片机有片内 RAM 容量128B
13、80C51单片机的最大时序定时单位是指令周期(晶振S状态机器指令周期是单片机时序单位)
14、80C51单片机的定时器/计数器工作方式0是13位计数器结构方式1是16位计数器结构方式2是8自动重装计数器结构方式3是T0分成俩个独立的8位T1停止计数

T0有4种工作方式T1有3种,区别:寄存器,有关控制位,标志位
18.80C51单片机 ALE 引脚是输出矩形脉冲,频率为 fosc 的1/6
19.80C51单片机的XTAL1和XTAL2引脚是外接晶振引脚。

20.80C51的串行数据缓冲器 SBUF 用于存放待发送或已接收到的数据
21.假定设置堆栈指针SP的值为37H,在进行子程序调用时把断点地址进栈保护后,SP的值为39H
22.单片机中的程序计数器 PC 用来存放正在执行的指令地址

25.指令和程序是以(二进制编码)形式存放在程序存储器中。

28、 LED 数码管有静态显示和动态_显示两种方式。
31.对单片机而言,连接到数据总线上的输出口应具有(锁存)功能。
33.单片机内包含组成微机的三个主要功能部件是 CPU 、存储器和(I/O口)
34.80C51系列单片机字长是(8)位,有(40)根引脚。
35.ALE信号的作用是(锁存允许)
38.80C51单片机的P0口和P2口除了可以作为并行口进行数据的输入/输出外,通常还用来构建系统的(地址)和(数据)。
41。串行通讯中有(同步)和异步两种基本方式。
42.C51中存储类型 XDATA 定义的是(外部)存储空间,其地址范围是(0000h~ ffffH )
1、80C51是以下哪个公司的产品?ATMEL

2、80C51系列单片机是属于( 哈佛 )体系结构。
1、在51系列单片机的指令系统中,其加法、减法、乘法和除法必须有累加器A的参与才能完成。 T 

2、当80C51的EA引脚接低电平时,CPU只能访问片外ROM,而不管片内是否有程序存储器。T (片内高,片外低,如果超过可以变)
3、当80C51的 EA 引脚接高电平时,CPU 只能访问片内的4KB空间。 F 
4、80C51系列单片机直接读端口和读端口锁存器的结果永远是相同的。 F 
5、是读端口还是读锁存器是用指令来区别的。 T 
6、在80C51的片内 RAM 区中,位地址和部分字节地址是冲突的。 F 
9、工作寄存器区不允许做普通的 RAM 单元来使用。 F 
10、工作寄存器组是通过置位 PSW 中的 RSO 和 RSI 来切换的。 T 
11、特殊功能寄存器可以当作普通的 RAM 单元来使用。 F 
12、访问128个位地址用位寻址方式,访问低128字节单元用直接或间接寻址方式。T 
14、DPTR 只能当作一个16位的特殊功能寄存器来使用。 F 

10、数据指针 DPTR 是一个_16位的特殊功能寄存器。唯一一个用户可以使用的16位,可以利用间接寻址和变址寻址
15、程序计数器 PC 是一个可以寻址的特殊功能寄存器。 F 
1单片机80C51复位后,其PC指针初始化为0000H,使单片机从该地址单元开始执行程序。

12、当系统处于正常工作状态且振荡稳定后,在 RST 引脚上加一个_电平并维持_2个机器周期,可将系统复位。

13、单片机80C51复位后,其I/O口锁存器(P0-P3)的值为OFFH,堆栈指针SP的值为07H_,SBUF的值为不定,内部 RAM 的值不受复位的影响,而其余寄存器的值全部为OH。PSW=00H当前工作寄存器在0组。IP,IE,PCON的有效位0中断源处于低优先级且关断(在30H~7FH单片机堆栈区是向地址增大的方向生成的)

32.决定程序执行的顺序是( PC )寄存器,程序计数器PC是一个16位计数器,它总是存放着下一个要取指令的存储单元地址。

9、在80C51中,通用寄存器区共分为_4_组,每组_8_个工作寄存器,当 CPU 复位时,第0组寄存器为当前的工作寄存器。

17单片机上电复位后,堆栈区的最大允许范围是120个单元。

14、在809C51中,有两种方式可使单片机退出空闲模式,其一是任何的中断请求被响应,其二是硬件复位;而只有硬件复位方式才能让进入掉电模式的单片机退出掉电模式。
17、单片机系统上电后,其内部 RAM 的值是不确定的。 T 
21、定时/计数器工作于定时方式时,是通过80C51片内振荡器输出经12分频后的脉冲进行计数,直至溢出为止。 T 
22、定时/计数器工作于计数方式时,是通过809C51的P3.4和P3.5对外部脉冲进行计数,当遇到脉冲下降沿时计数一次。 T 
23、定时/计数器在工作时需要消耗 CPU 的时间。 F 
24、定时/计数器的工作模式寄存器 TMOD 可以进行位寻址。 F 
25、定时/计数器在使用前和溢出后,必须对其赋初值才能正常工作。 F 
26、在51系列单片机的指令中,既有带借位的减法指令,又有不带借位的减法指令。 F 
28、并行通信的优点是传送速度高,缺点是所需传送线较多,远距离通信不方便。 T 
串行通信的优点是只需一对传送线,成本低,适于远距离通信,缺点是传送速度较低。 T 
30、异步通信中,在线路上不传送字符时保持高电平。 T 
31、在异步通信的帧格式中,数据位是低位在前高位在后的排列方式。 T 
32、异步通信中,波特率是指每秒传送二进制代码的位数,单位是 b/s。 T 
33、在80C51的串行通信中,串行口的发送和接收都是对特殊功能寄存器 SBUF 进行读/写而实现的。 T 
34、在单片机809C51中,串行通信方式1和方式3的波特率是固定不变的。 F 
35、在单片机809CS1中,读和写的 SBUF 在物理上是独立的,但地址是相同的。 T 
36、单片机80C51一般使用非整数的晶振是为了获得精确的波特率。 T 
37、单片机809C51和 PC 机的通信中,使用芯片MAX232是为了进行电平转换。 T 
38、在A/D转换器中,逐次逼近型在精度上不及双积分型,但双积分型在速度上较低。 T 
39、A/D转换的精度不仅取决于量化位数,还取决于参考电压。 T 

1什么是“大端对齐”存储格式?

数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。

2已知单片机系统晶振频率为6MHZ,若要求定时值为10ms时,定时器T0工作方式1时,定时器T0 对应的初值是多少?TMOD的值是多少?TH0=? TL0=?

晶振频率为6M,则机器周期为2us,定时10ms,溢出值为5000,TMOD可以设置为方式0或者1,一般设置为1,初始设置如下:TMOD=0x01;TH0=(65536-5000)/256;TL0=(65536-5000)%256;

3请说明为什么使用LED需要接限流电阻,当高电平为+5V时,正常点亮一个LED需要多大阻值的限流电阻(设LED的正常工作电流为10mA,导通压降为2V),为什么?

因为LED导通时,电压降是固定(0.6V)。为了使LED既能正常工作(电流为10mA), 又不至于被过大电流损坏,所以必须加一个限流电阻。 当电源为5V时。 R=(5V-3V)/10mA=0.2K=200Ω

4单片机晶振fosc=6MHz,T0中断工作在模式1,最大定时的时长是多少?

t=2*10^(-3)*65536=131.072 mS;

晶振频率为6MHz时,定时/计数器在工作方式0、方式1、方式2下,其最大的定时时间分别为:16.384 mS;131.072 mS;0.512 mS;
根据计算公式,X=M-计数初值=M-(fosc*t)/12,其中X是计数初值,要得到最大定时时间X=0;M最大计数值,工作方式0时M=2^13=8192,工作方式1时M=2^16=65535,工作方式2时M=2^8=256。fosc晶振频率。
所以最大定时时间为:M-(fosc*t)/12=0,即t=12*M/(6*10^3)=2*10^(-3)*M
工作方式0 t=2*10^(-3)*8192=16.384 mS;
工作方式1 t=2*10^(-3)*65536=131.072 mS;
工作方式2 t=2*10^(-3)*256=0.512 mS;
定时/计数器在使用之前均需要进行初始化,写入计数初值。

5已知focs=12MHZ,利用定时器T1使P1.1口发光二极管进行秒闪烁。即亮500ms,暗500ms,#include //包含特殊功能寄存器库 sbit P1_0=P1^0; char i; void main() { TMOD=0x10; TH1=0xD8;TL1=Oxf0;EA=1; ET1=1;TR1=1;i=0; while(1): } void time1_int(void) interrupt 3//TO中断服务程序 { TH0=OxD8;TLO=Oxf0; //计数10000进一次中断1/12us.10000*600=0.5s i++; if (i==600){P1_0-IP1_0;=0;} }

6单片机用内部定时器方法产生频率为100KHz等宽矩形波,假设单片机的晶振频率为12MHz,请编程实现

晶振频率fsoc = 12MHz 也就是机器周期为1us 要产生100KHz的等宽矩形波,也就是T=10us,即5us定时器溢出一次,然后改变引脚电平,从而产生等宽矩形波。 则定时器在递增N之后溢出,N=5us/1us =5,所以转载的数为 n=(2^16-1)-N = 65530 即TH0 = n/256 = 0xFF; TL0 = n%256 = 0xFA; #include sbit Pin = P0^0; void main() { TH0 = 0xFF; TL0 = 0xFA; TR0 = 1; IT0 = 1; EA = 1; while(1){ } } void T0_int(void) interrupt 1 { TH0 = 0xFF; TL0 = 0xFA; Pin = ~Pin; }

7什么叫中断?设置中断有什么优点?

CPU 暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件 的服务程序,等处理完毕后再返回执行原来中止的程序,叫做中断。 设置中断的优点和功能: 可以提高CPU 工作效率。

2位寻址区位于数据存储器20F至2FH区间。此区间的寄存器可以位寻址,可以对它们进行位操作、位运算。

2、什么是保护现场,什么是恢复现场?
答:保护现场:当 CPU 响应中断程序时,硬件会自动把断点地址(16位程序计数器的值)压入堆栈之外,用户还须注意保护有关工作寄存器、累加器、标志位等信息:
恢复现场:在完成中断服务程序后,恢复原工作寄存器、累加器、标志位等的内容。
3、单片机80C51有哪些中断源,对其中断请求如何进行控制?
答:80C51中断系统有5个中断源:
● INTO :外部中断0请求,低电平有效。通过P3.2引脚输入。

●  INT1:外部中断1请求,低电平有效。通过P3.3引脚输入。. 

●  TO :定时器/计数器0溢出中断请求。
● Tl :定时器/计数器1溢出中断请求。
●TXD / RXD :串行口中断请求。当串行口完成一帧数据的发送或接收时,便请求中断。

4、简述单片机809CS1中断的自然优先级顺序,如何提高某一中断源的优先级别。

答:中断源(控制位)自然优先级

0000H:单片机复位后的入口地址
0003H:外部中断0( PXO )最高
000BH:定时器/计数器0溢出中断( PTO )

0013H:外部中断1(PX1)
001BH:定时器/计数器1溢出中断(PT1)

0023H:串行口中断( PS )  最低

002BH:增强型

若某几个控制位为1,则相应的中断源就规定为高级中断;反之,若某几个控制位为0,则相应的中断源就规定为低级中断。当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺序(即自然优先级)。
5、简述51系列单片机中断响应的条件。
答:有中断源发出中断请求;
.中断总允许位 EA =1,即 CPU 开中断;
.申请中断的中断源的中断允许位为1,即中断没有屏蔽:

.无同级或更高级中断正在被服务:
.当前的指令周期已经结束;

6、简述定时/计数器4种工作模式中方式0、1、2的特点。
答:方式0:是13位的定时器/计数器,寄存器 TLx 存低5位, THx 存高8位。

方式1:是16位的定时器/计数器:
方式2:把 TLO (或TL1)配置成一个可以自动重装载的8位定时器/计数器;
7、简述80C51串口通信的四种方式及其特点。
    方式0:同步移位寄存器输入/输出方式,常用于扩展I/O口。波特率固定为振荡频率的1/12,并不受 PCON 寄存器中 SMOD 位的影响。
    方式1:用于串行发送或接收,为10位通用异步接口。TXD 与 RXD 分别用于发送与接收数据。收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位。波特率由定时器T1的溢出率与 SMOD 值同时决定。
    方式2:用于串行发送或接收,为11位通用异步接口。TXD 与 RXD 分别用于发送与接收数据。收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位可编程的第9数据位和1位停止位,共11位。波特率取决于 PCON 中 SMOD 位的值:当 SMOD =0时,波特率为的1/64;当SMOD=1时,波特率为的1/32。
    方式3:用于串行发送或接收,为11位通用异步接口。 TXD 与 RXD 分别用于发送与接收数据。帧格式与方式2相同,波特率与方式1相同。
8、简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理。
键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。
9、简述 LED 数码管动态扫描的原理及其实现方式。
动态扫描的原理是利用人的视觉暂留,让人觉得各位 LED 同时点亮一样。逐位轮流点亮各个LED,每一位保持Ims,在10~20ms之内再一次点亮,重复不止,就可以实现动态扫描。

1、并行口四端口作用功能

驱动8个TTL负载:P0:1通用输入输出口,通用I/O口(C=0),准双向口。2有上拉电阻,执行MOV指令对锁存器写1。3P0用作地址/数据总线(C=1),分时复用低8位地址,真正的双向口。

驱动4个TTL负载:P1:1通用I/O口,准双向口。有上拉电阻,唯一单一功能口

P2:1通用I/O口,准双向口。无上拉电阻。2分时复用高8位地址,真正的双向口。

P3:1通用I/O口,准双向口。

2)P3用作第二功能使用(不进行字节或位寻址时)

当 CPU 不对P3口进行字节或位寻址时,单片机内部硬件自动将口锁存器的 Q 端置1。这时,P3口可以作为第二功能使用。各引脚的定义如下:

P3.0:RXD(串行口输人);P3.1:TXD(串行口输出);P3.2:INTO(外部中断0输人);

P3.3:INT1(外部中断1输人);P3.4:TO(定时器0的外部输人);P3.5:T1(定时器1的外部输人);P3.6:WR(片外数据存储器"写"选通控制输出);P3.7:RD(片外数据存储器"读"选通控制输出)。

P3口相应的口线处于第二功能,应满足的条件是:串行1/O口处于运行状态( RXD , TXD );外部中断已经打开( INTO非 、 INTI非);定时器/计数器处于外部计数状态( TO 、T1);执行读/写外部 RAM 的指令( RD非、 WR非)。

作为输出功能的口线(如 TXD ),由于该位的锁存器已自动置1,与非门对第二功能输出是畅通的,即引脚的状态与第二功能输出是相同的。

作为输人功能的口线(如 RXD ),由于此时该位的锁存器和第二功能输出线均为1、场效应晶体管丁截止,该口引脚处于高阻输人状态。引脚信号经输人缓冲器BUF3进人单片机内部的第二功能输入线。

 

59

#include

#include”intrins.h”

 

#define uchar unsigned char

#define uint unsigned int

 

void DelayMs(uint n)

{

  uchar j;

  while(n--)

   {

      for (j=0;j<123;j++);

}

}

void main (void)

{

uchar i,temp;

P2=0x02;

while(1)

{

temp=0x01;

for (i=0;i<8;i++)

{

p0=temp;

DelayMs(500);

temp=_crol_(temp,1);

}

temp=0x80;

for (i=0;i<8;i++)

{

p0=temp;

DelayMs(500);

temp=_cror_(temp,1);

}

}

}

 

定时器

#include

#define uchar unsigned char

#define uint unsigned int

sbit P27=P2^7;

void main (void)

{

    TMOD=0x01;

    TLO=0x00;

    THO=0xDC;

    IE=0x82;

    TRO=1;

    while(1);

 }

 void T0Isr() interrupt 1

 {

     P27=~P27;

     TLO=0x00;

     THO=0xDC;

  }

 

 

#include "reg52.h"

static int value = 0x01; //给P1赋值 对应 0000 0001

*函数名:Timer0_Init

*功能:定时器0初始化

*参数:无  

void Timer0_Init()

{

TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0X3C; //给定时器赋初值,定时50ms

TL0=0XB0; //0X3CB0的十进制是15536 从15536计数到65536计数50000次 即50000us=50ms

ET0=1;//打开定时器0中断允许

EA=1;//打开总中断

TR0=1;//打开定时器

}

*函数名:main

void main()

{

 Timer0_Init();

 P1 = value;

 //死循环

 while(1)

 {

 }

}

* 函 数 名: Timer0

* 函数功能: 定时器0中断服务函数

void Timer0() interrupt 1

{

static int i = 0; //控制循环左右移动

static int j = 0; //控制左右移动时间

static int flag = 1; //左右移动标志

j += 1; //每次进入中断加一,加满5次(10*50ms = 500ms=0.5s)刚好 0.25 秒

if(j==5)

{

if(i>=0 && i < 7 && flag ==1)

{

i++;

value = value<<1;   //0000 0001 << =  0000 0010

}

else if(i==7)

{

 flag = 0;

}

if(i <= 7 && i>0 && flag == 0)

{   

i--;

   value = value>>1;   //0000 0001 >> =  0000 0010

}

else if(i==0)

{

i++;

value = value<<1;   //若此处不移则led0会在返回时多亮一个0.25s

 flag = 1;

}

P1 = value;

j=0; //时间清零

TH0=0X3C; //手动给定时器重新赋初值,定时50ms

TL0=0XB0;

}

}

 

 

你可能感兴趣的:(大三考试,单片机,stm32,嵌入式硬件)