单片机原理及应用 第8讲 位操作指令及练习PPT教学课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/12/10
14
2 位变量修改指令来自百度文库4条)
▪ 位清0指令 : CLR C
CLR bit
位置1指令: SETB C
SETB bit 位取反指令: CPL C
CPL bit
2020/12/10
15
3.位 逻辑运算指令 (4条)
ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit
2020/12/10
1
2. 条件转移指令(8条)
条件转移指令是指在满足一定条件时进行相对转 移,否则程序继续执行本指令的下一条指令。
(1)判A内容是否为0转移指令(2条)
JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A≠0,就转移。 我们在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。 JNZ 标号 ;即转移到标号处
JB bit,rel
JNB bit,rel
JBC bit,rel
第一条指令:如果指定的(bit)=1,则转移,否
则顺序执行,第二条指令功能相反。
第三条指令是如果指定的(bit)=1,则转移,
并把该位清0,否则顺序执行。
编写程序时,可以写成:
JB bit,标号
JNB bit,标号
JBC 2020/12/10 bit,标号
18
例1:内部RAM的M1和M2单元各有一个 无符号8位二进制数,试编程比较它们的 大小,并把大数送到MAX单元
MOV A, M1
CJNE A, M2,LOOP
LOOP: JNC LOOP1
MOV A,M2
LOOP1:MOV MAX,A
2020/12/10
19
• 例2:已知外部RAM以2000H开始有一个
2020/12/10
16
4. 位控制转移指令(5条)
(1)判Cy转移指令
JC rel JNC rel
第一条指令的功能是如果Cy=1就转移,否
则就顺序执行。 第二条指令则和第一条指令相反,即如果
Cy=0就转移,否则就顺序执行。
同样也可写成: JC 标号
2020/12/10
JNC 标号
17
(2)判位直接寻址位转移指令
2020/12/10
5
编写子程序时应注意的问题
• 1、子程序的第一条指令地址为子程序的 入口地址,该指令前必须有标号。
• 2、主程序通过调用指令来调用子程序, 子程序末尾必须要有返回指令来返回主 程序。
2020/12/10
6
• 3、主程序调用子程序后,单片机可以自 动保护断点地址,但对于R0-R7,SFR以 及某些内存单元内容需要保存的话,就 需要在子程序开头写保存它们的指令 (进栈)、在末尾写恢复它们的指令 (出栈)。
控制转移指令
• 1、无条件转移指令:
• 长转移类指令:LJMP addr16
• 绝对转移类指令:AJMP addr11
短转移指令:SJMP rel
间接转移指令:JMP @A+DPTR
• 我们在编写汇编语言源程序时,可以直接写成:
LJMP 标号 ;即转移到标号处
AJMP 标号
SJMP 标号
JMP 标号
在主程序中给R2不同的值,就能实现不同时间 长度的延迟。
2020/12/10
8
3. 空操作指令(1条)
NOP
2020/12/10
9
例:从P1口的P1.0管脚输出周期为10个机器 周期的方波
CLR P1.0 LOOP: CPL P1.0
NOP NOP SJMP LOOP
2020/12/10
10
• 练习:
2020/12/10
3
(3)减1条件转移指令(2条)
DJNZ Rn,rel DJNZ direct,rel
我们在编写汇编语言源程序时,可以直接写成: DJNZ Rn,标号 DJNZ direct,标号
2020/12/10
4
3、常用子程序
• 子程序是能够完成某一专用任务的程序 段,其代码为所有的主程序共享,因此, 子程序在结构上应具有通用性和独立性。
• 1、已知某单片机监控程序始址为A080H, 问用什么办法使单片机开机后自动执行 监控程序
• 2、已知MA=0500H,问8051单片机执行 如下指令
•
MOV SP ,#70H
• MA:LCALL 8192H
• 堆栈中数据如何变化,PC中内容是什么
2020/12/10
11
• 3、已知外部RAM中以3000H为始址的数 据块以零为结束标志,试编程将之传送 到以30H为始址的内部RAM区
2020/12/10
12
位操作指令
2020/12/10
13
1.位传送指令 (2条)
MOV C,bit ;bit →C MOV bit,C ;C →bit
这组指令的功能是实现CY和其它位地址之间的 数据传递。
例:MOV C,P1.0 ;将P1.0的状态送给C。
MOV P1.0,C ;将C中的状态送到P1.0 ;引脚上去。
2020/12/10
2
(2)比较转移指令(4条)
CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 我们在编写汇编语言源程序时,可以直接写成: CJNE A,#data,标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
• 4、入口参数:将输入数据存放到子程序 指定的位置
• 出口参数:子程序将处理结果存放到指 定的位置。
2020/12/10
7
延迟子程序
• 系统设计中的显示、键盘及数据采集中经常要 用到延迟。
DELAY:MOV R3,#98
LOOP:DJNZ R3,LOOP
DJNZ R2,DELAY
RET 入口参数就是R2,根据单片机的时钟频率,只要
MOV R1,#50H
NEXT: MOVX A, @DPTR
CJNE A,#0DH,COMP
SJMP DONE
COMP:JB ACC.7 ,LOOP
MOV @R0,A
INC R0
INC DPTR
SJMP NEXT
2020/12/10
21
LOOP:MOV @R1,A INC R1 INC DPTR SJMP NEXT
数据缓冲区,该缓冲区中数据以回车符 (ASCII码为0DH)为结束标志,试编 一程序把正数送入片内RAM以30H为起 始地址的正数区,把负数送入片内RAM 以50H为起始地址的负数区。(假设输 入数据不超过32个)
2020/12/10
20
ORG 0100H
MOV DPTR, #2000H
MOV R0,#30H