ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:73.50KB ,
资源ID:8756274      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8756274.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C51的指令系统.doc)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C51的指令系统.doc

1、 数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。     [1]. 以累加器A为目的操作数类指令(4条)     这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即数、寄存器和寄存器间接寻址方式:         MOV  A,data     ;(data)→(A) 直接单元地址中的内容送到累加器A         MOV

2、  A,#data    ;#data→(A) 立即数送到累加器A中         MOV  A,Rn      ;(Rn)→(A) Rn中的内容送到累加器A中         MOV  A,@Ri     ;((Ri))→(A) Ri内容指向的地址单元中的内容送到累加器A     [2]. 以寄存器Rn为目的操作数的指令(3条)     这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式:         MOV  Rn,data     ;(data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中         MOV

3、  Rn,#data    ;#data→(Rn) 立即数直接送到寄存器Rn中         MOV  Rn,A        ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中     [3]. 以直接地址为目的操作数的指令(5条)     这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式:         MOV  data,data   ;(data)→(data) 直接地址单元中的内容送到直接地址单元         MOV  data,#data ;#data→(data) 立即数送到直

4、接地址单元         MOV  data,A     ;(A)→(data) 累加器A中的内容送到直接地址单元         MOV  data,Rn    ;(Rn)→(data) 寄存器Rn中的内容送到直接地址单元         MOV  data,@Ri   ;((Ri))→(data) 寄存器Ri中的内容指定的地址单元中数据送到直接地址单元     [4]. 以间接地址为目的操作数的指令(3条)     这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有直接、立即和寄存器3种寻址方式:         MOV  @Ri,data

5、    ;(data)→((Ri)) 直接地址单元中的内容送到以Ri中的内容为地址的RAM单元         MOV  @Ri,#data   ;#data→((Ri)) 立即数送到以Ri中的内容为地址的RAM单元         MOV  @Ri,A       ;(A)→((Ri)) 累加器A中的内容送到以Ri中的内容为地址的RAM单元     [5]. 查表指令(2条)     这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:         MOVC  A,@A+DPTR   ;((A))+(DPTR)→(A) 表格地址单元中的内容送到

6、累加器A中         MOVC  A,@A+PC     ;((PC))+1→(A),((A))+(PC)→(A) 表格地址单元中的内容送到累加器A中     [6]. 累加器A与片外数据存储器RAM传送指令(4条)     这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器寻址方式:         MOVX  @DPTR,A    ;(A)→((DPTR)) 累加器中的内容送到数据指针指向片外RAM地址中         MOVX  A, @DPTR   ;((DPTR))→(A) 数据指针指向片外RAM地址中的内容送到累加器A中         MO

7、VX  A, @Ri     ;((Ri))→(A) 寄存器Ri指向片外RAM地址中的内容送到累加器A中         MOVX  @Ri,A      ;(A)→((Ri)) 累加器中的内容送到寄存器Ri指向片外RAM地址中     [7]. 堆栈操作类指令(2条)     这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于S

8、P+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。         PUSH  data   ;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中         POP  data    ;(SP)→(data)(SP)-1→(SP), 堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作     [8]. 交换指令(5条)     这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。         XCH  A,Rn    ;(A)←→(Rn)累加器与工作寄存

