北工大单片机期末复习题A4一纸开 - 图文 下载本文

(4)已知要求的定时时间t,则定时器的初值为:

8

x=2-t×fosc/12=256-t×fosc/12

求得初值以后,应将x分配到TL0和TH0(两者相同):

方式3(M1 M0=1 1)仅限于T0 前3种工作方式,对两个定时器的设置和使用时完全相同。方式3下,z则是不同的。 方式3下的定时器0

方式3只适用于定时器T0。定时器0在方式3下被拆成两个独立的8位计数器TL0和TH0。其中T0既可计数使用,又可定时使用。TL0使用原T0的各控制位和引脚信号,其功能和操作方式与方式0和方

第5章 中断系统

M1 M0 0 0 0 1 1 0 式1基本相同。 TH0只可以用作简单的内部定时,占用原定时器T1的控制位TR1和TF1,还占用T1的中断源,其关闭和启动只受TR1的控制。 方式3下的定时器1

定时器T1只能用作方式0、方式1和方式2。由于TR1、TF1和T1的中断源已被定时器T0占用。此时只有控制位C/T切换控制定时和计数工作方式,且计数溢出时,只能将输出送入串行口。将定时器T1用作串行口的波特率发生器。

当设置好工作方式时,T1便开始运行;如要停止运行,只需送入一个设置定时器T1为方式3的方式控制字即可。因为定时器T1不能在方式3下使用,如果硬把它设置为方式3,就停止工作。

工作方式 方式0 方式1 方式2 功能说明 13位计数器 16位计数器 自动重新装入初值的8位计数器 T0:分成两个8位计数器; T1:停止计数 1 1 方式3 外部中断的应用-举例

例1:用一个按钮控制8个发光二极管,每按动一次按钮,是发光二极管按L1 →L2 →?. →L8 →L1的顺序循环移动点亮一位。

解:如图所示。在P1.0-P1.7外部连接8个发光二极管L1-L8,当P1.X输出低电平时,对应的发光二极管被点亮;当P1.X输出为高电平时,对应的发光2

极管熄灭。

在/INT1引脚上外接一个按钮。当按钮按下时,/INT1为低电平;按钮释放时,/INT1为高电平。 1. 用中断方式实现

单片机复位以后PC的值为0000H,外部中断1的矢量地址是0013H,而外部中断1的子程序必须放置在从0013H开始的8个存贮单元,无法实现。

考虑到从0000H到0013H只有19个单元空间,不可能放置完整的主程序,因此在0000H处放置一条转移指令,将主程序引

到别的位置;

不同的中断矢量地址之间,只有8个存储单元,无法放置完整的终端服务程序,因此在中断入口处也放置一条转移指令,以便将程序引到真正的中断程序的开始位置。一般习惯将中断程序放置在主程序之后。

用按钮控制发光二极管 ORG 0000H ;PC复位地址 AJMP MAIN ;MAIN为主程序入口地址

ORG 0013H ;外部中断1的矢量地址

AJMP INT_1 ;INT_1为外部中断1服务程序入口地址 ORG 0100H ;真正的主程序开始

MAIN: MOV SP, #60H ;堆栈初始化 MOV A, #11111110B MOV P1, A ;点亮二极管L1 SETB IT1 ;将外部中断1设置为下降沿触发方式 SETB EA ;CPU开中断

SETB EX1 ;外部中断1开中断 SJMP $ ;等待中断 ORG 0200H ;真正的外部中断1服务程序 INT_1: JB P3.3, EXIT RL A ;修改灯的状态 MOV P1, A EXIT: RETI ;中断返回 END 2.用查询方式实现 所谓查询,就是周期性的对按钮的状态进行访问,当查询到按钮为有效电平时就采用相应的处理。 ORG 0000H SETB P3.3 ;将P3.3设置为输入状态 MOV A, #0FEH ;设置为L1~L8的初始状态 LOOP: MOV P1, A JB P3.3, $ ;若按钮未动作,则原地等待

JNB P3.3, $ ;等待按钮释放,保证按动一次发光二极管只移动一位

RL A SJMP LOOP END ADC A,R3 例:双字节加法:设被加数在R0, R1中,加 MOV R5, A 数在R2, R3中,和存在R4, R5, R6中。 MOV A,#00H

ADC A, #00H DADD:MOV A,R0

CLR C MOV R6, A

, R2 RET ADD A

MOV R4,A MOV A,R1

2.MCS-51单片机内RAM的通用寄存器区共有32个单元,分为4组寄存器,每组8个单元,以R0 ~ R7作为寄存器名称。

4.MCS-51单片机的存储器分为4个物理上相互独立的存储空间,即片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器,按其逻辑关系可分为3个逻辑上相互独立的存储器空间。

