你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

pic单片机的清零等指令详解

[复制链接]
gaosmile 发布时间:2020-4-2 17:02

本文中,将对pic单片机的清零等指令加以讲解,以帮助大家更好掌握pic单片机编程。


        一、清零指令


        1.寄存器清零指令


        实例:CLRW;寄存器W被清零


        说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。


        2.看门狗定时器清零指令。


        实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)说明:WDT是英语Watchdog Timer的缩写字母。CLR见上述说明。注意该两条指令无操作数。


       


        3.寄存器f清零指令。指令格式:CLRF f


        实例:CLRF TMRO;对TMRO清零


        说明:在PIC系列8位单片机中,常用符号F(或f)代表片内的各种寄程器和F的序号地址。F取值按PIC系列不同型号而不同,一般为Ox00~Ox1F/7F/FF。TMRO代表定时器/计数器TMRO,所以CLRF对寄程器清零,采用了直接寻址方式直接给出要访问的寄存器TMRO。


        4.位清零指令。指令格式 BCF f,b


        实例:BCF REG1,2;把寄存器REG1的D2位清零


        说明:BCF是英语Bit Clear F的缩写。指令格式中的F,同上说明;符号b是表示PIC片内某个8位数据寄存器F的位号(或位地址),所以b的取值为0~7或D0~D7。实例中REG是Register的缩写。实例中的2代表指令格式中的b=2即寄存器REG1的D2位。


        通过上述四条清零指令格式和实例,可以说明,学习PIC系列8位单片机的指令时应首先了解指令的助记符意义(功能),再有就是它的表达方式。初学者没有必要死记指令,重要是理解和实践。


        PIC单片机的清零指令详解


        二、面向字节、常数与控制操作的指令


        1.传送立即数至工作寄存器W指令


        指令格式:MOVLW k;k表示常数、立即数和标号说明:MOVLW是Move Literal to w的缩写


        实例:MOVL 0x1E;常数30送W


        2.I/O口控制寄存器TRIS设置指令


        指令格式;TRIS f


        说明;TRIS f是Load TRIS Register的缩写。其功能是把工作寄存器W的内容送入I/O口控制寄存器f。当W=0时,置对应I/O口为输出;W=1,置I/O口为输入。


        实例:MOVLW 0x00 ;把00H送入W


        TRIS RA ;置PIC RA口为输出


        MOVLW 0xFF ;把FFH送入W


        TRIS RB ;置PIC RB口为输入


        说明:这是PIC汇编语言中常用的几条指令,即设置某个I/O口(这里是RA口和RB口)为输入或输出的语句。可见,识读指令时,一应充分理解语句格式的功能,二应前后联系阅读。


        PIC单片机的清零指令详解


        3.W寄存器内容送寄存器f(W内容保持不变)指令指令格式:MOVWF f


        说明:MOVWF是Move W to f的缩写


        实例:MOVLW 0x0B;送0BH送W


        MOVWF 6 ;送W内容到RB口


        说明:第一条指令0x0B(常数11)送工作寄存器W,第二条指令,把W内容常数11送到寄存器F6中,查表F6即为RB口,所以PORT_B(B口)=0BH=D114.寄存器f传送指令


        指令格式:MOVF f,d


        说明:MOVF是Move f的缩写。F代表PIC中的某个寄存器。指令中的d规定:d=0时,f内容送W;d=1时,f内容送寄存器。


        实例:MOVF 6,0 ;RB口内容送W


        MOVWF 8  ;RB口内容送f8


        说明:第一条指令中的6代表寄存器f=6,查寄存器表f=6为RB口;0代表d=0,代表选择的目标为寄存器W。第二条指令中的8代表寄存器f=8。所以两条指令结果是把RB口的内容送f8。至于f8内容是多少?还应在汇编语言开始时附加指令,这里从略。


        5.空操作指令


        指令格式:NOP


        说明:NOP是英语No OperaTIon的缩写。NOP无操作数,所以称为空操作。执行NOP指令只使程序计数器PC加1,所以占用一个机器周期。


        实例:MOVLW 0xOF;送OFH到W


        MOVWF PORT_B ;W内容写入B口


        NOP      ;空操作


        MOVF PORT_B,W ;读操作


        说明:该三条指令是一种对I/O口的B口连续操作的实例,其目的达到写入B口的内容要读出时,应保证写、读之间有个稳定时间,因此加入了空操作指令NOP。


        6.无条件跳转指令


        指令格式:GOTO k


        说明:执行该条指令时,将指令转移到指定的地址(跳转)。指令中的k,常与程序中的标号联系起来。


        实例:见第9条指令中


        7.寄存器内容减1,结果为零的间跳指令


        指令格式:DECFSZ f,d


        说明:DECFSZ是英语Decrement f,Skip of not 0的缩写。符号f,d代表的意义,前述已作说明。该条指令是指寄存器的内容减1存入W(d=0)或f(d=1)中。若指令执行结果减1不为零,指令顺序执行;为零时,就间跳下一条指令后再执行(等效顺序执行一条空指令NOP),实际指令中,当d=1时,该项常被略去。


        8.寄存器内容加1,结果为零间跳指令


        指令格式:INCFSZ f,d


        说明:INCFSZ是英语Increment f,Skip of 0的缩写。该条指令与上一条(7)指令差别仅在于“1”上,即执行这条指令时,寄存器f内容加1,若结果不为零,则指令顺序执行;为零则指令间跳执行。执行这条指令的其它逻辑关系与上条相同。


        9.子程序返回指令


        指令格式:RETLW k


        说明:RETLW是Return Literal to W的缩写。该指令代表子程序返回,返回前先把8位立即数送W。

收藏 评论0 发布时间:2020-4-2 17:02

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版