9、器Rn中的内容互换         XCH  A,@Ri   ;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换         XCH  A,data  ;(A)←→(data)累加器与直接地址单元中的内容互换         XCHD  A,@Ri  ;(A3-0)←→((Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换         SWAP  A      ;(A3-0)←→(A7-4)累加器中的内容高低半字节互换     [9]. 16位数据传送指令(1条)     这条指令的功能是把16位常数送入数据指针寄存器。

10、        MOV  DPTR,#data16  ;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL 算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。这在使用中应特别注意

11、     [1]. 加法指令(4条)     这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。         ADD  A,#data   ;(A)+#data→(A) 累加器A中的内容与立即数#data相加,结果存在A中         ADD  A,data    ;(A)+(data)→(A) 累加器A中的内容与直接地址单元中的内容相加,结果存在A中         ADD  A,Rn     ;(A)+(Rn)→(A) 累加器A中的内容与工作寄存器Rn中的内容相加,结果存在A中         ADD  A,

12、@Ri    ;(A)+((Ri))→(A) 累加器A中的内容与工作寄存器Ri所指向地址单元中的内容相加,结果存在A中     [2]. 带进位加法指令(4条)     这4条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。         ADDC  A,data    ;(A)+(data)+(C)→(A) 累加器A中的内容与直接地址单元的内容连同进位位相加,结果存在A中         ADDC  A,#data   ;(A)+#data +(C)→(A) 累加器A中的内容与立即数连同进位位相加,结果存在A中         ADDC  A,Rn      

13、A)+Rn+(C)→(A) 累加器A中的内容与工作寄存器Rn中的内容、连同进位位相加,结果存在A中         ADDC  A,@Ri     ;(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存器Ri指向地址单元中的内容、连同进位位相加,结果存在A中     [3]. 带借位减法指令(4条)     这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。     这里我们对借位位C的状态作出说明,在进行减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数

14、或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。         SUBB  A,data      ;(A)-(data) - (C)→(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中         SUBB  A,#data     ;(A)-#data -(C)→(A) 累加器A中的内容与立即数、连同借位位相减,结果存在A中         SUBB  A,Rn       ;(A)-(Rn) -(C)→(A) 累加器A中的内容与工作寄存器中的内容、连同借位位相减,结果存

15、在A中         SUBB  A,@Ri      ;(A)-((Ri)) -(C)→(A) 累加器A中的内容与工作寄存器Ri指向的地址单元中的内容、连同借位位相减,结果存在A中     [4]. 乘法指令(1条)     这个指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。         MUL  AB       ;(A)×(B)→(A)和(B) 累加器A中的内容与寄存器B中的内容相乘,结果存在A、B中  

16、   [5].  除法指令(1条)     这个指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,表明寄存器B中的内容为00H,那么执行结果为不确定值,表示除法有溢出。         DIV  AB       ;(A)÷(B)→(A)和(B) 累加器A中的内容除以寄存器B中的内容,所得到的商存在累加器A,而余数存在寄存器B中。     [6]. 加1指令(5条)     这5条指令的的功能均为原寄存器的内容加1,结果送回原寄存器。上述提到,加1指令不会对

17、任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式:         INC  A          ;(A)+1→(A) 累加器A中的内容加1,结果存在A中         INC  data       ;(data)+1→(data) 直接地址单元中的内容加1,结果送回原地址单元中         INC  @Ri       ;((Ri))+1→((Ri)) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中         INC  Rn         ;(Rn)+1→(Rn)寄存器Rn的

18、内容加1,结果送回原地址单元中         INC  DPTR      ;(DPTR)+1→(DPTR)数据指针的内容加1,结果送回数据指针中         在INC  data这条指令中,如果直接地址是I/O,其功能是先读入I/O锁存器的内容,然后在CPU进行加1操作,再输出到I/O上,这就是“读—修改—写”操作。     [7].  减1指令(4条)     这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,若原寄存器的内容为00H,减1后即为FFH,运算结果不影响任何标志位,这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是I/O口锁存器时,“读

19、—修改—写”操作与加1指令类似。         DEC  A         ;(A)-1→(A)累加器A中的内容减1,结果送回累加器A中         DEC  data      ;(data)-1→(data)直接地址单元中的内容减1,结果送回直接地址单元中         DEC  @Ri      ;((Ri))-1→((Ri))寄存器Ri指向的地址单元中的内容减1,结果送回原地址单元中         DEC  Rn      ;(Rn)-1→(Rn)寄存器Rn中的内容减1,结果送回寄存器Rn中     [8]. 十进制调整指令(1条)     在进行B

20、CD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。         DA  A 逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。     [1]. 循环移位指令(4条)     这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。         RL  A     ;累加器A中的内容左移一位         RR  A     ;累加器A中的内容右移一位

21、         RLC  A    ;累加器A中的内容连同进位位CY左移一位         RRC  A    ;累加器A中的内容连同进位位CY右移一位     [2]. 累加器半字节交换指令(1条)     这条指令是将累加器中的内容高低半字节互换,这在上一节中内容已有介绍。         SWAP  A  ; 累加器中的内容高低半字节互换     [3]. 求反指令(1条)     这条指令将累加器中的内容按位取反。         CPL  A    ; 累加器中的内容按位取反     [4]. 清零指令(1条)     这条指令将累加器中的

22、内容清0。         CLR  A    ; 0→(A),累加器中的内容清0     [5].  逻辑与操作指令(6条)     这组指令的作用是将两个单元中的内容执行逻辑与操作。如果直接地址是I/O地址,则为“读—修改—写”操作。         ANL  A,data    ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。         ANL  data,#data  ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。         ANL  A,#data   ;累加器A的内容和立即数执行与逻辑操作。结果

23、存在累加器A中。         ANL  A,Rn      ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。         ANL  data,A    ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。         ANL  A,@Ri    ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中。     [6].  逻辑或操作指令(6条)     这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。         ORL

24、 A,data    ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。         ORL  data,#data  ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。         ORL  A,#data   ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。         ORL  A,Rn      ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。         ORL  data,A    ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。        

25、 ORL  A,@Ri    ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中。     [7].  逻辑异或操作指令(6条)     这组指令的作用是将两个单元中的内容执行逻辑异或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。         XRL  A,data    ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。         XRL  data,#data  ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。         XRL  A,#data   ;累

26、加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。         XRL  A,Rn      ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。         XRL  data,A    ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。         XRL  A,@Ri    ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中。 控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元

27、进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。     [1]. 无条件转移指令(4条)     这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。         LJMP  addr16     ;addr16→(PC),给程序计数器赋予新值(16位地址)         AJMP  addr11     ;(PC)+2→(PC),a

28、ddr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变         SJMP  rel         ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值         JMP  @A+DPTR   ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值     [2]. 条件转移指令(8条)     程序可利用这组丰富的指令根据当前的条件进行判断,看是否满足某种特定的条件,从而控制程序的转向。         JZ  rel           

29、    ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行         JNZ  rel              ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行         CJNE  A, data, rel     ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行         CJNE  A, #data, rel    ; A≠#

30、data,(PC)+ 3 + rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行         CJNE  Rn, #data, rel  ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行         CJNE  @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行         DJNZ  Rn, rel ;

31、Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)工作寄存器Rn减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行         DJNZ  data, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)直接地址单元中的内容减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行     [3]. 子程序调用指令(1条)     子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需

32、要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。         LCALL  addr16 ; 长调用指令,可在64kB空间调用子程序。此时(PC)+ 3→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC15-8)→(SP),addr16→(PC),即分别从堆栈中弹出调用子程序时压入的返回地址         ACALL  addr11 ; 绝对调用指令,可在2kB空间调用子程序,此时(PC)+ 2→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC

33、15-8)→(SP),addr11→(PC10-0)         RET  ; 子程序返回指令。此时(SP)→(PC15-8),(SP)- 1→(SP),(SP)→(PC7-0),(SP)- 1→(SP)         RETI  ; 中断返回指令,除具有RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替     [4]. 空操作指令(1条)     这条指令将累加器中的内容清0。         NOP     ; 这条指令除了使PC加1,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时 布尔处理功能是MCS-5

34、1系列单片机的一个重要特征,这是出于实际应用需要而设置的。布尔变量也即开关变量,它是以位(bit)为单位进行操作的。     在物理结构上,MCS-51单片机有一个布尔处理机,它以进位标志做为累加位,以内部RAM可寻址的128个为存储位。     既然有布尔处理机功能,所以也就有相应的布尔操作指令集,下面我们分别谈论。     [1]. 位传送指令(2条)     位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。         MOV  C,bit        ;bit→CY,某位数据送CY         MOV  bit,C        ;C

35、Y→bit,CY数据送某位     [2]. 位置位复位指令(4条)     这些指令对CY及可寻址位进行置位或复位操作,共有四条指令。         CLR  C           ; 0→CY,清CY         CLR  bit          ; 0→bit,清某一位         SETB  C          ; 1→CY,置位CY         SETB  bit         ; 1→bit,置位某一位     [3]. 位运算指令(6条)     位运算都是逻辑运算,有与、或、非三种指令,共六条。        