5.MCS-51单片机片内和片外数据存储器的寻址空间可分为00H~FFH、0000H~FFFFH。

6.MCS-51系列单片机片包括很多机型,其中8031单片机内有0B的程序存储器。8051单片机有4kB的程序存储器。

7.MCS-51单片机所能使用的外晶振的频率为1.2M至12MHz。如果8031单片机的时钟频率为12MHz,则一个机器周期是1μs。机器周期:时钟周期:振荡周期=12:2:1

1.CPU的指令系统就是该CPU所能执行的指令集合。

2.MCS-51单片机的指令系统共有111条指令,按指令所占用的字节数分,有单字节指令,双字节指令,三字节指令。 3. MCS-51单片机的指令系统有7种寻址方式。立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址+变址寄存器间接寻址、相对寻址、位寻址

4.寄存器寻址方式的寄存器的内容是直接以寄存器形式给出的操作数,可用于寄存器寻址的寄存器有R0~R7、A、B、AB、DPTR等。 5.在寄存器间接寻址方式中,其“间接”体现在寄存器的内容不是操作数本身,而是操作数所在RAM单元的地址,可用于寄存器间接寻址的寄存器有SP、R0、R1、DPTR等。

6. 特殊功能寄存器按字节访问时,只能采用直接寻址方式。

7.在变址寻址方式中,可把DPTR或CP作为基址寄存器,而把A中的地址作为变址寄存器,变址寻址方式是专用于访问程序存储器一种寻址方式。

1. 编写子程序和中断服务程序时,必须注意现场的保护和恢复。 2. 计算机(微处理器)能够唯一识别的语言时机器语言。

1. 中断技术是解决资源竞争的有效方法,因此可以说中断技术实质上是一个资源共享技术。 2. 中断采样用于判断是否由中断请求信号,但MCS-51中只有外部中断才存在中断采样问题。

3.响应中断后,系统会自动产生一条长调用指令(LCALL ****H),以外中断为例,执行该指令的过程包括:首先将断点地址的内容压栈,以保存断点。然后把长调用指令指定的16位目标地址送PC,使程序转向该中断入口地址,执行中断服务程序。

1. 8031内部有2个16位的加1定时/计数器,其中T0有4种工作方式,T1有3种工作方式。

2. 当定时计数器产生溢出中断时,把定时器控制寄存器的TF0或TF1位置1。对计数溢出的处理,在中断方式时,该位作为中断请求标志位使用;在查询方式时,该位作为查询状态位使用。

1.单片机内部为单总线结构,而扩展存储器又要求系统必须提供三总线。为此,可用单片机的P0口提供数据总线,用P2口提供地址总线,P3.6和P3.7可提供控制输出线和控制输入线。WR RD

2. MCS-51可扩展程序存储器最大容量为64KB,数据存储器最大容量为64KB。 3.为实现内/外程序存储器地址的衔接,单片机EA引脚必须接高电平。

4.单片机的外部数据存储器与外部I/O口之间采用统一编制方式;内部程序存储器与外部程序存储器之间采用独立编址方式。 5. 从单片机角度上看,连接数据总线的输出口应具有锁存功能,连接到数据总线上的输入接口应具有三态缓冲功能。 3.对三态缓冲电路,除了数据输入线和数据输出线以外,还应有一个三态控制信号线。 1.在多位LED显示接口电路的控制信号中,必不可少的是段选控制信号和位选控制信号。

2.对于4位的LED显示器,如果采用静态显示方式,则同一时刻有4位显示器通电发光,如果动态显示,则同一时刻有1位显示

器发光。

1.D/A转换电路之前必须设置数据锁存器,这是因为D/A转换是需要一定时间的,在这段时间内待转换的数字量应保持稳定。 2.使用双缓冲的D/A转换器,可以实现多路模拟信号的同步输出。

3.A/D转换器暗转换原理可分为计数式、双积分、主次逼近式、并行式。

4.ADC0809中,既可作为查询的状态标志,又可作为中断请求信号使用的信号是EOC。 1.异步串行通信的帧格式由起始位、数据位、奇偶校验位和停止位组成。 2.串行通信有单工制式、半双工制式、全双工制式三种通信模式。

3.定时器1作波特率发生器使用时,通常是选用自动重载方式,即工作方式2. 4.发送MOV SBUF,A 接收MOV A,SBUF 5.定时器注意12分频

第3章 指令系统

寻址方式 直接寻址:

片内

(4)带Cy减法指令 SUBB

立即寻址:·立即数同操作码一起存放在程序存储器中

寄存器寻址:操作数在R7-R0,A,B,AB,DPTR中,指令码中含有该操作数的寄存器号;操作数位于片内RAM中

MOV A, Rn ; (A)← (Rn) 寄存器间接寻址:

@R0,@R1用于对片内RAM和外部RAM (0000H~00FFH)寻址,@DPTR的寻址范围是片外ROM/RAM的全部64KB区域;寄存器间址指令不能用于寻址SFR 变址寻址:

指令码中隐含有作为基地址寄存器用的数据指针DPTR或程序计数器PC(存放基地址);指令码中也隐含有累加器A(A中存放地址偏移量,00H~FFH范围内的无符号数);寻址空间是程序存储器。

MOVC A, @A+PC ; A ← (A+PC) 相对寻址:

·相对转移指令的指令码中含有相对地址偏移量;

·相对转移指令分为:短转移指令和长转移指令(分别为双字节和三字节);

·PC的当前值 + 相对地址偏移量rel = 下一条要执行指令的地址;SJMP rel ; PC ← PC+2+rel

5、位寻址:·位寻址区:片内RAM位寻址区20H~2FH和11个SFR;

数据传送指令(28条) (1)立即寻址型传送指令

(2)直接寻址型传送指令:指令操作码中至少含有一个操作数的直接地址。

MOV A, direct ; MOV direct ,A ; 注:目的存储单元有累加器A、工作寄存器和

RAM单元(包括SFR的字节地址)。

(3)寄存器寻址型传送指令(4)寄存器间址型传送指令

外部数据传送指令(外部RAM/ROM)(13条) (5)16位数传送指令

MOV DPTR,#data16 ; DPTR ← data16 16位立即数是外部RAM/ROM的地址,其高8位送入DPH,低8位送入DPL。

(6)外部ROM的字节传送指令(查表指令) MOVC A, @A+DPTR ; A ←(A+DPTR) 远程查表

MOVC A,@A+PC ; PC ← PC+1, A ←(A+PC) 近程查表

(7)外部RAM的字节传送指令:实现外部RAM和累加器A之间的数据传送。

MOVX A, @Ri; MOVX @Ri, A ; MOVX A, @DPTR ; MOVX @DPTR, A ;

注:前两外部RAM:0000H~00FFH后两0000H~FFFFH

(8)堆栈操作指令 PUSH+1再送入,POP弹出再-1

堆栈操作指令是直接寻址指令,书写格式为: 注:弹出指令不会改变堆栈区存储器单元中的内容。

(9)数据交换指令

XCH A,Rn ; A← Rn XCHD A, @Ri ; A3~0←(Ri)3~0 注:只是将累加器A中的内容和片内RAM单元内容相互交换。 2、算术运算指令(24条) ·加法指令( 13条)

(1)不带Cy加法指令 ADD (2) 带 ADDC (3) 加1指令:只影响奇偶校验标志位 ·减法指令( 8条)

减1指令:只影响奇偶校验标志位 DEC (6)十进制调整指令( 1条)

DA A ;若AC=1或A3~A0>9,则A ←A+06H

若Cy=1或A7~A4>9,则A ←A+60H

(7)乘法、除法指令( 2条)

MUL AB ;A×B=BA, 形成标志 对标志位的影响:Cy=0;

若B不等于0,则OV=1,否则OV=0; P由A中1的奇偶性确定。 DIV AB ; A÷B=A?B, 形成标志对标志位的影响:Cy=0; 若发现B等于0,则OV=1; P由A中1的奇偶性确定。 3、逻辑运算指令(25条) (1)逻辑与运算指令

ANL 用来清零

(2)逻辑或运算指令 ORL 置一 (3)逻辑异或运算指令 XRL 求反 (4)累加器A清零(CLR)和取反(CPL)指令

(5)移位指 不CY RL/RR 带CY RLC/RRC 交换SWAP

4、控制转移指令(17条) (1)无条件转移指令LJMP addr16 ; PC

← addr16

长转移指令:64K范围内转移指令 AJMP addr11 ; PC ← PC+2,PC10~PC0

← addr11

绝对转移指令:2K范围内转移指令 SJMP rel ; PC ← PC+2, PC

← PC+rel

短转移指令:-126-129范围内转移指令, rel的取值范围-128-127 JMP @A+DPTR ; PC ← A+DPTR (2)条件转移指令

累加器A判零转移指令(双字节)

JZ rel ; 若A=0,则 PC ← PC+2+rel,

否则JNZ rel;

(3)比较不相等转移指令 (三字节)

CJNE A,#data,rel;若A=data,则PC←PC+3 若A不等于data,则PC←PC+3+rel,形成Cy标志。

注意:指令的相对转移范围为-125 ~ +130 ·位置位指令(置1) SET C; SETB bit; ·位复位指令(清0)CLR

(3)位逻辑运算指令 ANL与;ORL或;CPL非

ANL C, bit

ORL C, bit CPL C

步骤:(1)A ←所查表的项数 #data

