3重要知识点编程Word文档下载推荐.docx
《3重要知识点编程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《3重要知识点编程Word文档下载推荐.docx(44页珍藏版)》请在冰点文库上搜索。
![3重要知识点编程Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/bdb298ba-64d0-41d5-9314-3b11051caf83/bdb298ba-64d0-41d5-9314-3b11051caf831.gif)
运算器是用于对数据进行算术运算和逻辑操作的执行部件。
控制器是CPU的大脑中枢,它的功能是逐条对指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工作,完成指令规定的操作。
2-3MCS-51单片机的EA、ALE和PSEN端的功能是什么?
ALE——ALE为地址锁存允许信号,在访问外部存储器时,ALE用来锁存P0送出的低8位地址信号。
PSEN——外部程序存储器的读选通信号。
当访问外部ROM时,PSEN产生负脉冲作为外部ROM的选通信号;
在访问外部RAM或片内ROM时,不会产生有效的PSEN信号。
PSEN可驱动8个LSTTL门输入端。
EA——访问外部程序存储器控制信号。
对8051和8751,它们的片内有4KB的程序存储器。
当EA为高电平时,CPU访问程序存储器有两种情况:
一是访问的地址空间在0~4K范围内,CPU访问片内程序存储器;
二是访问的地址超出4K时,CPU将自动执行外部程序存储器的程序。
对于8031,EA必须接地,只能访问外部ROM。
2-4程序计数器(PC)有多少位?
它的主要功能是什么?
程序计数器有16位,它的功能和一般微型计算机的相同,用来存放下一条要执行的指令的地址。
当按照PC所指的地址从存储器中取出一条指令后,PC会自动加l,即指向下一条指令。
2-5简述MCS-51单片机片内RAM区地址空间的分配特点。
片内数据存储器分为工作寄存器区、位寻址区和数据缓冲器区等3个区域。
工作寄存器使用内部RAM中地址为00H~1FH的32个单元,并分成4个工作寄存器组,每个组有8个工作寄存器,名称为R0~R7。
对于内部RAM中地址为20H~2FH的16个单元,CPU不仅具有字节寻址功能,而且还具有位寻址功能。
这16个单元共128位,每一位都赋予1个位地址,位地址范围是00H~7FH。
30H~7FH是数据缓冲区,即用户RAM区,共80个单元。
2-6MCS-51单片机如何实现工作寄存器组R0~R7的选择?
每个工作寄存器组都可被选为CPU的当前工作寄存器,用户可以通过改变程序状态字寄存器(PSW)中的RS1、RS0两位来任选一个寄存器组为当前工作寄存器。
RS1
RS0
寄存器组
R0
R1
R2
R3
R4
R5
R6
R7
0
0组
00H
01H
02H
03H
04H
05H
06H
07H
1
1组
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
2组
10H
11H
12H
13H
14H
15H
16H
17H
3组
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
2-7单片机复位后,各特殊功能寄存器中的初始化状态是什么?
特殊功能寄存器
初始状态
ACC
TMOD
PC
0000H
TCON
PSW
TL0
SP
TH0
DPTR
TL1
P0~P3
0FFH
TH1
IP
xx000000B
B
IE
0x000000B
SCON
PCON
0xxx0000B
SBUF
不定
2-8MCS-51单片机的21个特殊功能寄存器中,哪些具有位寻址能力?
MCS-51单片机中的程序状态字寄存器(PSW),B寄存器,累加器(ACC),端口P0~P3,控制寄存器中用于中断控制的中断优先级控制寄存器(IP)和中断允许控制寄存器(IE),用于设置定时/计数器和串行口工作方式的定时/计数器控制寄存器(TCON)、串行口控制寄存器(SCON)具有位寻址能力。
2-9程序状态字寄存器(PSW)的作用是什么?
答:
PSW寄存器是8位寄存器,用做程序运行状态的标志,字节地址为D0H。
可以进行位寻址。
2-10MCS-51单片机的P3口具有哪些功能?
P3口是双功能口,除了作为准双向通用I/O口使用外,每一根口线还具有第二种功能,P3口的各位如不设定为第二功能则自动处于第一功能。
P3的第二功能涉及到串行口、外部中断、定时器,与特殊功能寄存器有关。
2-11MCS-51单片机的片外总线是由哪些总线构成的?
P0口的第二功能是在访问外部存储器时,分时提供低8位地址和8位双向数据总线,这时先用做地址总线再用做数据总线。
2-12MCS-51单片机对外有几条专用控制线?
2-13单片机时钟电路有何用途?
起什么作用?
单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是单片机控制器中的时序电路发出的。
单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。
为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地按时序进行工作。
MCS-51系列单片机内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路。
2-14什么是时钟周期、状态周期、机器周期和指令周期?
当单片机时钟频率为12MHz时,一个机器周期是多少?
ALE引脚的输出频率是多少?
时钟周期也称为振荡周期,定义为时钟脉冲频率(fosc)的倒数,它是计算机中最基本的、最小的时间单位。
时钟周期经2分频后成为内部的时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,称为状态周期,用S表示。
完成一个基本操作所需要的时间称为机器周期。
指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,指令不同,所需要的机器周期数也不同。
当单片机时钟频率为12MHz时,一个机器周期为1μs。
ALE引脚的输出频率为2MHz。
2-15什么时候需要复位操作?
对复位信号有何要求?
复位是单片机的初始化操作。
单片机系统在上电启动运行时,都需要先复位。
上电复位利用电容器的充电实现。
在时钟电路工作后,在RST端连续给出2个机器周期的高电平就可完成复位操作。
MCS-51单片机的上电加按键复位电路当复位按键按下后,复位端通过51Ω的小电阻与+5V电源接通,迅速放电,使RST引脚为高电平;
当复位按键弹起后,+5V电源通过2kΩ电阻对22μF电容重新充电,RST引脚端出现复位正脉冲。
2-16按例2-3的要求画出对应的硬件电路图。
2-17设计一个按键电路。
当按键长按5s以上时,系统复位;
当按键短时间按时,系统控制LED灯的开关。
(1)电路图如下。
(2)程序如下。
;
51程序,当按键时间小于5S时,控制灯的亮灭,按键时间大于5S时,系统复位。
ORG0000H
AJMPSTART
ORG000BH
AJMPTIME;
定时器T0中断,50ms中断一次,总共100次,共5s
ORG0100H
START:
CLRP2.2
FLAG1EQU22H;
按键时间超过5S标志位
MOVIP,#02H
MOVIE,#82H
MOVTMOD,#01H
MOVTH0,#3DH
MOVTL0,#0B0H
SETBEA
MAIN:
;
主程序
AAA:
JNBP2.0,BBB
AJMPEXIT
BBB:
SETBTR0
JBP2.0,DDD
MOVA,#01H
CJNEA,FLAG1,BBB
CCC:
长按键
CLRTR0;
关闭定时器
MOVTH0,#3DH;
恢复定时器的初值
JNBP2.0,$
CLRFLAG1
CLRA
MOV21H,A
MOV22H,A
AJMP0000H;
软件复位
DDD:
CPLP2.1;
短按键
TIME:
PUSHPSW;
中断程序
PUSHACC
MOVA,21H;
21H中存放次数
ADDA,#01H
CLRC
CJNEA,#100,TIME1
AJMPTIME2
TIME1:
JCTIME2
MOVFLAG1,#01H
NOP
TIME2:
POPACC
POPPSW
RETI
EXIT:
AJMPMAIN
END
习题与思考题3
3-1什么是寻址方式?
MCS-51指令系统有哪些寻址方式?
相应的寻址空间在何处?
在指令系统中,操作数是一个重要的组成部分,它指定了参与运算的数据或数据所在的地址单元。
如何找到参与运算的这个数据或数据所在的地址就称为寻址方式。
MCS-51指令系统的寻址方式主要有立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址加变址寻址、相对寻址和位寻址等七种。
对程序存储器只能采用立即寻址和基址加变址寻址方式;
对特殊功能寄存器只能采用直接寻址方式,不能采用寄存器间接寻址,对8032/8052等单片机内部RAM的高128个字节(80H~FFH),只能采用寄存器间接寻址,不能使用直接寻址方式;
对位操作指令只能对位寻址区操作;
外部扩展的数据存储器只能用MOVX指令访问,而内部RAM的低128个字节(00H~7FH)既能用直接寻址,也能用间接寻址。
3-2访问内部RAM单元可以采用哪些寻址方式?
访问外部RAM单元可以采用哪些寻址方式?
访问特殊功能寄存器(SFR)可以采用哪些寻址方式?
对特殊功能寄存器只能采用直接寻址方式,单片机内部RAM的高128个字节(80H~FFH),只能采用寄存器间接寻址,外部扩展的数据存储器只能用MOVX指令访问,而内部RAM的低128个字节(00H~7FH)既能用直接寻址,也能用间接寻址。
3-3访问外部数据存储器和程序存储器可以用哪些指令来实现?
举例说明。
访问外部数据存储器可以用以下指令实现:
MOVXA,@Ri;
((Ri))→A,寄存器Ri指向的片外RAM地址中的内容送到累加
器A中
MOVX@Ri,A;
A→((Ri)),累加器中内容送到寄存器Ri指向的片外RAM地址
中
MOVXA,@DPTR;
((DPTR))→A,数据指针指向的片外RAM地址中的内容送到累
加器A中
MOVX@DPTR,A;
A→((DPTR)),累加器中内容送到数据指针指向的片外RAM地
址中
访问程序存储器可以用以下指令实现:
MOVCA,@A+DPTR;
((A+DPTR))→A,表格地址单元中的内容送到累加器A中
MOVCA,@A+PC;
PC+1→PC,((A+PC))→A,表格地址单元中的内容送到累
3-4试用下列3种寻址方式编程,将立即数0FH送入内部RAM的30H单元中。
(1)立即寻址方式;
(2)寄存器寻址方式;
(3)寄存器间接寻址方式
(1)立即寻址方式:
MOV30H,#0FH
(2)寄存器寻址方式:
MOVR5,#0FH
MOV30H,R5
(3)寄存器间接寻址方式:
MOV@R1,#0FH
MOV30H,@R1
3-5SJMP指令和AJMP指令都是字节转移指令,它们有什么区别?
各自的转移范围是多少?
能否用AJMP指令代替程序中的所有SJMP指令?
为什么?
AJMP和SJMP的区别有:
(1)跳转范围不同。
AJMPaddr1;
短跳转范围:
2KB
SJMPrel;
相对跳转范围:
-128~+127
(2)指令长度不同。
(3)指令构成不同。
AJMP、LJMP后跟的是绝对地址,而SJMP后跟的是相对地址。
不能用AJMP指令代替程序中的SJMP指令,因为如果改变的话,程序跳转到的新PC值指向的地址会不同,导致程序出现错误。
3-6加法和减法指令影响哪些标志位?
怎么影响的?
在带进位的加法运算中,会影响进位位Cy,最终要将A中的值和其后面的值以及进位位Cy中的值相加,最终结果存在A。
在带进位减法指令中,要将累加器A的内容与第二操作数及进位标志相减,结果送回到累加器A中。
在执行减法过程中,如果位7(D7)有借位,则进位标志Cy置“1”,否则清“0”;
如果位3(D3)有借位,则辅助进位标志AC置“1”,否则清“0”;
如位6有借位而位7没有借位,或位7有借位而位6没有借位,则溢出标志OV置“1”,否则清“0”。
若要进行不带借位的减法操作,则必须先将Cy清“0”。
3-7写出实现下列要求的指令或程序片段。
(1)将R0的内容传送到R1;
(2)内部RAM的20H单元内容传送到寄存器R1;
(3)内部RAM的20H单元的D7和D3位清零,其它位保持不变;
(4)外部RAM的1000H单元内容传送到内部RAM的60H单元中;
(5)外部RAM的1000H单元内容传送到寄存器R2;
(6)清除累加器高4位。
(1)MOVA,R0
MOVR1,A
(2)MOVR1,20H
(3)MOVA,20H
ANLA,#77H
(4)MOVDPTR,#1000H
MOVXA,@DPTR
MOV60H,A
(5)MOVDPTR,#1000H
MOVR2,A
(6)ANLA,#0FH
3-8试编写一段程序,将内部数据存储器30H、3lH单元内容传送到外部数据存储器1000H、1001H单元中。
MOVA,30H
MOVDPTR,#1000H
MOV@DPTR,A
MOVA,31H
3-9试编写一段程序,将外部数据存储器40H单元中的内容传送到0l00H单元中。
MOVDPTR,#0040H
MOVA,@DPTR
MOV0100H,A
3-10试编写—段程序,将R3中的数乘4(用移位指令)。
MOVA,R3
MOV23H,#02H
L0:
DJNZ23H,L1
L1:
RLA
SJMPL0
3-11试编写—段程序,将R2中的各位倒序排列后送入R3中。
MOVA,R2
MOV23H,#08H
MOVR3,A
3-12试编写—段程序,将P1口的高5位置位,低3位不变。
MOVA,P1
ORLA,#F8H
MOVP1,A
习题与思考题4
4-1MCS-51系列单片机汇编语言进行程序设计的步骤如何?
单片机汇编语言进行程序设计的步骤:
(1)分析题意,明确要求;
(2)确定算法;
(3)画程序流程图,用图解来描述和说明解题步骤;
(4)分配内存工作单元,确定程序与数据区的存放地址;
(5)编写源程序;
(6)程序优化;
(7)上机调试、修改和最后确定源程序。
4-2常用的程序结构有哪几种?
特点如何?
常用的程序结构有顺序、分支、循环、查表及子程序结构;
特点是程序的结构清晰、易于读写和验证、可靠性高。
4-3子程序调用时,参数的传递方法有哪几种?
传递方法有传递数据、传送地址和通过堆栈传递参数。
4-4编写程序,将片内30H~39H单元中的内容送到以2000H为首的外部存储器。
ORG0000H
MOVR0,#30H
MOVDPTR,#2000H
MOVR1,#10
CLRA
LOOP:
MOVA,@R0
MOVX@DPTR,A
DECR1
DJNZR1,LOOP
END
4-5编写程序,采用算术平均值滤波法求采样平均值,设8次采样值依次放在20H~27H的连续单元中,结果保留在A中。
FILT:
CLRA
MOVR0,#20H
MOVR7,#08H
初始化
FILT1:
ADDA,R3
ADDCA,R2
INCR0
DJNZR7,FILT1
累加采样值到R3,累加进位到R2=00000xxxB
FILT2:
SWAPA
RLA;
R2/8,节省一个指令周期
XCHA,R3
SWAPA
R3/8,节省一个指令周期
ADDA,#80H;
四舍五入
ANLA,#1FH;
屏蔽移位进入的前三位
ADDCA,R3;
结果相加
取平均值
4-6编写程序,将存放在内部RAM起始地址为20H和30H的两个3字节无符号相减,结果存放在内部RAM单元70H、71H、72H中(低位对应低字节)。
MOVR0,#20H
MOVR1,#30H
MOVR2,#03H
CLRC
S0:
LCALLXU
MOV70H,A
LCALLXU
S1:
SUBBA,@R1
INCR1
RET
4-7编写程序,实现两个双字节无符号数的乘法运算,乘数存放在R2和R3中(R2存放高字节,R3存放低字节,以下类同),被乘数存放在R6和R7中,积存放在R4、R5、R6和R7中。
DMUL:
MOVB,R7
MULAB
MOVR0,A
MOVR1,B
低8位*低8位
MOVA,R2
ADDA,R1
MOVA,B
ADDCA,#00H
MOVR5,A
高8位*低8位
MOVA,R3
MOVB,R6
MOVA,R5
ADDCA,B
MOVA,#00H
MOVR4,A
低8位*高8位
ADDA,R5
MOVA,R4
高8位*高8位
MOVA,R0
MOVR7,A
MOVA,R1
MOVR6,A
R0、R1给R7、R6
4-8假设在R0指向的片内RAM区,存有20个16进制数的ASCII字串。
将ASCII码转换为16进制数,然后两两合成一个字节,从低地址单元到高地址单元依次组合。
MOVR7,#20
MOVA,R0
MOVR1,A;
R1为中间量
MOVA,@R0
SUBBA,#30H
MOV@R1,A
JCS01
SUBBA,#07H
S01:
INCR0