51单片机整理
51单片机基本知识点整理
介绍:本人通过最近对51单片机的整理复习,觉得比较重要的事定时器/计数器,中断,再就是A/D,D/A,相信我们把这部分掌握好了,那么我的单片机学习,也就掌握了绝大部分内容,虽然老师教了我们串行通信、键盘、显示但是老师只是告诉了我们最基本的知识点,要想掌握此部分内容,那么我们就需要自己看书,研究这部分程序,相反这份在我们将来从事的工作中也是用的比较广泛的,键盘、液晶显示、串行通信,而同时现在串行通信变得越来越重要了,我们需要把基础打牢固,这样我们就会轻松的应对更多的单片机。毕竟51单片机只是基础,我们不知道的单片机还有许多。 一、问答题整理(比较重要的类型)
1、80C51 ROM空间中,0000H~0023H有什么用途?用户应怎样合理安排?
答:0000H~0023H是80C51系统专用单元,其中0000H为CPU复位地址,0003H~0023H是5个中断源中断服务程序入口 地址,用户不能安排其他内容。一般来讲,从0030H以后,用户可自由安排。 2、80C51如何确定和改变当前工作寄存器区?
答:80C51是根据程序状态字寄存器PSW中工作寄存器区选择控制位RS1、RS0(PSW.4、PSW.3)来确定和改变当前工作寄存器 区: RS1、RS0=00——0区(00H~07H) RS1、RS0=01——1区(08H~0FH) RS1、RS0=10——2区(10H~17H) RS1、RS0=11——3区(18H~1FH)
3、简述读外ROM和读写外RAM用到的控制信号。 答:读外ROM的控制线有3条: ①ALE:控制锁存低8位地址信号。 ②PSEN:控制外ROM输出。 ③EA:确定读外ROM。
读写外RAM控制信号分别为: ①RD:控制外RAM输出。 ②WR:控制外RAM输入。
4、为什么一般情况下,在中断入口地址区间要设置一条跳转指令,转移到中断服务程序的实际入口处? 答:由于80C51相邻两个中断入口地址间只有8字节的空间,8个字节只能容纳一个有3~8条指令的极短程序。一般情况中中断服务程序均大大超 出8个字节长度。因此,必须跳转到其他合适的地址空间。
Made in sust.edu
5、试归纳小结80C51定时/计数器4种工作方式的特点。
答:①方式0是13位计数器,最大计数值2=8192,计数范围比方式1小,计算定时初值比较麻烦,容易出错,与方 式1比较无任何优点。
②方式1是16位计数器,最大计数值为2=65536,计数范围大,适用于定时范围较大的应用场合。 ③方式2是8位计数器,最大计数值是2=256,缺点是计数范围小,优点是定时初值可自动恢复,适用于需要重复定时, 而定时范围还不大的应用场合。
④方式3是8位计数器,仅适用于T0,T1无方式3。T0方式3时,被拆成两个独立的8位计数器TH0、TL0 6、如何判断T0、T1定时/计数溢出?
答:判断T0、T1定时/计数溢出的方法有两种:
①查询方式。不断查询T0、T1溢出标志TF0、TF1:TF0或TF1=0时,未溢出;TF0或TF1=1时,溢出。 ②中断方式。T0、T1定时/计数溢出时,在CPU、T0、T1中断开放前提下能自动产生中断。
7、在MCS-51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?
解:因为控制信号线的不同:
外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为OE和WE。外扩RAM的读、写控制引脚分别与MCS-51的RD和WR引 脚相连。
外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与MCS-51单片机的 PSEN相连。 8、简述51单片机内部结构主要由哪些部分组成?
主要由以下部分组成: CPU、RAM、ROM、 四个并行I/O口、1个串行口、 2个16位定时器/计数器、中断系统、特殊功能寄存器。
9、写出MCS-51的所有中断源,并说明说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除,为什么? 答: 外部中断INTO
定时器/计数器中断T0 外部中断INT1 定时器/计数器中断T1
串行口中断 其中串行口中断TI与RI必须用软件清“0”,因为串口中断的输出中断为TI,输入中断为RI, 必须用软件清“0”。 10、简述8051片内RAM的空间分配。
解:8051片内RAM为128字节,地址从00H~7FH,它又分成3个区,即00H~1FH,4组寄存器,20H~2FH,
816
13
可位寻址区,30H~7FH为用户RAM区,主要用于堆栈和数据缓冲。80H~FFH为SFR。 11、使单片机复位有哪几种方式?单片机复后的初始状态如何? 解:复位操作有两种:
12、上电自动复位:通过复位电路的电容充电来实现 13、按键手动复位:按键电平复位,按键脉冲复位
复位后的初始状态:大多数寄存器清零,SP=07H,四个P口为FFH 下面几个寄存器有不确定的位: IP: **000000B IE: 0*000000B PCON: 0***00000B 根本不确定的是:SCON
14、MCS-51有哪几种寻址方式?举例说明它们是怎样寻址的? 答:MCS-51指令系统的寻址方式有以下7种: 立即寻址方式:操作数直接出现在指令中。
直接寻址方式中:操作数的单元地址直接出现在指令中。 寄存器寻址方式中:寄存器中的内容就是操作数。
寄存器间接寻址方式中,指定寄存器中的内容是操作数的地址,该地址对应存储单元的内容才是操作数。 变址寻址方式是以程序指针PC或数据指针DPTR为基址寄存器,以累加器A作为变址寄存器,两者内容相加(即基地址+偏移量)形成16位的操作数地址,
相对寻址是以程序计数器PC的当前值作为基地址,与指令中的第二字节给出的相对偏移量rel进行相加,所得和为程序的转移地址。
位地址:内部RAM地址空间的可进行位寻址的128位和SFR地址空间的可位寻址的11个8位寄存器的88位。位寻址给出的是直接地址。
15、 在什么情况下,P3口作为第二功能使用?
答:P3口的第二功能是作为控制端口使用的。由于单片机没有专设的控制信号引脚,单片机在进行外部存储器和I/O端口扩展时所需要的控制信号必须由P3口提供,P3口第二功能相当于PC机中CPU的控制线引脚。
16、简述89C51单片机中断的概念。
当CPU正在处理某件事情的时候,外部发生的某一事件请求CPU迅速去处理,于是,CPU暂时中止当前的
工作,转去处理所发生的时间。中断服务处理完该事件以后,再回到原来被中止的地方,继续原来的工作,这样的过程成为中断
17、简述51系列单片机中断响应的条件。 有中断源发出中断请求;
中断总允许位EA=1,即CPU开中断;
申请中断的中断源的中断允许位为1,即中断没有屏蔽; 无同级或更高级中断正在被服务; 当前的指令周期已经结束;
若现在指令为RETI或者是访问IE或IP指令,则该指令以及紧接着的另一条指令已执行完。 18、为什么一般都把主程序的起始地址放在0030H之后?
因为0000H~0030H中有中断的矢量地址,为了避免冲突,一般都把主程序的起始地址放在0030H之后。 19、简述看门狗的基本原理。
看门狗是通过软件和硬件的方式在一定的周期内监控弹片机的运行状况,如果在规定时间内没有收到来自单片机的清除信号,也就是我们通常说的没有及时喂狗,则系统会强制复位,以保证系统在受干扰时仍然能够维持正常的工作状态
二、作图连线题(主要涉及到存储器的扩展)
1、用6264(8K*8)构成8K的数据存储系统。要求采用线选法产生片选信号,并计算6264的地址范围。
EA80C51WRRDP2.5P2.4P2.3P2.2P2.1P2.074LS373WEA12A11A10A9A8A7CSOE6264A0D0P0ALED76264的扩展
6264的地址范围为:0000H—1FFFH
延伸:如果要想扩展多片6264,那么当片选线不够用时可以通过译码器来实现片选。
2、下图为MCS—51单片机系统中混合扩展1片存储器2764、6264芯片部分连线电路图。
试分析电路并回答下列问题:
1).请简单叙述2764芯片的功能、容量,在电路中起什么作用? 2).请简单叙述6264芯片的功能、容量,在电路中起什么作用?
3).请分析各片2764、6264所占用的单片机数据存储空间的地址范围是多少?
EA80C51WRRDP2.5P2.4P2.3P2.2P2.1P2.074LS373WECSOEA12A11A10A9A8A76264CSA12A11A10A9A8A7A0D02764A0D0P0PSENALED7D7OE2732、6264的扩展
1)、芯片2764是EPROM存储器,其容量是8K,在电路中起程序存储器的作用。 2)、芯片6264是随机存储器,其容量是8K,在电路中起数据存储器的作用。 3)、芯片2764的地址范围是0000H---1FFFH; 芯片6264的地址范围是0000H---1FFFH. 3、阅读下列硬件图,补齐连接线、并回答问题
1、 ALE、PSEN、WR、RD的功能
ALE作地址锁存的选通信号,以实现低八位地址的锁存,PSEN信号作扩展程序存储器的读选通信号 WR、RD作为扩展数据存储器和I/O端口的读写选通信号。 图中各芯片的功能
74LS373:地址锁存器,用来锁存P0口发送的地址低8位
2764 :容量为8KB的程序存储器(EPROM)用来存储程序 6264 :容量为8KB的数据存储器(RAM)用来存储数据
8031:不含程序存储器的8位单片机芯片,是不带I/O设备的微型计算机。 3、2764、6264的地址范围(P2.5取”0”)
2764:8000H~9FFFH 6264: 4000H~5FFFH 三、程序题
1、数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开始的连续32个单元。 ORG 1000H MOV R0,#30H MOV R1,#60H MOV R7,#32 LOOP: MOV A,@R0 MOV @R1,A
INC R0 INC R1 DJNZ R7,$ END
2. 将4个单字节数放片内30H~~33H,它们求和结果放在片内40H,41H单元。
ORG 1000H
MOV R7,#04H MOV R0,30H CLR A
MOV 41H,A
LOOP: ADD A,@R0 JNC NEXT
INC 41H
NEXT: INC R0
DJNZ R7,LOOP
MOV 40H,A SJMP $ END
3.RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和
个位放在累加器A中,百位放在R2中。 ORG 2200H MOV A,40H MOV B,#64H DIV AB MOV R2,A MOV A,#0AH XCH A,B DIV AB SWAP A ORL A,B
SJMP $ END
4.编程序将片内40H-46H单元内容的高4位清零,保持低4位不变。
ORG 1000H MOV R7,#07H
MOV R0,#40H
LOOP:MOV A,@R0 ANL A,#0FH MOV @R0,A INC R0
DJNZ R7,LOOP SJMP $
END
5、将内部RAM20H为首的16个单元的8位无符号数排序写出程序,并作适当注释
ORG 0000H MOV RO, #20H MOV R7, #07H
LOOP: MOV A,@R0
MOV 2AH, A INC RO MOV B,@RO MOV 2BH, B CLR C SUBB A, B JC NEXT MOV @RO, 2BH DEC RO MOV @RO, 2AH INC RO
NEXT: DJNZ R7, LOOP
SJMP $ END
6、已知晶振频率为6MHz,在P1.0引脚上输出周期为500微秒的等宽矩形波,若采用T1中断,工作方式2,试写出中断初始化程序 MOV TMOD, #20H MOV TL0, #83H MOV TH0, #83H SETB TR1 SETB ET1 SETB EA SJMP $
7、 已知一MCS—51单片机系统的片内RAM 20H单元存放了一个8位无符号数7AH,片外扩展RAM的8000H
存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。
CY 0 A 01H DPTR 8000H 片外01H 01H 片外00H 00H 片外8000H 86H ORG 0000H MOV DPTR, 8000H MOVX A, @DPTR ADD A, 20H MOV R0, 00H MOVX @R0, A INC R0 CLR A ADDC A, #00H MOVX @R0, A RET
8、已知如图并给出下列程序,请在读图并理解程序后回答下列问题: (1)程序功能为:循环采集8路模拟信号中的数据 (2)ADC0809的口地址为:7FF8H---7FFFH
(3)EOC的作用是:EOC为A/D转换结束信号,用来引起中断或查询,以便读取A/D转换结果。 (4)程序运行结果存于:AOH---A7H 运行的程序:
ADC:MOV DPTR,#7FFOH MOV R0,#0A0H MOV R2,#8 MOV A,#0 LOOP:MOVX @DPTR,A JB P3.3,$ MOVX A,@DPTR MOVX @R0,A 1NC DPTR 1NC R0
DJNZ R2,LOOP
AJMP ADC