其中,data=查表指令到表始址间的指令字节数 (3)执行查表指令 例子:

(2)查表指令前应放如下指令:ADD A,

(4)位条件转移指令

PC ← PC+2 ·累加器 cy状态判断转移指令

JC rel

JNC rel

;若Cy=1,则(PC)+2+rel→PC ;若Cy=0,则(PC)+2→PC ;若Cy=0,则(PC)+2+rel→PC ;若Cy=1,则(PC)+2→PC

1. 多字节加法

已知,在内部RAM中,共有6组无符号4字节被加数和加数分别存放在以FIRST和SUCOND为起始地址的区域(低字节在前,高字节在后)。请编程序和(设和也为4字节),并把和存于以SUM开始的区域 ·位状态判断转移指令

JB bit, rel ;若(bit)=1,则(PC)+3+rel→PC (4)减1非零转移指令(两字节)

DJNZ Rn,rel;若Rn-1不等于0,则PC←PC+2+rel

若Rn-1=0,则PC←PC+2 注意:条件转移指令均为相对转移指令,因此指令的转移范围十分有限。 (5)短调用指令

ACALL addr11 ; PC←PC+2

SP←SP+1,(SP)← PC7~PC0

SP←SP+1,(SP)← PC15~PC8

PC10~0←addr11 注意:(1)短调用指令也称为绝对调用指令; (2)本调用指令应与被调用子程序起始地址在 同一个2KB范围内。 (6)长调用指令

LCALL addr16 ; PC ← PC+3

SP ← SP+1,(SP) ← PC7~PC0 SP ← SP+1,(SP) ← PC15~PC8 PC15~0 ← addr16

注意:本调用指令是一个64KB范围内调用指令。

(7)一般子程序返回指令

RET; PC15~PC8 ← (SP), SP ← SP-1, PC7~PC0 ← (SP), SP ← SP-1 (8)中断子程序返回指令 RETI同上

在返回断点的同时,释放中断逻辑,接受新的中断请求。

(9)空操作指令:NOP ; PC ← PC+1

5、布尔变量操作指令(17条) (1)位传送指令 MOV C , bit MOV bit , C

其中:C为PSW中的Cy;bit为布尔变量的位地址。

这组指令的其中一个操作数必须是进位标志C,另一个可以是位地址。 (2)位置位和复位指令

;若(bit)=0,则(PC)+3→PC JNB bit, rel ;若(bit)=0,则(PC)+3+rel→PC

;若(bit)=1,则(PC)+3→PC

JBC bit, rel ;若(bit)=1,则 (PC)+3+rel→PC,0

→bit

;若(bit)=0,则 (PC)+3→PC

6、伪指令——是在机器汇编时供汇编程序识别和执行的命令,用于对汇编的过程进行控制。 ORG 指令代码存储起始地址ORG 2000H

EQU 等值(赋值)语句 先定义后使用 DAPORT EQU 0C010H DATA 数据地址赋值语句

字符名称 DATA 表达式AA DATA 35H 注:表达式可为数据或地址,也可包含已定义的“字符名称”,但不能是汇编符号。 DB:定义字节 [标号:] DB 项或项表 DW:定义双字节数(字)(高8位放低地址单元)

[标号:] DW 项或项表 DB:定义存储空间

[标号:] DS 表达式 预留一定数量内存单元

BIT:位地址赋值 字符名称 BIT 位地址

汇编语言程序设计 1.查表程序设计

DPTR作基址的查表指令

MOVC A, @A+DPTR ; A ←(A+DPTR ) 步骤:(1)DPTR←所查表的始址 (2)A←所查表的项数 (3)执行查表指令 PC作基址的查表指令

MOVC A, @A+PC ; A ←(A+PC )

ORG 0900H MOV R0,#FIRST first送R0 MOV R1,#SECOND second送R1 MOV PSW,#08H 进1#工作区 MOV R0,#SUM SUM送r0 CLR PSW.3 返0#工作区 MOV R2,#06H 组数送r2 LOOP2:CLR C MOV R3,#04H 字节数送r3 LOOP1:MOV A,@R0 求和

ADDC A,@R1 SETB PSW.3 进入1#工作区 MOV @R0,A 存和 INC R0 CLR PSW.3 返回0#工作区 INC R0 修改源指针 INC R1 修改源指针 DJNZ R3,LOOP1 本组未完LOOP1 DJNZ R2, LOOP2 6组未完 LOOP2 SJMP $ END

2. 求和、求平均:

在内部RAM从30H开始的单元中,存有16个单字节无符号数。求其和(2字节)

及平均值,分别存于40H单元和42单元。

AJMP 500H

ORG 30H

TAB: DB 9,10,11,12,13,14,15,16,

17,18,19,20,21,22,23,24