AT89C51的特点
拼假攻略-大班上学期工作计划
AT89C51的特点
·4 K 字节EPROM 无EPROM
·128字节RAM
·可寻址64K字节外部程序存储器空间
·可寻址64K字节外部数据存储器空间
·四个8位IO口
·两个16 位定时计数器
·一个全双工串行IO口(USART)
·五个中断源,两个优先级
1.
AT89C51系列单片机各引脚中有四个8位的并行IO口,共占用32个引
脚。还有8
个引脚各为:
Vss,VCC—地和电源端
XTAL1,XTAL2—振荡器反相放大器的输入,输出端
RESET—复位输入端
PSEB—程序存储器使能端
EAVPP—访问外部存储器使能端编程电源
ALEPROG—地址锁存使能端编程脉冲
读者务必搞清每个引脚的功能 ,才能得心应手
地应用它。
2.
要特别注意有“第二”功能的引脚。有的书上也称特殊功能。为了避免
与后面提到的特殊功能寄存器混淆
,本书中都用“第二”功能来表示一个
引脚的另一种功能 。有第二功能的引脚如 P3口的8个引脚。
要注意的是
在使用它的第二功能作为控制线应用时,该引脚不能再用作数据线。又如
P1口的P
1.0T2、P1.1T2EX这二根线也有第二功能,可用作计数器2的数
据和触发输入
3. p0口是一个8位漏极开路的双向并行IO口。当扩展外部程序存储器时,它
是一个复用
的低8位地址数据总路线。在作编程校验期间,它也用作数据输
出。
3. 程序状态字PSW
程序状态字PSW是一个8位寄存器,用来寄存当前指令执行的状态,
为下条指令的执行提供状
态条件,有许多指令的招待结果将影响PSW的某
些状态标志位,这些标志可作为下一条指令执行的依据
或由用户读出判断指
令的招待情况。PSW寄存器的结构及各状态标志的定义及功能如下:
位序号
CY AC F0 RS1 RS0 OV F1 P
地址 D0H
1
PSW的复位值是00H。
位
CY
AC
定义及功
高位进位标志位。除了用来寄存运算结
果高位进位标志外,还在布
尔处理中作位累加器胜,所以又称布尔累加器
辅助进位标志位,常用于BCD运算
通用标志位,可由用户通过软件定义(置位清零)或检测
F0
RS1 RS0
0 0
0 1
1 0
1 1
OV
F1
P
奇偶校验标志位。每一指令周期由硬件设置清零以指示累加器A中
“1”位的个数:偶数个“1”置0,奇数个“1”则置1
通用标志位
寄存器组选择控制位
组0被选择,数据寄存器地址00H~07H
组1被选择,数据寄存器地址08H~0FH
组2被选择,数据寄存器地址10H~17H
组3被选择,数据寄存器地址18H~1FH
溢出标志位,用于符号数运算的溢出。当运算结果次高位向最高位
产生进位,而最高位不产生进位时溢出位置1,否则溢出位置零
4.堆栈指针SP
AT89C51单片机允许用户内部RAM的任一连续区域作为堆栈区。<
br>AT89C51C51型内部RAM为128字节。AT89C51C51型为256字节,所以
堆栈指针SP为8位寄存,指示堆栈栈顶。压入堆栈时SP先自动加工厂,
将欲压栈的数据压入SP所指
示的单元。出栈时将SP所指示的栈顶地址单
元内数据弹出,然后SP自动减肥,因而SP总是指向栈顶
。在芯片复位或
上电后,栈指针SP总是初始化指向07H单元,所以第一个压入堆栈的数据
放
08H单元中,并以此为起始单元。堆栈指针SP的内容可以编程,从而再
定位到内部数据存储器RAM
的任意位置。
5.16 位数据指针DPTR
DPTR是一个独特的16位地址
寄存器。它可以指向64K字节范围的任
一地址单元。它分为二个独立的8位数据指针:DPH和DPL
。它的功能是
2
存放16位地址,用于间接调用(CSLL)、转移(JM
P)以及外部数据传送
和查表指令。
6. 程序计数器PC
PC的内容是要执行的
下一条指令的地址,它决定程序执行的次序。指
令周期是这样进行的:CPU把PC的内容放在地址总线
(片内或片外)上,
CPU把指令字(可能是多字节指令——从存储器取出,这时PC自动增量,
PC内容指出下一条指令地址。例如指令是三字节的,则每取一个字节,PC
就增1;取出三字节指令
后,PC仍指向下一条指令地址。如此不断执行。
一般指令是按顺序执行的。若要改变正常的次序,必须
把新的数据送入PC,
这叫做转移。
必须注意AT89C51系列的PC不在特殊功能寄存SFR中,指令不能直接访问。
振荡器及时钟电路
复位电路
2.4.2具有第二功能的IO口引脚
P
3口的8位是双向功能的(AT89C51C52类还有P1口的2位),它们
除正常的并行IO功能外
,还可用作特殊的第二功能(也称变异功能)。有
第二功能的IO口各位如下表所示。
表2
具有第二功能的IO口
IO引脚
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
第二功能
RXD——串行数据输入端(异步)或串行数据输入输出端(同步)
TXD——串行数据发送端(异步)或串行时钟输出端(同步)
INT0——外部中断0请求输入定时器0选通控制
INT1——外部中断1请求输入定时器1选通控制
T0——计数器0的外部输入端
T1——计数器1的外部输入端
WR——外部数据存储器写控制,把来自P0口的数据字节锁入外部数据存
储器
RD——外部数据存储器读控制,把外部数据存储器
AT89C51系列单片机的IO口作输
入时,一定要按单片机使用手册上的要求,先
向IO口写入“1”,否则IO口工作不正常,这里再强调
一下。
低地址RAM区中的00~1FH单元共同社32个单元为工作寄存器区,共
分四组,
每组8个8位寄存器,称为工作寄存器组0~工作寄存器组3。在某
一时刻只能选用其中一个组工作(通
过程序状态字PSW的工作寄存器选择
位来选择)。
从20H~2FH共16个字节单元,这16个字节单元既可字节寻址也可位寻址,位地
3
址从00H~7FH,共128位。从30H~7FH共80个字节单元,为字节寻址的
内部
RAM区(也称用户RAM区)。
AT89C51系列单片机设有七种寻址方式,即:
·寄存器寻址。
·直接寻址。
·寄存器间接寻址。
·立即寻址。
·基址寄存器加变址寄存器间接寻址。
·相对寻址。
·位寻址。
序号
1
2
3
4
5
6
寻址方式
寄存器寻址
直接寻址
寄存器间接寻址
立即寻址
基址寄存器加变址寄存器间接寻址
相对寻址
相应存储器空间
R0~R7,ACC,B,Cy(位),DPTR
内部RAM低地址128字节和特殊功能寄存
器
内部RAM(@R1,@R0,SP)外部数据存
储器(@R1,@R0,@DPTR)
程序存储器立即数
程序存储器(@A+DPTR,@A+PC)
以PC的当前值为
基地址+指令中给出的偏移
量=有效转移地址。转移范围:PC当前值的
+127~+128字
节
参内部RAM或特殊功能寄存器的某些单元
进行位寻址
7
位寻址
1 TMOD和TCON寄存器
在AT89C51单片机中有二个SFR,即TM
OD和TCON寄存器,用来设定定
时计数器的工作方式和有关功能。当用指令来设定TMOD和TCO
N时,其内容
锁存在这二个寄存器中,而在下个指令的第一个机器周期的S
1
P
1
时发生作用。这
二个SFR各位的含义及功能说明如下。
1.
定时器方式寄存器TMOD
定时器方式寄存器TMOD的格式如下:
位序号
GATE
TMOD
CT M1 M0 GATE CT M1 M0
4
输入时钟
M1 M0 工作方式 功能说明
13位定时计数器
16位定时计数器
具有8位重装的8位定时计数器
定时计数器0用作一个8位定时计数器
和一个8位定时器。定时计数器1停止
内部(定时吕器)
f
osc
(12×32)
f
osc
12
f
osc
12
f
osc
12
外部(计数吕器)
F
osc
(24×32)
f
osc
24
f
osc
24
f
osc
24
0
0
0 1
1 0
1 1
方式0
方式1
方式2
方式3
CT:选择定时方式或计数方式。当。CT=1时为计数方式;当CT=0时为定时方
式。 <
br>GATE:门控制。置“1”时,只有当INT0(1)引脚为高电平且TR0(1)置“1”
时
才运行定时器0(1);清“0”时,只要TR0(1)位置“1”就运行定时器0(1)。
低4位用
于定义定时计数吕器0,高4位用于定义定时计数吕器1。复位时TMOD
的所有位均清0。
2. 定时器控制寄存器——TCON
定时器控制寄存器的格式如下为:
位序号
7 6 5 4 3 2
1
0
TF1 TR1 TF0 TR0 IE1 IT1 IE0
IT0
TCON
其中:
TF1:定时器1溢出中断请求标志。当定时器1溢出时由硬件置1,当主机响应中
断,程序
转向中断程序时,由硬件清0。
TR1:定时器具运行控制行。由软件置位复位来开启或关闭定时器1。
TF0:定时器0溢出中断请求标志。当定时器0溢出时由硬件置1,当主机响应中
断,程序
转向中断服务程序时,由硬件清0。
TR0:定时器0运行控制位。由软件置位复位来开启关闭定时器0。
IE1:外中断定跳变
中断请求标志。当检测到INT0引脚上发生由1→0跳变,且
IT1=1时,
由硬件置位IE1;当主机响应中断,程序转向中断服务程序时,由硬件清0
IE0。
5
IT1:用软件置位清0来选择外中断定
的跳变电平触发中断请求。如果IT1=1,
外中断由
跳变触发,前一周期INT1上为高电平,紧接后一个周期为低电平,即INT1
上的跳
变触发产生中断请求;如果IT1=0,则由INT1上的低电平触发产生中断请
求。
IT0:用软件置位清洗来选择外中断定的跳变电平触发中断请求。选择原理同
IT1。
2.2.7串行接口
AT89C51的串行IO为全双工接口,即接收和发送可以同时进行。
它有接收
缓冲器,在读出前一个数据字节时,能开始接收第二个数据字节。如果在第二个
字节已
接完毕,而第一个字节尚未被读出,则将丢失其中的一个字节,读出SBUF
实际就是从接收寄存器中读
取信息。
串行IO有4种工作方式(一种同步方式,三种异步方式),这可通过对SCON
控
制编程来选择。串行接口控制寄存器SCON的格式如下:
位序号 7 6
5 4 3 2 1
0
SM0 SM1 SM2 REN TB8 RB8 TI RI
SCON
这个寄
存器的内容不仅是方式选择位和控制位,还有发送和接收时的第九数
据数(TB8、RB8)和串行口中
断位(TI、RI)。下面详细说明:
SM0、SM1确定串行口的工作方式:
SM0
SM1 工作方式 功能说明 波特率
0 0 方式0
同步工作方式 112 f
OSC
0 1 方式1
10位 可变(定时器溢出率N)
1 0 方式2 11位
164或132 f
OSC
1 1 方式3 11位
可变(定时器溢出率N)
SM2:允许方式2和3的多机通讯控制位。在方式2和3中,如SM2由软
件置为
1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(RI=0)。
在
方式1中,如SM2=1,则只有在接收到有效停止位时才启动RI,没有
接收到的效停止位,则RI清
0(不启动)。在方式0中,SM2应为0。
REN:允许串行IO接收控制位。软件置位(REN=
1时允许接收,启动串行口的
接收器RDX,开始接收数据。软件复位(REN=0)时,则禁止接收。
TB8:方式2和3中,要发送的第9位数据,按需要由软件进行置位或清0。例
如可用作数据
的奇偶校验位。
RB8:方式2和3中,是接收到的第9位数据。在方式1中,若SM2=0,则RB8
6
是接收到的停止位,在方式0中,不使用RB8。
TI: 发送中断标志
。在方式0的串行发送第8位结束时,由硬件置位。CPU响
应中断后,必须用软件清“0”。在其它方
式中,则在停止位开始时置位,
必须用软件清“0”。
RI: 接收中断标志。方式0串行
接收到第8位结束时由硬件置位。在其它方式
中,串行接收到停止位的中间时刻硬件置位(例外情况见S
M2的说明)。
必须用软件清0。
复位时SCON的所有位都清0。
2.8.1 中断源的说明
下面将5个中断请求源说明如下:
INT0:外部中断
0请求,低电平有效。它由P3。2引脚输入(第二
功能)。在第个机器周期的S5P2采样P3。2引
脚,并置位或清0 SFR中
IE的EXO标志。
INT1:外部中断1请求,低电平有效。
它由P3。3引脚输入(第二
功能),在每个机器周期S5P2采样P3。3引脚,并置位或清0
SFR中IE
的EXI标志。
定时器0溢出中断:当定时器0产生溢出,置位内部定时器0中
断请求标志TF0,
请求中断处理。
定时器1溢出中断:当定时器1产生溢出,置位内部定时
器1中断请求标志TF1,
请求中断处理。
串行中断:当完成一串行帧的接收发送时,置位内
部串行中断请求标志TI(发送)
或RI(接收),请求中断处理。
2.8.2
中断允许寄存器IE
是否允许中断由中断允许寄存器IE中的各位决定,通过软件对IE中各位的编程,可分别控制各个中断也可实现总的允许中断或禁止中断的控制、IE寄存器
的格式如下:
位序号
EA
__
ET2 ES ET1 EX1 ET0 EX0
IE
EA(IE·7):禁止所有中断。当EA=0,则禁止所有中断响应。当EA=1,
则各中断源的允许或禁止取决于各自中断允许位的状态(置位或清0)。
-(IE·6):保留,无意义。
ET2(IE·5):允许或禁止定时器2(52型)的溢
出和捕获中断。ET2=0,禁止中
断;ET2=1,允许中断。
ES(IE·4):允许或禁止串行口的中断。ES=0,禁止中断;ES=1,允许中断。
ET1(IE·3):允许或禁止定时器1的溢出中断。ET1=0,禁止中断;ET1=1,允
7
许中断。
EX1(IE·2):允许或禁止外中断1(INTI)的中断。E
X1=0禁止中断;EX1=1,
允许中断。
ET0(IE·1):允许或禁止定时器0的溢
出中断。ET0=0,禁止中煌;ET0=1,允
许中断。
EX0(IE0):允许或禁止外
中断0(INT0)的中断,EX0=0,禁止中断;EX0=1,
允许中断。
2.8.3 中断优先级
AT89C51系列单片机的中断具有两级优先级。每一个中断源都可以通
过对中
断优先级寄存器IP中的相应位置位或清0,编程为两级中断中的任一级——高优
先级或
低优先级,置1为高优先级,清0为低优先级。低优先级可被高优先级所
中断,但不能被另一个低优先级
中断所中断。高优先级中断不能被任何中断所中
断。为了实现这些规定,中断系统中设有二个不可寻址的
优先级状态触发器,其
中一个用来指出正在服务于高优先级中断,并阴止所有其它中断的响应。另一个<
br>则指出正在服务于低优先级中断,并阻止除高优先级中断以外的其它中断的响
应。
当
同时接收到几个优先级相同的中断请求时,则由内部查询次序来确定响应
哪一个中断请求。因此,在每个
中断级中又有按查询次序的中断优先次序。查询
次序如下:
1.IE0
(外中断INT0) 最先查询
2.TF0
(定时器0溢出中断)
3.IE1 (外中断INTI)
4.TF1 (定时器1溢出中断)
5.RI+TI
(串行口中断)
6.TF2+EXF2 (定时器2溢出中断)
最后查询
这种“同级内的优先次序”仅用来解决相同优先级中断源同时请求中断的情
况,而不
能中断正在执行的同优先级的中断。
中断优先级寄存器IP的格式始下:
位序号
7 6 5 4 3 2
1
0
— —
PT2 PS PT1 PX1 PT0 PX0
IP
中断优先级寄存器IP中各位功能说明如下:
PT2(IP·5):定义
定时器2的中断优先级。通过编程设置PT2=1为高优先级中
断,PT2=0为低优先级中断。
8
PS(IP·4):定义串行口中断优先级。通过编程设置PT1=1为
高优先级中断,PS=0
为低优先级中断。
PT1(IP·3):定义定时器1中断优先级。
通过编程设置PT=1为高优先级中断,
PT1=0为低优先级中断。
PX1(IP·2):
定义外中断定(INT1)的优先级。通过编程设置PX1=1为高优先
级中断,PX1=0为低优先级
中断。
PT0(IP·1):定义定时器0中断优先级。通过编程设置PT0=1为高优先级中断,<
br>PX0=0为低优先级中断。
PX0(IP·0):定义外中断0(INT0)优先级。通过编
程设置PX0=1为高优先级
中断,PX0=0为低优先级中断。
2.8.4
中断执行的过程
CPU在每个机器周期的S5P2状态采样中断标志,而在下一个机器周期对采
样到的中断进行查询。如果在前一个机器周期的S5P2有中断标志置位,则在查
询周期内便会查询到
并按优先级进行中断处理。中断系统将产生一个长调用
(LCALL)指令,控制程序转入相应的中断服
务程序。硬件生成LCALL指令被
下列条件所封锁:
1.
一个同级或高一级的中断正在处理中。
2.
当前周期(即查询周期)不是执行当前指令的最后一个周期。
3.
当前正在执行的指令是返回(RETI)指令或对IE或IP寄存器进行
读写指令。
上述三个
条件的任一个都能封锁转向中断服务程序的长调用。其中每二条是
保证把当前指令执行完,第三条是保证
在当前执行的是返回(RETI)指令或对寄
存器IE、IP进行读写的指令时,必须至少再执行完一条
指令之后才响应。
中断查询在每个机器周期中重复执行,所查询到的值为前一个机器周期的
S
5P2时采样到的中断标志。这里需注意的是:如中断标志被置位,但因上述条件
之一而未被响应,或上
述封锁条件已撤消后标志位已不再存在(已不是置位状态)
时,被拖延的中断就不再被响应。也就是说,
对中断标志置位后,未能及时响应
转入中断服务程序的状态不作记忆。每个查询周期都重新进行。
中断源 向量地址
IE0(外部中断0) 0003H
TF0(定时器0溢出中断) 000BH
IE1(外部中断1)
0013H
TF1(定时器1溢出中断) 001BH
RI+TI(串行口是中断) 0023H
IF2+EXF2(定时器2中断) 002BH
中断服务程序从向量地址处开
始执行,直到执行返回(RETI)指令时为止。
RETI指令的执行,一方面通知中断控制系统,该中
断服务程序已经执行完毕;另
9
一方面将原压入堆栈保护的断点地址(PC
值)从栈顶弹出装入程序计数器(PC),
使被中断的程序继续从断点处恢复执行。
AT89
C51系列设有二条返回指令RETI和RET。返回指令RET虽然也能使程序返
回到原被中断的地方
继续往下执行,但它不通知断控制系统,致使中断控制系统
误认为仍在继续执行中断服务程序。因此,中
断返回一定要用RETI指令,而不
能用RET代替。
助记符
算术运算类
ADD
ADD
ADD
ADD
ADDC
ADDC
ADDC
ADDC
SUBB
SUBB
SUBB
SUBB
助记符
算术运算类
INC
INC
INC
INC
DEC
DEC
DEC
DEC
INC
MUL
DIV
DA
逻辑运算类
ANL A,Rn
寄存器与Acc相与
1 12
A
Rn
Direct
A,@Ri
A
Rn
Direct
@Ri
DPTR
AB
AB
A
Acc增1
寄存器增1
直接地址内容增1
间接RAM内容增1
Acc减1
寄存器减1
直接地址内容减1
间接RMA内容减1
数据指针增1
A乘B
A被B除
累加器十进制调整
1
1
2
1
1
1
2
1
1
1
1
1
12
12
12
12
12
12
12
12
24
48
48
12
A,Rn
A,direct
A,@Ri
A,#data
A,Rn
A,direct
A,@Ri
A,#data
A,@Ri
A,#Ri
A,#data
A
加寄存器至累加器
加直接地址内容至累加器
加间接RAM内容至累加器
加立即数至累加器
带进位加寄存器至累加器
带进位加直接地址内容至累加器
带进位加间接RMA内容至累加器
带进位加立即数至累加器
带借位从Acc减寄存器
带借位从Acc减直接地址内容
带借位从Acc减间接RMA内容
带借位从Acc减立即数
说明
1
2
1
2
1
2
1
2
1
2
1
2
字节
12
12
12
12
12
12
12
12
12
12
12
12
振荡器周期
说明 字节 振荡器周期
10
ANL
ANL
ANL
ANL
ANL
ORL
ORL
ORL
ORL
ORL
ORL
XRL
XRL
XRL
XRL
XRL
XRL
CLR
CPL
RLC
RR
RRC
SWAP
数据传送类
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
A,direct
A,@Ri
A,#data
Direct,A
A,Rn
A,direct
A,@Ri
A,#data
Direct,A
Direct,#data
A,Rn
A,direct
A,@Ri
A,#data
Direct,A
Direct,#data
A
A
A
A
A
A
A,Rn
A,direct
A,@Ri
A,#data
Rn,A
Rn,direct
Rn,#data
Direct,A
Direct,Rn
Direct,direct
Direct,#Ri
Direct,#data
直接地址内容与Acc相与
间接RMA内容与Acc相与
立即数与Acc相与
Acc与直接字节相与
寄存器与Acc相或
直接地址内容与Acc相或
间接RMA 内容与Acc相或
立即数与Acc相或
立即数与直接地址内容相或
寄存器与Acc相异或
直接地址内容与Acc相异或
间接RAM内容与Acc相异或
立即数与Acc
Acc与直接地址内容相或
立即数与直接地址内容相异或
清零Acc
取反Acc
Acc向左移位
通过进位位Acc向左移位
Acc向右移位
通过进位位Acc向右移位
Acc内高低4位互换
寄存器内容传送至Acc
直接地址内容传送至Acc
间接RAM内容Acc
立即数传送至Acc
Acc内容传送至寄存器
直接地址内容传送至寄存器
立即数传送至寄存器
Acc内容传送至直接地址
寄存器内容传送至直接地址
直接地址内容传送到直接地址
间接RAM内容传送至直接地址
立即数传送至直接地址
2
1
2
2
3
1
2
1
2
2
3
1
2
1
2
3
1
1
1
1
1
1
1
1
2
1
2
1
2
2
2
2
3
2
3
12
12
12
12
24
12
12
12
12
12
24
12
12
12
12
12
24
12
12
12
12
12
12
12
12
12
12
12
24
12
12
24
24
24
24
DIRECT,#data
立即数与直接字节相与
11
MOV
MOV
MOV
MOV
MOVC
MOVC
MOVX
MOVX
MOVX
MOVX
PUSH
POP
XCH
XCH
XCH
XCHD
布尔处理类
CLR
CLR
SETB
SETB
CPL
CPL
ANL
ANL
ORL
ORL
MOV
MOV
JC
JNC
JB
@Ri,A
@Ri,direct
@Ri,#data
DPTR,#data
16
A,@A+DPTR
A,@A,+PC
A,@Ri
A,@DPTR
@Ri,A
@DPTR,A
Direct
Direct
A,Rn
A,direct
A,@Ri
A,@Ri
C
Bit
C
Bit
C
Bit
C,bit
C,bit
C,bit
C,bit
C,bit
Bit,C
Rel
Rel
Bit,rel
Acc内容传送至间接RAM
直接地址内容传送至间接RAM
立即数传送至间接RAM
用16位常数装入数据指针
1
2
2
3
12
24
12
24
24
24
24
24
24
24
24
12
12
12
12
12
12
12
12
12
12
12
24
24
24
24
12
24
24
24
24
将DPTR相对地址的代码字节传送至Acc
1
将PC相对地址的代码字节传送至Acc
将外部RAM(8位地址)的内容传送至
Acc
将外部RAM(16位地址)的内容传送至
Acc
将Acc的内容传送至外部RAM(16位地
址)
将直接地址内容压入堆栈
从堆栈弹出至直接地址
将寄存器内容与Acc互换
将直接地址内容与Acc互换
将间接RAM内容与Acc互换
将间接RAM的低半字节与互换
清零进位位
清零直接位
置位进位位
置位直接位
进位位取反
直接位取反
加直接位至进位位
直接位取反再与进位位相与
直接位与进位位相或
直接位取反再与进位位相或
将直接位传送至进位位
将进位位传送至直接位
如果进位位置位则跳转
如果进位位示置位则跳转
如果直接位置位则跳转
1
2
1
2
1
2
2
2
2
2
2
2
2
2
3
1
1
1
将Acc的内容传送至外部RAM(8位地址)
1
1
2
2
1
2
1
1
12
JNB
JBC
程序转移类
ACALL
LCALL
RET
RETI
AJMP
LJMP
SJMP
JMP
JZ
JNZ
CJNE
CJNE
CJNE
CJNE
DJNZ
DJNZ
NOP
Bit,rel
Addr 11
Adddr 16
Addr 11
Addr 16
Ret
@A+DPTR
Rel
Rel
A,direct,ret
A,#data,rel
Rn,#data,rel
@Ri,#data,rel
Rn,rel
Direct,rel
如果直接位为零则跳转
如果直接位置位则跳转且清零该位
无条件调用子程序
长调用子程序
从子程序返回
从中断返回
无条件跳转
长跳转
短跳转(相对地址)
相对于DPTR的间接跳转
如果Acc为零则跳转
如果Acc不为零则跳转
直接地址内容与Acc比较,不相等则跳
转
立即数与Acc比较,不相等则跳转
立即数与寄存器比较,不相等则跳转
立即数与间接地址内容比较,不相等则
跳转
寄存器减1,不为零则跳转
直接地址内容减1,不为零则跳转
空操作
3
3
2
3
1
1
2
3
2
1
2
2
3
3
3
3
2
3
1
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
12
6.4
键盘及LED显示器接口
键盘是一组开关的集合,是单片机系统中最党用的输入设备之一。常用的是<
br>由M行、N列组成M×N个键的键盘。发光二极管显示器(LED)是单片机系统
最常用的输出设
备之一,它由七段发光二极管组成,它既可通知来显示十进制数
字,也可以用来显示部分英文字母。本节
将介绍这二种设备与AT89C51系列单片
机的接口技术。
6.4.1
键盘接口
1.键盘接口必须解决以下问题:
(1) 检测是否有键按下。
(2)
若有键按下,要判定是哪一个键。
(3)
确定这个键所代表的数码或某种功能,转到相应的程序进行处理。
(4) 反弹跳(去抖动)问题。这
是因为按键从开始接上至接触稳定要经过数
毫秒的弹跳时间,键松开时也有同样问题,如图6.22所示
。弹跳会引起
13
一次按键被读入多次的错误。可用硬件或软件的方法反弹
跳。通常在键
数较少时可用硬件反弹跳,但如键数较多或为了节省硬件开支,可用软
件反弹跳。
软件反弹跳就是当检测出键闭合后执行一个数十毫秒的程序。
当发现键松开后也同样要延时。
(5) 不管一次按键持续的时间有多长,仅采用一个数据。
(6) 处理同时按键问题。对
于同时有一个以上的键被按下时有不同的处理方
法,最常用的是只处理一个键,即第一个被按下的或最后
一个松开的键
才产生键码。
14