单片机 入门教程 汇编语言(pic单片机汇编语言讲解)
看到这篇文章的朋友,想必大家对 pic 单片机均具备一定兴趣,或对 pic 单片机具备一定使用需求前文中,小编曾对 pic 单片机汇编语言进行过部分讲解本文中,将对 pic 单片机的清零等指令加以讲解,以帮助大家更好掌握 pic 单片机编程,我来为大家讲解一下关于单片机 入门教程 汇编语言?跟着小编一起来看一看吧!
单片机 入门教程 汇编语言
看到这篇文章的朋友,想必大家对 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。
以上便是小编此次想和大家分享的内容,希望大家喜欢。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com