36、 ANL  C,bit        ;(CY)∧(bit)→CY         ANL  C,/bit        ;(CY)∧()→CY         ORL  C,bit        ;(CY)∨(bit)→CY         ORL  C,/bit        ;(CY)∧()→CY         CPL  C           ;()→CY         CPL  bit          ;()→bir     [4]. 位控制转移指令(5)     位控制转移指令是以位的状态作为实现程序转移的判断条件,介绍如下:   

37、      JC  rel            ; (CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。         JNC  rel          ; (CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。         JB  bit, rel        ; 位状态为1转移。         JNB  bit, rel       ; 位状态为0转移。         JBC  bit, rel       ; 位状态为1转移,并使该位清“0”。     后三条指令都是三字节指令,如

38、果条件满足,(PC)+3+rel→PC,否则程序往下执行,(PC)+3→PC。 [ 完 ] 几个实例 并行I/O口编程范例 深圳市凌雁电子有限公司     单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路,我们从常用的LED显示原理开始,详尽讲解利用单片机驱动LED数码管的电路及编程原理,目的在于通过这一编程范例,让初学者了解I/O口的编程原理,意在起举一反三,抛砖引玉的作用。     LED的发光原理,稍有电子技术基础的人士都很清楚,我们不想作过多的介绍,7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,

39、分别引出它们的电极,点亮相应的点划来显示出0-9的数字。     LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。     将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将"b"和"c"段接上正电源,其它端接地或悬空

40、那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同,读者自行分析即可。     左图为实验电路图,我们使用80C51单片机,电容C1、C2和CRY1组成时钟振荡电路,这部分基本无需调试,只要元件可靠即会正常起振。C3和R1为单片机的复位电路,80C51的并行口P1.0-P1.7直接与LED数码管的"a-f"引脚相连,中间接上限流电阻R3-R10。值得一提的是,80C51并行口的输出驱动电流并非很大,为使LED有足够的亮度,LED数码管应选用高亮度的器

41、件。     此外,图中的80C51还可选用C51系列的其它单片机,只要它们的指令系统兼容C51即可正常运行,程序可直接移植,例如选用低价Flash型的AT89C1051或2051(详细技术手册)等,它们的ROM可反复擦写,非常适合作实验用途。     · 程序清单:     01  START: ORG     0100H      ;程序起始地址     02   MAIN: MOV    R0,#00H     ;从“0”开始显示     03         MOV    DPTR,#TABLE ;表格地址送数据指针     04   DISP: MOV    A

42、R0        ;送显示     05         MOVC   A,@A+ADPTR  ;指向表格地址     06         MOV    P1,A        ;数据送LED     07         ACALL  DELAY       ;延时     08         INC    R0          ;指向下一个字符     09         CJNE   R0,#0AH,DISP ;未显示完,继续     10         AJMP   MAIN        ;下一个循环     11  DELAY: MOV    R1,#0

43、FFH    ;延时子程序,延时时间赋值     12  LOOP0: MOV    R2,#0FFH     13  LOOP1: DJNZ   R2,LOOP1     14         DJNZ   R1,LOOP0     15         RET                ;子程序返回     16  TABLE: DB     0C0H        ;字型码表     17         DB     0F9H     18         DB     0A4H     19         DB     0B0H     20         DB     99H     21         DB     92H     22         DB     82H     23         DB     0F8H     24         DB     80H     25         DB     90H     26         END                ;程序结束

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服