单片机中指令CLR的解释(单片机中指令CLR是什么意思)

华峰博客 611

看到这篇文章的朋友,想必大家对 pic 单片机均具备一定兴趣,或对 pic 单片机具备一定使用需求。前文中,小编曾对 pic 单片机汇编语言进行过部分讲解。本文中,将对 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 位单片机的指令时应首先了解指令的助记符意义(功能),再有就是它的表达方式。初学者没有必要死记指令,重要是理解和实践。

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

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 口)为输入或输出的语句。可见,识读指令时,一应充分理解语句格式的功能,二应前后联系阅读。

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=D11

4. 寄存器 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。

以上便是小编此次想和大家分享的内容,希望大家喜欢。

上一篇:

下一篇:

  同类阅读

分享