3-5 程序转移类指令
数控车床编程指令大全
1. F功能F功能指令用于控制切削进给量.在程序中,有两种使用方法. 1每转进给量编程格式 G95 F~F后面的数字表示的是主轴每转进给量,单位为mm/r.例:G95 F0.2 表示进给量为0.2 mm/r.2每分钟进给量编程格式G94 F~F后面的数字表示的是每分钟进给量,单位为 mm/min.例:G94 F100 表示进给量为100mm/min.2. S功能S功能指令用于控制主轴转速.编程格式 S~S后面的数字表示主轴转速,单位为r/min.在具有恒线速功能的机床上,S功能指令还有如下作用.1最高转速限制编程格式 G50 S~S后面的数字表示的是最高转速:r/min.例:G50 S3000 表示最高转速限制为3000r/min.2恒线速控制编程格式 G96 S~S后面的数字表示的是恒定的线速度:m/min.例:G96 S150 表示切削点线速度控制在150 m/min.3恒线速取消编程格式 G97 S~S后面的数字表示恒线速度控制取消后的主轴转速,如S未指定,将保留G96的最终值.例:G97 S3000 表示恒线速控制取消后主轴转速3000 r/min.3. T功能T功能指令用于选择加工所用刀具.编程格式 T~T后面通常有两位数表示所选择的刀具号码.但也有T后面用四位数字,前两位是刀具号,后两位是刀具长度补偿号,又是刀尖圆弧半径补偿号.例:T0303 表示选用3号刀及3号刀具长度补偿值和刀尖圆弧半径补偿值.T0300 表示取消刀具补偿.4. M功能M00:程序暂停,可用NC启动命令CYCLE START使程序继续运行;M01:计划暂停,与M00作用相似,但M01可以用机床“任选停止按钮”选择是否有效;M03:主轴顺时针旋转;M04:主轴逆时针旋转;M05:主轴旋转停止;M08:冷却液开;M09:冷却液关;M30:程序停止,程序复位到起始位置.5. 加工坐标系设置G50编程格式 G50 X~ Z~式中X、Z的值是起刀点相对于加工原点的位置.G50使用方法与G92类似.在数控车床编程时,所有X坐标值均使用直径值,如图所示.例:按图设置加工坐标的程序段如下:G50 X128.7 Z375.1设定加工坐标系6. 快速定位指令G00G00指令命令机床以最快速度运动到下一个目标位置,运动过程中有加速和减速,该指令对运动轨迹没有要求.其指令格式:G00 XU____ ZW____;当用绝对值编程时,X、Z后面的数值是目标位置在工件坐标系的坐标.当用相对值编程时,U、W后面的数值则是现在点与目标点之间的距离与方向.如图所示的定位指令如下:G50 X200.0 Z263.0; 设定工件坐标系G00 X40.0 Z212.0;绝对值指令编程A→C或G00 U-160.0 W-51.0;相对值指令编程A→C因为X轴和Z轴的进给速率不同,因此机床执行快速运动指令时两轴的合成运动轨迹不一定是直线,因此在使用G00指令时,一定要注意避免刀具和工件及夹具发生碰撞.如果忽略这一点,就容易发生碰撞,而快速运动状态下的碰撞就更加危险7. 直线插补指令G01G01指令命令机床刀具以一定的进给速度从当前所在位置沿直线移动到指令给出的目标位置.指令格式:G01 XU____ZW____F ;其中F是切削进给率或进给速度,单位为mm/r或mm/min,取决于该指令前面程序段的设置.使用G01指令时可以采用绝对坐标编程,也可采用相对坐标编程.当采用绝对坐编程时,数控系统在接受G01指令后,刀具将移至坐标值为X、Z的点上;当采用相对坐编程时,刀具移至距当前点的距离为U、W值的点上.如图所示的直线运动指令如下:G01 X40.0 Z20. F0.2; 绝对值指令编程G01 U20.0 W-25.9 F0.2; 相对值指令编程8. 圆弧插补指令G02、G03圆弧插补指令命令刀具在指定平面内按给定的F进给速度作圆弧插补运动,用于加工圆弧轮廓.圆弧插补命令分为顺时针圆弧插补指令G02和逆时针圆弧插补指令G03两种.其指令格式如下:顺时针圆弧插补的指令格式:G02XU____ZW____I____K____F____;G02 XU____ZW___R___ F____;逆时针圆弧插补的指令格式:G03 XU____ZW____ I____K____F____;; G03 XU____ZW___R___ F____;使用圆弧插补指令,可以用绝对坐标编程,也可以用相对坐标编程.绝对坐标编程时,X、Z是圆弧终点坐标值;增量编程时,U、W是终点相对始点的距离.圆心位置的指定可以用R,也可以用I、K,R 为圆弧半径值;I、K为圆心在X轴和Z轴上相对于圆弧起点的坐标增量; F为沿圆弧切线方向的进给率或进给速度.当用半径R来指定圆心位置时,由于在同一半径R的情况下,从圆弧的起点到终点有两种圆弧的可能性,大于180°和小于180°两个圆弧.为区分起见,特规定圆心角α≤180°时,用“+R”表示;α>180°时,用“-R”.注意:R编程只适于非整圆的圆弧插补的情况,不适于整圆加工.例如,图3-13中所示的圆弧从起点到终点为顺时针方向,其走刀指令可编写如下:G02 X50.0 Z30.0 I25.0 F0.3;绝对坐标,直径编程,切削进给率0.3mm/rG02 U20.0 W-20.0 I25.0 F0.3;相对坐标,直径编程,切削进给率0.3mm/rG02 X 50. 0 Z30.0 R25.0 F0.3;绝对坐标,直径编程,切削进给率0.3mm/rG02 U20.0 W-20.0 R25.0 F0.3;相对坐标,直径编程,切削进给率0.3mm/r9. 暂停指令G04G04指令用于暂停进给,其指令格式是:G04 P____或G04 XU____暂停时间的长短可以通过地址XU或P来指定.其中P后面的数字为整数,单位是ms;XU后面的数字为带小数点的数,单位为s.有些机床,XU后面的数字表示刀具或工件空转的圈数.该指令可以使刀具作短时间的无进给光整加工,在车槽、钻镗孔时使用,也可用于拐角轨迹控制.例如,在车削环槽时,若进给结束立即退刀,其环槽外形为螺旋面,用暂停指令G04可以使工件空转几秒钟,即能将环形槽外形光整圆,例如欲空转2.5s时其程序段为: G04 X2.5或G04 U2.5或G04 P2500;G04为非模态指令,只在本程序段中才有效.10. 英制和米制输入指令G20、G21G20表示英制输入,G21表示米制输入.G20和G21是两个可以互相取代的代码.机床出厂前一般设定为G21状态,机床的各项参数均以米制单位设定,所以数控车床一般适用于米制尺寸工件加工,如果一个程序开始用G20指令,则表示程序中相关的一些数据均为英制单位为英寸;如果程序用G21指令,则表示程序中相关的一些数据均为米制单位为mm.在一个程序内,不能同时使用G20或G21指令,且必须在坐标系确定前指定.G20或G21指令断电前后一致,即停电前使用G20或G21指令,在下次后仍有效,除非重新设定.11. 进给速度量纲控制指令G98、G99在数控车削中有两种切削进给模式设置方法,即进给率每转进给模式和进给速度每分钟进给模式.1进给率,单位为mm/r,其指令为:G99;进给率转换指令G01X____Z____F____; F的单位为mm/r2进给速度,单位为mm/min,其指令为:.G98;进给速度转换指令G01X____Z____F____; F的单位为mm/minG98和G99都是模态指令,一旦指定就一直有效,直到指定另一方式为止.车削CNC系统缺省的进给模式是进给率,即每转进给模式,只有在用动力刀具铣削时才采用每分钟进给模式.12. 参考点返回指令G27、G28、G30参考点是CNC机床上的固定点,可以利用参考点返回指令将刀架移动到该点.可以设置最多四个参考点,各参考点的位置利用参数事先设置.接通电源后必须先进行第一参考点返回,否则不能进行其它操作.参考点返回有两种方法:1手动参考点返回.2自动参考点返回.该功能是用于接通电源已进行手动参考点返回后,在程序中需要返回参考点进行换刀时使用的自动参考点返回功能.自动参考点返回时需要用到如下指令:1返回参考点检查G27G27用于检验X轴与Z轴是否正确返回参考点.指令格式为:G27 XU____ ZW____XU、ZW为参考点的坐标.执行G27指令的前提是机床通电后必须手动返回一次参考点.执行该指令时,各轴按指令中给定的坐标值快速定位,且系统内部检查检验参考点的行程开关信号.如果定位结束后检测到开关信号发令正确,则参考点的指示灯亮,说明滑板正确回到了参考点位置;如果检测到的信号不正确,系统报警,说明程序中指令的参考点坐标值不对或机床定位误差过大.2参考点返回指令G28、G30G28 XU ____ ZW ____;第一参考点返回,其中XU、ZW为参考点返回时的中间点,X、Z为绝对坐标,U、W为相对坐标.参考点返回过程如图3-14所示.G30 P2 XU____ ZW____;第二参考点返回,P2可省略G30 P3 XU____ Z W____;第三参考点返回G30 P4 XU____ ZW____;第四参考点返回第二、第三和第四参考点返回中的XU、Z W的含义与G28中的相同.如图3-14所示为刀具返回参考点的过程,刀具从当前位置经过中间点190,50返回参考点,其指令为:G30 X190 Z50;G30 U100 W30;如图3-14中的虚线路径所示,如果参考点返回时不经过中间点,则刀具会与工件发碰撞,引起事故.G功能0快速1直线插补2顺圆3逆圆33螺纹32攻牙循环90外内圆柱面循环92螺纹循环94外内圆锥面循环74端面钻孔循环75外内元切槽循环71外圆初车循环72端面初车循环22局部循环开始80局部循环结束50设工件绝对坐标26XZ回参考点27x回参考点29z回参考点4延时93系统偏置98每分进给99每转进给M功能0暂停2程序结束20循环加工30程序结束关主轴和冷却3正转4反转5停主轴8.9开关冷却10.11工件松紧41.42.43主轴123档78.79尾座进退97程序转移98子程序调用99子程序返回M是主轴的指令开头,S是转速的开头,T是刀具的开头,G就是车削形式的开头.举几个例子,M03是主轴正转,M04主轴反转,M05主轴停止.G00就是快速移动,G01直线插补,G02顺时针圆弧插补,G03逆时针圆弧插补.还有很多不一一列举了太多了,买本书自己看看我感觉比FANUC简单.数控编程指令全套指令常用的2008年03月05日星期三 16:19下面是简单的代码和指令.很实用的哦M 指令和 G 代码M03 主轴正转M03 S1000 主轴以每分钟1000的速度正转M04主轴逆转M05主轴停止M10 M14 .M08 主轴切削液开M11 M15主轴切削液停M25 托盘上升M85工件计数器加一个M19主轴定位M99 循环所以程式G 代码G00快速定位G01主轴直线切削G02主轴顺时针圆壶切削G03主轴逆时针圆壶切削G04 暂停G04 X4 主轴暂停4秒G10 资料预设G28原点复归G28 U0W0 ;U轴和W轴复归G41 刀尖左侧半径补偿G42 刀尖右侧半径补偿G40 取消G97 以转速进给G98 以时间进给G73 循环G80取消循环 G10 00 数据设置模态G11 00 数据设置取消模态G17 16 XY平面选择模态G18 16 ZX平面选择模态G19 16 YZ平面选择模态G20 06 英制模态G21 06 米制模态G22 09 行程检查开关打开模态G23 09 行程检查开关关闭模态G25 08 主轴速度波动检查打开模态G26 08 主轴速度波动检查关闭模态G27 00 参考点返回检查非模态G28 00 参考点返回非模态G31 00 跳步功能非模态G40 07 刀具半径补偿取消模态G41 07 刀具半径左补偿模态G42 07 刀具半径右补偿模态G43 17 刀具半径正补偿模态G44 17 刀具半径负补偿模态G49 17 刀具长度补偿取消模态G52 00 局部坐标系设置非模态G53 00 机床坐标系设置非模态G54 14 第一工件坐标系设置模态G55 14 第二工件坐标系设置模态G59 14 第六工件坐标系设置模态G65 00 宏程序调用模态G66 12 宏程序调用模态模态G67 12 宏程序调用取消模态G73 01 高速深孔钻孔循环非模态G74 01 左旋攻螺纹循环非模态G76 01 精镗循环非模态G80 10 固定循环注销模态G81 10 钻孔循环模态G82 10 钻孔循环模态G83 10 深孔钻孔循环模态G84 10 攻螺纹循环模态G85 10 粗镗循环模态G86 10 镗孔循环模态G87 10 背镗循环模态G89 10 镗孔循环模态G90 01 绝对尺寸模态G91 01 增量尺寸模态G92 01 工件坐标原点设置模态三大数控系统G代码快速通读一、数控车床系统G代码×为本软件中不能用现象表达的指令G功能字含义 FANUC数控系统 SIEMENS数控系统华中数控系统快速进给、定位 G00 G0 G00直线插补 G01 G1 G01圆弧插补CW顺时针 G02 G2 G02圆弧插补CCW逆时针 G03 G3 G03暂停 G04 G04英制输入 G20 G70 G20 ×公制输入 G21 G71 G21回归参考点 G28 G74 G28由参考点回归 G29 G29返回固定点 G75直径编程 -- G23 G36半径编程 -- G22 G37刀具补偿取消 G40 G40 G40左半径补偿 G41 G41 G41右半径补偿 G42 G42 G42设定工件坐标系 G50 G92设置主轴最大的转速 G50 G26上限 G25下限 -- ×选择机床坐标系 G53 G53 G53选择工作坐标系1 G54 G54 G54选择工作坐标系2 G55 G55 G55选择工作坐标系3 G56 G56 G56选择工作坐标系4 G57 G57 G57选择工作坐标系5 G58 G58选择工作坐标系6 G59 G59精加工复合循环 G70 G70内外径粗切复合循环 G71 G71 端面粗切削复合循环 G72 G72 闭环车削复合循环 G73 LCYC95 G73 螺纹切削复合循环 G76 G76外园车削固定循环 G90 G80端面车削固定循环 G94 G81螺纹车削固定循环 G92 LCYC97 G82绝对编程 --- G90 G90相对编程 --- G91 G91每分钟进给速度 G98 G94 G94 ×每转进给速度 G99 G95 G95 ×恒线速度切削 G96 G96 G96 ×恒线速度控制取消 G97 G97 G97 ×二、数控铣床系统G代码×为本软件中不能用现象表达的指令G功能字含义 FANUC数控系统 SIEMENS数控系统华中数控系统快速进给、定位 G00 G0 G00直线插补 G01 G1 G01圆弧插补CW顺时针 G02 G2 G02圆弧插补CCW逆时针 G03 G3 G03暂停 G04 G04选择XY平面 G17 G17 G17选择XZ平面 G18 G18 G18 ×选择YZ平面 G19 G19 G19 ×英制输入 G20 G70 G20 ×公制输入 G21 G71 G21回归参考点 G28 G74 G28由参考点回归 G29 G29返回固定点 G75刀具补偿取消 G40 G40 G40左半径补偿 G41 G41 G41右半径补偿 G42 G42 G42刀具长度补偿+ G43 G43刀具长度补偿- G44 G44刀具长度补偿取消 G49 G49 取消缩放 G50 G50 ×比例缩放 G51 G51 ×机床坐标系选择 G53 G53 G53选择工作坐标系1 G54 G54 G54 选择工作坐标系2 G55 G55 G55 选择工作坐标系3 G56 G56 G56 选择工作坐标系4 G57 G57 G57 选择工作坐标系5 G58 G58 选择工作坐标系6 G59 G59 坐标系旋转 G68 G68 ×取消坐标系旋转 G69 G69 ×高速深孔钻削循环 G73 G73 左螺旋切削循环 G74 G74精镗孔循环 G76 G76取消固定循环 G80 G80中心钻循环 G81 G81反镗孔循环 G82 G82深孔钻削循环 G83 G83右螺旋切削循环 G84 G84镗孔循环 G85 G85镗孔循环 G86 G86反向镗孔循环 G87 G87镗孔循环 G88 G88镗孔循环 G89 G89绝对编程 G90 G90 G90相对编程 G91 G91 G91设定工件坐标系 G92 G92固定循环返回起始点 G98 G98 返回固定循环R点 G99。
控制转移指令
;行号偏移量机器码程序
1 0000 CODE SEGMENT
2 ASSUME CS:CODE
3 0000 0405 PROG_S:ADD AL, 05H
4 0002 90 NOP
5 0003 EBFB JMP SHORT PROG_S
段内间接转移指令
这类指令转向的16位有效地址存放在一个16位寄存器或字存储单元中
用寄存器间接寻址的段内转移指令,要转向的有效地址存放在寄存器中,执行的操作是寄存器的内容送到IP中
例
JMP BX
若该指令执行前BX=4500H,则指令执行时,将当前IP修改成4500H,程序转到段内偏移地址为4500H处执行
返回地址的IP入栈
由于存放CALL指令的内存首地址为CS:IP=2000:1050H,该指令占3个字节,所以返回地址为2000:1053H,即IP=1053H.于是1053H被推入堆栈
根据当前IP值和位移量DISP计算出新的IP值,作为子程序的入口地址,即:
IP=IP+DISP=1053H+1234H=2287H
中断:INT—中断、INTO—溢出中断、IRET—中断返回
1、无条件转移和过程调用指令
1)JMP无条件转移指令
指令格式:JMP目的
指令功能:使程序无条件转移到指令中指定的目的地址去执行。
这类指令又分为两种类型:
第一种类型:段内转移或近(NEAR)转移,转移指令目的地址和JMP指令在同一代码段中,转移时仅改变IP寄存器的内容,段地址CS的值不变。
JMP DWORD PTR[SI+0125H]
设指令执行前,CS=1200H,IP=05H,DS=2500H,SI=1300H,内存单元(26425H)=4500H,(26427H)=32F0H.而指令中的位移量DISP=0125H,其中高位部分为DISP_H=01H,低位部分DISP_L=25H
微机原理2007年-第三章-指令系统第五节控制转移
③ 段间直接转移 段间直接转移
指令中给出的16位的段和 位的偏移地址送到CS和IP。 指令中给出的16位的段和16位的偏移地址送到CS和IP。 位的段和16位的偏移地址送到
④ 段间间接转移 段间间接转移
MEM中给出的 位的段和 位的偏移地址送到CS和IP。 MEM中给出的16位的段和16位的偏移地址送到CS和IP。 中给出的16位的段和16位的偏移地址送到
6
例:代码段内有一条无条件转移指令
JMP SHORT NEXT 指令本身占有两个字节 操作码占一个字节; 位位移量占有一个字节 操作码占一个字节;8位位移量占有一个字节
内存
... 源程序 : 条件转移指令: 条件转移指令:JMP SHORT next qqq: ... ... next: MOV AL,03H
5
① 段内直接转移 转移的目标地址由指令直接给出。 段内转移,故转移后CS内容保持不变, 段内转移,故转移后CS内容保持不变,只改 变IP的值。 IP的值。
汇编语言中格式 JMP SHORT OPRD JMP NEAR PTR OPRD 位移量 转移范围 8位 -128~+127 128~ 16位 16位 -32768~+32767 32768~
13
JMP DWORD PTR [SI]的机器码 11111111 11101100 DS:[SI]
4000 DS +) 1212 SI 41212 41212 41213 41214 41215
00 10 00 4A
1000 4A00
IP CS
段间间接转移操作示意图
14
(2)条件转移指令 (2)条件转移指令 - JXX 条件转移指令可实现程序的条件分支。 条件转移指令根据标志位的状态来决定是 否进行分支转移。(判位转移) 格式: JXX label xx为条件名称缩写 ;xx为条件名称缩写 指令的转移范围为-128~+127字节。 指令的转移范围为-128~+127字节。
微机原理接口技术03_指令系统
3.2.1 数据的寻址方式
基址变址寻址同样适用于数组或表格处理,首地 址存放在基址寄存器中,变址寄存器访问数组中各元
素。因两个寄存器都可以修改,所以它比寄存器相对
寻址方式更灵活。需要注意的是,两个寄存器不能均 为基址寄存器,也不能均为变址寄存器。
3.2.1 数据的寻址方式
7.基址变址相对寻址 (Relative Based Indexed Addressing) 操作数的有效地址为指令中规定的1个基址寄存 器和1个变址寄存器的内容及指令中指定的位移量三 者之和。 位移量[基址寄存器][变址寄存器] 可以表示成多种形式组合。寻址寄存器要放在方括 号中。
3.2.1 数据的寻址方式
4.寄存器间接寻址(Register Indirect Addressing) 操作数的有效地址存放在基址寄存器或变址寄存 器中,而操作数则在存储器中。对16位数进行寄存器 间接寻址时可用的寄存器是基址寄存器BX、BP和变 址寄存器SI、DI。使用BP时默认的段寄存器为SS, 使用其他寄存器默认的段寄存器为DS。 操作数有效地址格式为:[间接寻址的寄存器]。 寻址寄存器放在方括号中。
CPU执行指令时,指令是按顺序存放在存储器 中的,而程序执行顺序是由CS和IP的内容来决定的。 当程序执行到某一转移或调用指令时,需脱离程序 的正常顺序执行,而把它转移到指定的指令地址, 程序转移及调用指令通过改变IP和CS内容,就可改 变程序执行顺序。
3.2.2 程序转移地址寻址方式
根据程序转移地址相对于当前程序地址的关 系,可分为段内、段外;又根据转移地址是否直 接出现在指令中,分为直接、间接,所以有四种 程序转移寻址方式:段内直接寻址、段内间接寻
第3章
指令系统
指令是计算机用以控制各个部件协调
第3章.指令系统控制程序转移类指令new下
;3字节指令
同样地,使用时,可以将rel理解成标号,即: CJNE A,#data, 标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
⑵比较(不相等)转移指令
① CJNE A,#data,rel
;先(PC)+3→PC
若(A)>#data,则(PC)+rel→PC,且0→CY; 若(A)<#data,则(PC)+rel→PC,且1→CY; 若(A)=#data,则顺序执行,且0→CY。
② rel为负数时,范围为:-128~-1 (80H~FFH)。
③相对转移指令“SJMP rel”
★正向跳转时: rel=目的地址-源地址-2
=地址差-2。
例如:
0157H
0100H:SJMP rel
设转移的地址为0157H,则: rel=0157H-0100H-2=55H。故该指令可写成:
0100H:SJMP 55H 其机器码为: 80H 55H
⑵位置1指令
SETB C SETB bit
; 1→ CY。 1字节指令 ;1→bit 。 2字节指令
2. 位修正指令
⑶位取反指令
CPL C
;(C)→C, 1字节指令
CPL bit ;(bit) → bit。 2字节指令
3. 位逻辑运算指令 ⑴位逻辑“与”指令 ANL C, bit ;(C) ∧ (bit)→C。 2字节指令 ANL C, /bit ;(C) ∧ (bit) →C。 2字节指令
; 否则顺序执行。
JNZ rel ;(PC)+2→PC。若A≠0,则转移到(PC)=(PC)+rel ;
;否则顺序执行。
指令格式及常用符号
3.2.1 寄存器寻址
操作数在寄存器中,指令中直接给出该寄 存器名称。具有较高的传送和运算速度。
寻址空间
R0~R7 A B(AB) DPTR
例:MOV A,R0
例:MOV A,R0 ;设(R0)=30H,0工作寄存器组
30H 00H
0000H
7FH
RAM
80H
30H A
FFH
SFR
结果:(A)=30H
MOV 20H,#50H
指令的第一字节表示该指令的操作码,后两个字 节表示参与操作的数据或数据存放的地址。
如:MOV 20H,#50H
编码为0111 0101B,0010 0000B,0101 0000B。 可表示为75H,20H,50H。
3.1.2 符号指令的格式
一般格式:
操作助记符 [目的操作数][,源操作数][;注释]
FFH
SFR
结果:(A)=50H
0000H
E5H
MOV A,50H
50H
ROM
FFFFH
3.2.3 寄存器间接寻址
寄存器中内容为地址,从该地址取操作数。
寻址空间
MO V MOVX
片内RAM 片外RAM
间址寄存器
R0或R1 DPTR
片内RAM
片 外 RAM ( 256 字 节 ) P2口线,页面方式
位地址单元内容取反后的值与位累加器内容与位地址单元内容与位累加器内容与anlcbitanlcbit书山有路勤为径学海无涯苦作舟专业分享敬请收藏75位逻辑或位地址单元内容取反后的值与位累加器内容或位地址单元内容与位累加器内容或orlcbitorlcbit位取反cplcplbit书山有路勤为径学海无涯苦作舟专业分享敬请收藏76判cy转移374位判跳条件转移当cy1转向pc当前值与rel之和的目标地址执行否则程序顺序执行
第3章 MCS-51单片机指令系统
(1)内部数据存储器的低128个字节单元 (00H~7FH)。例: MOV A, 40H ,表示把内 部RAM 40H单元的内容传送给A。 假设40H单元中的内容为2BH,结果是将直接地 址40H单元中的数据2BH传送到累加器A中。
第三章 MCS-51单片机指令系统
3.2.2 直接寻址
(2)特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。 对于特殊功能寄存器,在助记符指令中可以直接 用符号来代替地址。例: MOV A, P0 ,表示把 P0口(地址为80H)的内容传送给A。
3.3.1 内部数据存储器传送指令
1.立即数传送指令
MOV A,#data ;A←data MOV Rn,#data ;Rn←data,n=0~7 MOV direct,#data ;direct←data MOV @Ri,#data ;(Ri)←data,i=0,1 MOV DPTR,#data16 ;DPTR←data16 前四条指令将8位立即数传送到指定的存储单元中。 最后一条指令将16位立即数传送到数据指针 DPTR中,其中高8位送入DPH,低8位送入DPL。
(3)三字节指令 编码格式为:
例如数据传送指令MOV 20H,#3AH的编码格式为:
3.2 寻址方式
第三章 MCS-51单片机指令系统
所谓寻址,就是寻找操作数的真正地址,寻址方 式,就是指寻找操作数地址的方式。
在用汇编语言编程时,数据的存放、传送、运算 都要通过指令来完成。 编程者必须自始至终都要 十分清楚操作数的位置, 以及如何将它们传送到适 当的寄存器去参与运算。每一种计算机都具有多 种寻址方式。寻址方式的多少是反映指令系统优 劣的主要指标之一。
2. 汇编语言
汇编语言就是用助记符表示的指令,汇编语言与 机器语言一一对应。用汇编语言编写程序,每条 指令的意义一目了然,给程序的编写、阅读和修 改带来很大方便。而且用汇编语言编写的程序占 用内存少,执行速度快,尤其适用于实时应用场 合的程序设计。因此,在单片机应用系统中主要 是用汇编语言来编写程序。 汇编语言的缺点:缺乏通用性,程序不易移植, 是一种面向机器的低级语言。使用汇编语言编写 程序时,必须熟悉机器的指令系统、寻址方式、 寄存器的设置和使用方法。每种计算机系统都有 它自己的汇编语言。不同计算机的汇编语言之间 不能通用。
控制转移类指令
时,计算前应加上FF,即rel=FF90H(带符号扩展)
( 3)形成转移目标地址,
PC=PC+rel=2002+FF90H
=1F92H,向2000H前转移
解 6: (1)产生当前PC,PC=PC+2=2002H (2)形成转移目标地址,
PC=PC+rel=2002+FFFEH=2000H,
程序在原地踏步。 常写为:SJMP $; $表示0FEH
第3章 MCS-51指令系统
实训3 指令的应用 3.1 简介
3.2 寻址方式
3.3 指令系统
本章小结
习题3
⒌ 循环移位指令(4条)
① 循环左移:RL A 不影响标志位 ② 带Cy循环左移:RLC 影响Cy,P
A
③ 循环右移:RR A 不影响标志位 ④ 带Cy循环右移:RRC 影响Cy,P A
二进制数的特点:左移一位增大一倍,右移一 位减少一半。 在汇编语言程序中,通常用带CY(CY=0)循环 左移实现乘2操作,通常用带CY(CY=0)循环右移 实现除以2操作。
例3 某已知数存在R4中,试将其乘以2存在R3 中,除以2存在R2中。
编程如下:
CLR C MOV RLC MOV CLR MOV RRC A MOV R2,A A,R4 A R3,A C A,R4
3.3.5 控制转移类指令 控制转移类指令的本质是改变程序计数器PC的内容, 从而改变程序的执行方向。控制转移类指令分为:无条 件转移指令、条件转移指令及调用和返回指令。
四、控制转移类指令
长转移指令(1 条):LJMP 无条件转 移指令 绝对转移指令(1 条):AJMP 相对转移指令(1 条):SJMP 间接寻址的无条件转移指令(1 条):JMP 控制转移 类指令 累加器 A 判 0 指令(2 条):JZ、JNZ 条件转移 比较转移指令(4 条):CJNE 减 1 非零转移指令(2 条):DJNZ 长调用指令(1 条):LCALL 调用和返 回指令 绝对调用指令(1 条):ACALL 返回指令(2 条):RET、RETI 空操作指令(1 条):NOP
3.5 控制转移和位操作指令(8)
2、条件转移指令 条件转移就是程序转移是有条件的。执行条件转移指 令时,如指令中规定的条件满足,则进行程序转移,否则 程序顺序执行。条件转移有如下指令: (1)累加器判零转移指令:JZ rel和 JNZ rel指令 这两条指令都是二字节指令,是有条件的相对转移指令, 以rel为偏移量。 (2)数值比较条件转移指令 数值比较条件转移指令把两个操作数进行比较,比较 结果作为条件来控制程序转移。共有四条指令: CJNE A,#data,rel;累加器内容与立即数不等转移 CJNE A,direct,rn ,#data,rel ;寄存器内容与立即数不等转移 CJNE @Ri,#data,rel ;内部RAM前128单元内容与立 即数不等转移。
汇编语言程序中,为等待中断或程序结束,常使程 序“原地踏步” ,对此可使用SJMP指令完成:HERE: SJMP HERE 或 HERE:SJMP $指令机器码为 80FEH。在汇编语言中,以“$”代表PC的当前值。 执行指令:L00P:SJMP L00P1,如果L00P的标 号值为0100H(即SJMP这条指令的机器码存于0100H 和0101H两个单元之中),标号L00P1值为0123H,即 跳转的目标地址为0123H,则指令的第二个字节(相对 偏移量)应为:rel=0123H一0102H=21H 。 (4)基址加变址寻址转移(变址转移)指令: JMP @A+DPTR ; (PC)←(A)+(DPTR) 这是一条一字节转移指令,转移的目的地址=(A) +(DPTR)。指令以DPTR内容为基址,而以A的内容 作变址。只要把DPTR的值固定,而给A赋以不同的值, 即可实现程序的多分支转移。键盘译码程序就是本指令 的一个典型应用。 (如P113例3.30)
2、位置位、复位指令 SETB C ; (Cy)←l SETB bit ; (bit)←1 CLR C ; (Cy)←0 CLR bit ; (bit)←0 3、位运算指令 ANL C,bit ; (Cy)←(Cy)∧(bit) ANL C,/ bit ; (Cy)←(Cy)∧/( bit ) ORL C,bit ; (Cy)←(Cy)∨(bit) ORL C,/ bit ; (Cy)←(Cy)∨/( bit ) CPL C ; (Cy)←/(Cy) CPL bit ; (bit)←/(bit)(P120例3.37) 4、位控制转移指令 位控制转移指令就是以位的状态作为实现程序转移的 判断条件。
控制转移类指令
MOV A,R7
RL A ;键值2倍,AJMP指令为双字节指令
MOV DPTR,#KEYG
JMP @A+DPTR
•••
KEYG: AJMP KEY0
KEYG+2: AJMP KEY1
•••
KEYG+30: AJMP KEY15
2.条件转移指令
条件转移指令是当满足给定条件时,程序转移到 目标地址去执行;条件不满足则顺序执行下一条 指令
用在中断服务程序的末尾 RETI与RET指令区别: RETI在返回的同
时同时释放中断逻辑
CJNE @Ri,#data,rel;
(PC)←(PC)+3 若data<((Ri)),(PC)←(PC)+rel且Cy←0; 若data>((Ri)),(PC)←(PC)+rel且Cy←1; 若data=((Ri)),顺序执行且Cy←0
例: MOV A, #40H
MOV R0,#10H
DJNZ direct,rel ;
(PC)←(PC)+3,(direct)←(direct)-1 当(diect)≠0时,(PC)←(PC)+rel; 当(direct)=0时,程序顺序执行。
注:操作数的内容先减1再判零,不等于0时转移
3.子程序调用
本指令完成两项操作:①把PC当前值压入堆栈;② 把子程序入口地址送PC。
⑴长调用指令 LCALL addr16 ;
(PC)←(PC)+3
(SP)←(SP)+1,((SP))←(PC)7~0;
(SP)←(SP)+1,((SP))←(PC)15~8;Biblioteka PC15~0←addr16
51单片机汇编指令总结
51单片机汇编指令总结数据传输指令一.片内ram数据传输指令1.以累加器a为目的操作数的指令:mova,rnmova,directmova,@rimova,#data2.以寄存器rn为目的操作数的指令:movrn,amovrn,directmovrn,data3.以轻易地址为目的操作数的指令:movdirect,amovdirect,rnmovdirect1,derect2movdirect,@rimovdirect,#data4.间接地址为目的操作数的指令:mov@ri,amov@ri,directmov@ri,#data5.十六位数据传送指令:movdptr,#data16二.累加器a与片外ram数据传输指令:movxa,@rimovxa,@dptrmovx@ri,amovx@dptr,a三.换算串行:movca,@a+dptr(先pc←(pc)+1,后a←((a)+(dptr)))+movca,@a+pc(先pc←(pc)+1,后a←((a)+(pc)))四.互换指令:1.字节交换指令:xcha,rnxcha,directxcha,@ri2.半字节交换指令:xchda,@ri3.累加器半字节交换指令:swapa五.栈操作指令:1.push(入栈指令)pushdirect2.pop(出栈指令)popdirect算术运算指令:一.乘法加法指令:1.加法指令:adda,rnadda,directadda,@riadda,#data2.拎位次乘法指令:addca,rna←(a)+(rn)+cyaddca,directa←(a)+(direct)+cyaddca,@ria←(a)+((ri))+cyaddca,#dataa←(a)+(data)+cy3.带借位减法指令:subba,rna←(a)-cy-(rn)subba,directa←(a)-cy-(direct)subba,@ria←(a)-cy-((ri))subba,#dataa←(a)-cy-#data二.乘法乘法指令:1.乘法指令:mulabba←(a)×(b)高字节放到b中,低字节放到a中2.乘法指令:divaba←(a)÷(b)的商,(b)←(a)÷(b)的余数三.加1减1指令:1.提1指令:incaa←(a)+1incrnrn←(rn)+1incdirectdirect←(direct)+1inc@ri(ri)←((ri))+1incdptrdptr←(dptr)+12.减至1指令:decadecrndecdirectdec@ri四.十进制调制指令:daa调整累加器a的内容为bcd码逻辑操作方式指令:一.逻辑与、或、异或指令:1.逻辑与指令:anla,rnanla,directanla,@rianla,#data2.逻辑或这而令:orla,rnorla,directorla,@riorla,#dataorldirect,aorldirect,#data3.逻辑异或指令:xrla,rnxrla,directxrla,@rixrla,#dataxrldirect,axrldirect,#data二.清零、row指令:1.累加器a清零指令:crla2.累加器arow指令:cpla三.循环位移指令:1.累加器a循环左移指令:rla2.累加器a循环右移指令:rra3.累加器a连同进位位循环左移指令:rlca4.累加器a连同进位位循环右移指令:rrca控制转移指令:一.无条件迁移指令:1.绝对转移指令:ajmpaddr11(先pc+2,然后将addr11的高十位托付给pc,pc的高六位维持不变)2.长转移指令:ljmpaddr16(用addr16的值替代pc的值)3.相对迁移(长迁移)指令:sjmprel(带符号的偏移字节数)(pc+2,再加rel赋值给pc)4.间接转移指令:jmp@a+dptr(a)+(dptr)→(pc)二.条件转移指令:1.累加器判零迁移指令:jzrel先pc+2;后判断,a为0时转移,pc+rel赋值给pc;否则顺序继续执行jnzrel先pc+2,后判断,a不为0时转移,pc+rel赋值给pc;否则顺序执行2.比较转移指令:cjne目的操作数,源操作数,relcjnea,direct,rel先pc+3传回pc,再比较目的操作数和原操作数cjnea,#data,rel目>源时,程序转移,pc+rel传回pc且cy=0cjnern,#data,rel目=源时,程序顺序执行cjne@ri,#data,rel目djnzrn,rel先pc\\+2,rn-1,当rn为0时程序顺序继续执行,否则pc+rel传到pcdjnzdirect,rel先pc+3,direct-1,direct为0时程序顺序继续执行,否则pc+rel传到pc二.子程序调用、返回指令:1.绝对调用指令acall:acalladdr11先pc+2,sp+1将pc的低八位存入sp;sp+1,将pc的高八位取走sp。
2.3.5控制转移指令
例:某温度控制系 统,采集的温度值 (Ta)放在累加器A 中,在内部RAM54H单 元存放温度下限值 (T54),在55H单元 存放温度上限值 (T55)。若Ta>T55, 程序转向JW(降温 处理程序);若 Ta<T54,则程序转向 SW(升温处理程序); 若T55≥Ta≥T54,则 程序转向FH(返回 主程序)。
在指令中提供了子程序入口地址的低11位,这 11位地址的a7~a0在指令的第二字节中,a10~a8 则占据第一字节的高3位。 为了实现子程序调用,该指令共完成两项操作: 断点保护 断点保护是通过自动方式的堆栈操作来实现的, 即把PC值自动送堆栈保存起来,待子程序返回时再送 回该PC值。 构造目的地址 目的地址的构造是在PC当前值的基础上以指令提 供的11位地址取代PC的低11位,而PC的高5位不变。
二、条件转移指令
条件所谓条件转移就是指程序转移是有条件的。 执行条件转移指令时,如指令中规定的条件满足, 则进行程序转移,否则程序顺序执行。 1、累加器判零转移指令
JZ rel ; 若(A)=0,则PC←(PC)+2+rel
若(A)≠0,则PC←(PC) +2 JNZ rel ; 若(A)≠0,则PC←(PC)+2+rel 若(A)=0,则PC←(PC)+2 这两条指令都是二字节指令,是有条件的相对转
(2) 长调用指令
LCALL addr16
给 出。指令执行后,断点进栈保存,调用addr16地址 的子程序。因此本指令的操作内容可表出为: PC←(PC)+3 SP←(SP)+1,(SP)←(PC)7-0 SP←(SP)+1,(SP)←(PC)15-8 PC15~0←addr16 本指令是三字节指令,调用地址在指令中直接
51单片机或命令的用法
51单片机或命令的用法51单片机是一种常见的微控制器,广泛应用于各种嵌入式系统中。
以下是51单片机常用指令的用法:1、数据传输指令数据传输指令主要用于在寄存器、内存单元和输入/输出端口之间进行数据传输。
MOV:将源操作数传送到目标操作数。
MOV A, #data:将8位立即数data传送到累加器A中。
MOV R0, R2:将寄存器R2的值传送到寄存器R0中。
MOV @R0, A:将累加器A的值传送到R0所指定的存储单元中。
MOV DPTR, #data:将16位立即数data传送到数据指针DPTR寄存器中。
2、算术指令算术指令主要用于对两个操作数进行算术运算,并将结果存储在目标操作数中。
ADD:将两个操作数相加,并将结果存储在目标操作数中。
ADD A, R1:将累加器A与R1的值相加,将结果存入累加器A中。
ADD A, #data:将累加器A与8位立即数data相加,将结果存入累加器A中。
ADDC:在相加时,将进位标志位C的状态自动加到结果的最低有效位上。
ADDC A, R2:将累加器A与R2的值以及进位标志位C相加,将结果存入累加器A中。
3、控制转移指令控制转移指令主要用于实现程序的跳转和流程控制。
AJMP:无条件跳转到指定地址。
LJMP:长跳转到指定地址。
SJMP:短跳转到指定地址。
4、位操作指令位操作指令主要用于对单个位进行操作。
SETB:设置位。
CLR:清除位。
CPL:取反位。
:定时器是51单片机中的一个重要模块,它可以用来产生精确的定时/计数功能,常用于测量时间间隔或者产生定时中断。
51单片机的定时器有三种工作模式:模式0(工作方式1):当m1,m2设置成0,0时,定时器/计数器就工作在方式0,工作方式0是一种13位定时器/计数器方式,可用来测量外信号的脉冲宽度所持续的时间。
模式1(工作方式2):工作方式1为16位定时器/计数其结构和操作与工作方式0基本相同,唯一的区别是工作方式1的计数器由tl0的8位和th0的8位共同组成16位的计数器,其定时时间为:t=(2^16-t0初值)×时钟周期×12 。
C51控制转移类指令及位操作指令
采用助记符有:AJMP、LJMP、SJMP、JZ、 JNZ、CJNE、DJNZ、ACALL、LCALL、RET、 RETI、NOP等13种。
2
整理课件
条件转移指令
条件转移指令仅仅在满足指令中规定的条件(如累 加器内容是否为零,两个操作数是否相等) 时才执行无 条件转移,否则程序顺序执行。
•所调用的子程序的首地址必须与ACALL后面指令的 第一个字节在同一个2 KB区域内。
19
整理课件
例 : 设 ( SP ) = 60H , ( PC ) = 0123H , 子 程 序 SUBRTN的首地址为0456H。 执行指令为ACALL SUBRTN 执行结果为(PC)+2=0123H+2=0125H→(PC), 将(PC)=0125H压入堆栈:25H压入(SP)+1=61H, 01H压入(SP)十l=62H,此时(SP)=62H。 addr11 PC10–0 , PC=0456H
若(操作数1) >(操作数2),清进位标志(CY)。 若(操作数1) <(操作数2),则置位进位标志(CY)。 • 值相等,程序继续执行。 程序转移的范围是从(PC)+3为起始的+127~一128B 的单元地址。
6
整理课件
例:温度控制程序
某温度控制系统,A中存温度采样值Ta,(20H)=温度下限 值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW, 若Ta<T20,程序转升温SW,若T30≥Ta≥T20程序转FH返回主程 序。
;5个方波,10个状态
LOP:
CPL P1.7
;P1.7状态变反
51单片机 第三章指令系统
10
3.2.5 变址寻址方式
1.
变址寻址方式是以程序计数器PC或数据指针 DPTR作为基址寄存器,以累加器A作为变址寄 存器,它们两者内容之和为有效地址。 寻址范围:
程序存储器空间。
2.
3.
变址寻址方式的指令只有3条:
⑴ MOVC A, @A+DPTR ⑵ MOVC A, @A+PC ⑶ JMP @A+DPTR ; 查表指令 ; 查表指令 ; 散转指令
⑴ 低128个存储单元,8-bit二进制数表示地址。 ⑵ 特殊功能寄存器,用直接地址或称号表示。
2.
3.
例如,指令 MOV A, 30H
; A ← (30H)
8
3.2.3 寄存器间接寻址方式
1.
寄存器间接寻址时,指令中给出的寄存器为地 址指针。 寻址范围:
⑴ 片内和片外RAM 256单元,用R0或R1间接寻址。
34
4.
除法
整数部分
DIV AB
A
被除数
X B
除数
商
A
B
余数部分
除数为0,商的A和B内容不确定,且(OV)=1 。 标志Cy总是被清0。 例: 若(A)=FBH(251),(B)=12H (18),执行指令 DIV AB 之后,(A)=0DH, (B)=11H,(OV)=0,(Cy)=0。
35
3.3.3 逻辑运算及移位类指令
例: 若(A)=C3H,(R0)=AAH,执行指令 ANL A, R0 之后,(A)=82H。
37
逻辑或 源操作数与直接地址单元内容相或
ORL direct, A #data
源操作数与累加器A的内容相或
第三章8051单片机指令系统
返回本节
3.1.2 指令格式
• 在MCS-51指令中,一般指令主要由操作码、操作数 组成。 指令格式为:操作码 [目的操作数][,源操作数]
• 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,
数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地
返回本节
3.2.2 直接寻址
• 指令中直接给出操作数地址的寻址方式,能 进行直接寻址的存储空间有SFR寄存器和片 内RAM的128个单元。
例如:MOV A,P1; A←(P1) 把SFR中P1口的内容送A。
MOV A,30H ;A←(30H) 注意解释字段中加括号和不加括号的区别! • 30H为直接给出的内部RAM的地址。
返回本节
3.2.3 寄存器寻址
• 以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 例如:MOV A,R0;A ←(R0) CLR A ;A←0 INC DPTR;DPTR←DPTR+1 ADD A,R5;A←(A)+(R5)
返回本节
3.2.4 寄存器间接寻址
direct所指出的片内存储单元中 。
4.以间接地址为目的操作数
MOV @Ri,A ;(Ri) ← A MOV @Ri,direct ;(Ri) ←(direct) MOV @Ri,#data ;(Ri) ← #data 例如:设(30H)=6FH,R1=40H,
MOV @R1,30H, 结果30H单元中数据取出送入R1间接寻址的 40H单元,(40H)=6FH。
A←(A+PC) 这种寻址方式多用于查表操作。
程序存储器
MCS—51系列单片机习题
第2章 MCS—51系列单片机的硬件结构2.1 综述MCS—51系列单片机的大致功能。
2.2 请结合MCS—51系列单片机的结构框图,阐明其大致组成。
2.3 学了第1章,你认为微型计算机的结构应包含有哪些部件?学了第2章,你认为单片机至少包含有哪些部件?2.4 综述MCS—51系列单片机各引脚的作用,并试行分类。
2.5 什么是ALU?简述MCS—51系列单片机ALU的功能与特点。
2.6 程序计数器的符号是什么?MCS—51系列单片机的程序计数器有几位?它的位置在哪里?2.7 何谓程序状态字?它的符号是什么?它的位置在哪里?它各位的含义是什么?为1、为0各代表什么?各在何种场合有用?2.8 请多看些参考书(微机、单片机方面的教材),在这基础上阐述我们“研究CPU 时序的意义”。
2.9 何谓时钟周期、机器周期、指令周期?针对MCS—51系列单片机,如采用12MHz晶振,它们的频率和周期各是什么值?2.10 我们通常说:“CPU执行一条指令的时间称为指令周期”。
请结合CPU时序判断:指令周期是否包含取指时间在内?再联系主教材图1-14,阐明指令取得后,是送那里以有条不紊地实现指令操作码所规定的功能的?另外,单片机内部协调工作的最小时间单元是不是指令周期?2.11 试说明MCS—51系列单片机自振荡源开始是怎样逐级分频而得到周期为1us 的内部时钟脉冲的。
2.12 “一般说,PC指的是现指令的地址;严格说,PC指的是下一条指令的地址。
”请结合时序解释上述说法。
2.13 综述MCS—51系列单片机其内存可由哪几部分组成?其编址与访问的规律是怎样的?2.14 EA 引脚的作用是什么?在下列四种情况下,EA引脚各应接何种电平?(1)只有片内ROM(2)只有片外ROM(3)有片内ROM和片外ROM(4)有片内ROM和片外ROM,片外ROM所存为调试程度。
2.15 MCS—51系列单片机片内RAM有多少单元?有哪些用途?这些用途各占用哪些单元?又,堆栈的栈区设在哪里?2.16 绘图示出MCS—51系列单片机的各可寻址位,并统计共有多少个可寻址位。
单片机原理及应用教学教案课件下载
INC direct
;(direct)+1→(direct)
INC @Ri
;(Rn)+1→(Rn)
INC DPTR
;DPTR+1→DPTR
功能很简单,就是将后面目标中的值加1。
例:A=12H,R0=33H,(21H)=32H, (34H)=22H,DPTR=1234H。
连续执行下面的指令:
INC A ; A=13H
寻址方式
1 寄存器寻址 2 直接寻址 3 立即寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址 7 位寻的内容为操作数的寻址方式。
通用寄存器为A、B 、DPTR以及R0~R7 。
例:
CLR INC ADD
A DPTR R5,# 20H
;A←0 ;DPTR←DPTR+1 ;R5←#20H+R5
说明: 1.在8051中,与外部RAM存储器打交道的只可以是累加器A 。所
有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。
在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。
比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。
MOV @R1,20H MOV @R0,#34H
5 十六位数的传递指令(1条)
MOV DPTR,#data16
8051是8位机,这是唯一的一条16位立即数传递指令。
功能:将一个16位的立即数送入DPTR中去。其中高8位
送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 长调用指令
指令格式
Hale Waihona Puke LCALLaddr16
(PC) (PC)+3 (SP) (SP)+1 ((SP)) (PC0~7 ) ; (SP) (SP)+1 ((SP)) (PC8~15 ) (PC) addr0~15
2. 绝对调用指令
指令格式:
(PC) (PC) 2 (SP) (SP) 1 ((SP)) (PC 0~7 ) addr11 ; (SP) (SP) 1 ((SP)) (PC ) 8~15 (PC0~10 ) addr0~10 (PC11~15 )不变
ACALL
5. 空操作指令
指令格式:
NOP
;(PC)←(PC)+1
(P C)
(P C)+2 Y (P C) (P C)+rel
A=0? N
A≠0? N
(a) JZ rel
(b) JNZ rel
累加器A判零转移指令的执行过程
2.
比较转移指令
指令格式: CJNE <目的操作数>, <源操作数>, rel
(P C) (P C)+3
CJNE A, direct, rel
3-5 程序转移类指令
一
无条件转移指令
1. 长转移指令 指令格式: LJMP addr16
例1 执行下述程序段: M: LJMP DL1 DL1: …
;(PC)←addr0~15
2. 绝对转移指令 指令格式:
AJMP
addr11
(PC) (PC) 2 ; (PC0~10 ) addr0~10 (PC )不变 11~15
3. 相对短转移指令 指令格式:
SJMP rel (PC) (PC) 2 ; (PC) (PC) rel
4. 间接转移指令 JMP @A+DPTR
;(PC)←(A)+(DPTR)
-128
P C+2
AJMP 2K
LJMP
64K
LJMP
P C JMP @A+DP TR P C+2 +127 DP TR 256
3. 返回指令
指令格式:
RET
(PC8~15 ) ((SP)) (SP) (SP) 1 ; (PC0~7 ) ((SP)) (SP) (SP) 1
4. 中断返回指令
指令格式:
RETI
该指令用于中断返回。执行过程类似于RET。 RET与RETI指令应分别放在子程序和中断服务程序的最后。
无条件转移指令跳转范围比较
二 有条件控制转移指令
1. 累加器A判零转移指令
JZ JNZ rel rel ;累加器为0转移,否则继续执行 ;累加器不为0转移,否则继续执行
例1 将内部RAM单元中起始地址为20H的数据传送到P1口,当 RAM单元中内容为0时,不传送,接着传送下一单元内容。
(P C) (P C)+2 Y (P C) (P C)+rel
(源字节) (目的字节)
CJNE A, #data, rel
比较
CJNE Rn, #data, rel
二者相等? N
CJNE @Ri, #data, rel
Y
(P C) (P C)+rel 源 < 目 , (C) 0 源 > 目 , (C) 1
CJNE 指令的执行过程
3.
循环减1判0 转移指令
循环程序段
(PC)
(PC)+2 或 3 (PC) N (PC)+rel
(字节)=0? Y
DJNZ指令的操作过程示意
三
子程序调用及返回
为简化程序设计,经常把功能完全相同或反复使用的程序段 单独编写成子程序,供主程序调用。主程序需要时通过调用指令, 无条件转移到子程序处执行,子程序结束时执行返回指令,再返 回到主程序继续执行。
指令格式: DJNZ Rn , rel DJNZ direct, rel
例2 在程序中,可以利用DJNZ指 令实现软件延时。当晶振频率一 定时,则延时的大小可根据程序 的需要从几个微秒到几百微秒, 甚至毫秒、秒等不同要求来设定。 下面是一段当系统晶振频率为 12MHz时,在P1.0口输出周期为1 毫秒脉冲的延时程序。 K2: MOV R1,#2 MOV R2, #250 K1: DJNZ R2, K1 DJNZ R1, K1 CPL P1.0 SJMP K2