文档详情

单片机教学课件第三章.ppt

发布:2018-04-10约3.18万字共133页下载文档
文本预览下载声明
第三章 80C51单片微机的指令系统 3.1 80C51指令系统概述 3.2 数据传送类指令 3.2.6 堆栈操作指令组 3.3 算术运算类指令 3.4 逻辑运算类指令 3.5 控制程序转移类指令 3.6 布尔(位)操作类指令 图3–1 立即寻址示意图 图3–2 直接寻址示意图 图3–3 寄存器寻址示意图 图3–4 寄存器间接寻址示意图 图3–5 相对寻址示意图 图3–6 变址寻址示意图 图3–7 数据传送指令示意图 图3–8 半字节交换指令示意图 图 3–9 循环移位指令示意图 图3–10 CJNE指令执行流程图 表 3–1 寻址方式与寻址空间 ⒉ 数值比较转移指令 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,# data,rel CJNE @Ri,#data,rel 其指令格式为: CJNE(操作数1),(操作数2),rel 数值比较转移指令是三字节指令,是80C51单片微机指令系统中仅有的四条三个操作数的指令,在程序设计中非常有用。同时具有比较转移和数值大小比较的功能。 数值比较指令的第一字节为操作码(或操作码+操作数1) ,第二字节为操作数2,第三字节为偏移量rel。 1 0 1 1 1 r r r #data rel 这组指令的功能是对指定的两操作数进行比较,即(操作数1)-(操作数2) ,但比较结果均不改变两个操作数的值,仅影响标志位CY。指令流程图如图3–10所示 。 ???若不等,程序转移到(PC)十3加上第三字节带符号 的8位偏移量(rel)所指向的目标地址; 若(操作数1) >(操作数2),清进位标志(CY)。 若(操作数1) <(操作数2),则置位进位标志(CY)。 值相等,程序继续执行。 程序转移的范围是从(PC)+3为起始的+127~一128B的单元地址。 比如 CJNE Rn,#data,rel指令的编码为 例:温度控制程序 某温度控制系统,A中存温度采样值Ta,(20H)=温度下限值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW,若Ta<T20,程序转升温SW,若T30≥Ta≥T20程序转FH返回主程序。 CJNE A,30H , LOOP AJMP FH ;等于T30,转FH LOOP:JNC JW ;大于T30,降温 CJNE A,20 H,LOOP1 AJMP FH ;等于T20,转FH LOOP1:JC SW ;小于T20,升温 FH:------ ;保温 JW:------ ? SW∶------ ? DJNZ Rn,rel DJNZ direct,rel ? 功能:每执行一次本指令,先将指定的Rn或direct的内容减1,再判别其内容是否为0。若不为0,转向目标地址,继续执行循环程序;若为0,则结束循环程序段,程序往下执行。 例:从P1.7引脚输出5个方波 MOV R2,#10 ;5个方波,10个状态 LOP:CPL P1.7 ;P1.7状态变反 DJNZ R2 ,LOP 3.5.3 循环转移指令 例12:数据块移动。 将2000H单元开始的一批数据传送到从3000H开始的单元中,数据长度在内部RAM的30H中。 MOV DPTR,#2000H;源数据区首址 PUSH DPL ;源数据区首址压栈保护 PUSH DPH MOV DPTR,#3000H;目的数据区首址 MOV R6,DPL ;目的数据区首址存入寄存器 MOV R7,DPH LP:POP DPH ;取数据区地址指针 POP DPL MOVX A,@DPTR ;取源数 INC DPTR PUSH DPL PUSH DPH MOV DPL,R6 ;取目的数据区地址指针 MOV DPH,R7 MOVX @DPTR,A ;存入目的数据区 INC DPTR MOV R6,DPL MOV R7,DPH
显示全部
相似文档