PIC的35条指令扭曲理解法

发布者:DreamBig123最新更新时间:2019-11-15 来源: 51hei关键字:PIC  35条指令  扭曲理解法 手机看文章 扫描二维码
随时随地手机看文章

以下理解纯属恶搞,例子使用搜狗输入法输入,全角还是半角的懒得理了!


第一条当然是NOP,
NOP 垃圾指令
操作数:垃圾当然不用说最好是没有的就好!
指令编码:00 0000 0xx0 0000   这个全是0啦,还要xx
执行时间:清理垃圾也要一个指令的
执行过程:扫垃圾,除了清理外其他什么都没变
状态标志:垃圾当然无视
说明:这个垃圾除了用来浪费时间外什么也实现不了,一般用来延时
指令例子:   

BSF         PORTB,0      ;   PORTB  端口0输出高电平
NOP                      ;丢个垃圾浪费下时间让IO输出稳定

第二条应该是MOVWF

MOVWF  拆开 解释一下先,
MOV就是寄存器缩写的意思,
W就是一个叫W的SB老爸给它起的名字,
F==??发(fa的缩写?),发送或者传送的意思,
整个串起来就是把W寄存器里面的数传到数据寄存器

语法形式:MOVWF     f
操作数:f是数据寄存器的低7位地址(0x00-0x7f)
指令编码:00 0000 1fff ffff  (要反反复复)

执行时间:一个指令周期

执行过程:把W那个SB的数传送到数据寄存器 里面,W那个SB是不会变的
状态标志影响:无
说明:一般是给数据寄存器赋值(给别人做嫁妆啦)
指令例子:     

MOVLW    0x55    ;W那个SB在吃饭 
MOVWF    Data    ;W那个SB给人家添饭

             ;Data = 0x55  

第三条   MOVF   寄存器发送
把数据寄存器的数传到目的寄存器
语法形式:MOVF    f,d
操作数:        f是数据寄存器的低7位地址(0x00-0x7f)
            d=w,这d真虚伪,把W添的饭又退回去了!
         d=f,这d真坏,把饭又拿回来,还看看碗里的饭是不是没了!
指令编码:    00 1000 dfff ffff (是人都讨厌的d竟然还要定了得反反复复)
执行时间:    一个指令周期  (还好只用了一个,要不然跑不了非得被人家敲死)
执行过程;     [f] -d  (连数据寄存器都要给d给恶搞了)
状态标志影响:  Z      (搞成这样子要是Z还没被影响的绝对是个SB)
说明:    这个指令通过W寄存器把数据寄存器的数传到别的地方,或者对数据寄存器判0操作,如果发现是0就会把标志Z置位。(这家伙够坏的吧,先把W那个SB当跳板把数据寄存器的饭搞到别的地方去,还要看看碗里是否有饭,没饭的话就大呼小叫的!)
指令例子:   

例1    ;数据传送
MOVF    Var1,w    ;Var1把饭添给W那个SB
MOVWF   Var2      ;W那个SB只能当传饭的传送给Var2
              ;Var2 = Var1 (不用说这碗饭是不变的)
例2    ;数据判0(看看这个饭碗里面有没有饭)
MOVF    Var3,f     ;Var3的数被传送给自身(Var3添完饭后给自己)
BTFSC    STATUS,Z   ;如果Var3不等于0就会跳到下一指令(自己给自己添饭就这样的)
GOTO    Var3Zero    ;如果Var3等于0就转做相关操作(自己添不到饭肯定要干别的了)


第四条 CLRW  W寄存器的数清0(W这个SB的饭被抢了)
CLR就是清除的缩写,W。。。。。。这个SB又被搞了。。。。。。无语中
语法形式:   CLRW
操作数:    无(饭都被抢了还吃个毛啊)
指令编码:   00 0001 0000 0011 (被抢了还幺幺的叫)
执行时间:   一个指令周期(抢的速度也不慢啊)
执行过程:   0x00 - W  (饭就这样被抢了)
       1 - W  (要是不叫才怪了)
状态标志影响:Z              (W叫得也不小,把Z给惊动了)
说明:该指令对W寄存器清0,同时置位0标志Z,另外有一条指令movlw 0x00也可以使W寄存器清0,但不影响任何状态。(看来W的饭被抢也要看看谁抢的,l去抢的话连声都不干吭一声)


指令例子:CLRW  ;W=0(W的饭没了)

第五条 CLRF  数据寄存器的数清0 (看来连传送过程也会被抢)
语法形式:CLRF    f
操作数:f是数据寄存器的低7位地址(0x00-0x7f)指令编码:    00 0001 1fff ffff  (叫了两下就拂拂裤子就走了)
执行时间:一个指令周期 (抢的速度)
执行过程:

0x00 - f        (f被抢,还叫两声)
1 - Z    (结果还是把Z惊动)


状态标志影响:Z  (还是这个家伙被惊动)
说明:该指令对数据寄存器清0,同时置位0标志Z(f在传送过程中被抢,同时Z被惊动)
指令例子:CLRF TRISB ;端口B的所有I/O引脚设为输出模式(因为饭在传送中被抢了,结果全部挨饿)

第六条 ADDWF 数据寄存器的数和W寄存器相加
(传送中的饭和W的饭不满要求服务员加饭)
语法形式:ADDWF    f,d    (这次被搞的是f和d)
操作数:        

f是数据寄存器的低7位地址(0x00-0x7f)
d=f,结果放在数据寄存器内,W的数不变(饭加进f的碗里,W碗里的饭没变)
d=w,结果放在W寄存器里,数据寄存器的数不变(饭加进W碗里去了,f碗里不变)


指令编码:00 0111 dfff ffff  (都是叫饭的)
执行时间:一个指令周期(加饭的效率也够快的)
执行过程:[f] + [W] -d
状态标志影响:Z  DC  C (加饭要求惊动了睡觉的家伙和服务员还有煮饭的家伙)
说明:数据寄存器的数和W寄存器相加,结果按照d指定的目的地存数
(送饭的和W要求加饭,结果按照d指定放在哪个碗里面)
指令例子:    

MOVLW 0x55 ;W=0x55,假定 Sum=0xaa(W碗里有小半碗饭,假定sun碗里有大半碗)  
ADDWF Sum,f   ;W不变,Sum=0xff(W碗里没加成,Sum加满了) 

关键字:PIC  35条指令  扭曲理解法 引用地址:PIC的35条指令扭曲理解法

上一篇:pic16f887单片机用AD590高精度测温的电路和程序
下一篇:IO模拟串口之中断方式发送(后台运行?)

推荐阅读最新更新时间:2024-11-13 15:45

pic操作lcd 模拟spi 9非标准spi 9位数据位
#include lcd.h #include pic16f1947.h #include stdlib.h #include stdio.h #include string.h //#include config.h #define Delay_1us() asm( nop ) #define Delay_10us() asm( nop );asm( nop );asm( nop );asm( nop );asm( nop );asm( nop );asm( nop );asm( nop );asm( nop );asm( nop ) void Delay_100us() { Delay_10us(); //1 D
[单片机]
PIC16位单片机CAN(1)新建工程测试
昨天焊接了硬件,硬件没有什么问题。起初使用最新的集成开发环境MPLAB X IDE v1.41,XC16编译器。但是新建简单的工程都不行,找不到KIT3。只好放弃。还是使用MPLAB IDE v8.88集成开发环境吧,依然是XC16编译器。 由MPLAB IDE v8.88的工程向导新建一个工程。选择单片机和编译器之后开始写一个IO口程序控制LED看看有没有硬伤。好久不用PIC了,都忘了怎么使用了。 1:添加相应的头文件 2:写配置位(时钟,仿真口等) 3:写测试程序。 总是忘了写配置位,根据文档写完配置位之后LED终于点亮了!! #include p33EP32GP502.h _FICD(ICS_PGD
[单片机]
基于PIC单片机的SPWM控制技术
引言          在UPS等电力电子设备中,控制方法是核心技术。早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难。SPWM技术较好地克服了这些缺点。目前SPWM的产生方法很多,汇总如下。         1)利用分立元件,采用模拟、数字混和电路生成SPWM波。此方法电路复杂,实现困难且不易改进;         2)由SPWM专用芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制;         3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器;         4)基于单片机实现SPWM,此方法控制电路简单可靠,
[电源管理]
基于<font color='red'>PIC</font>单片机的SPWM控制技术
PIC10F320的PWM控制两种方法
第一:工作环境: 编译平台: MPLAB X IDE v4.20 编译器: MPLAB XC8 C Compiler (Free Mode) V1.45 仿真软件版本:proteus 8.6SP2 第二: 1种ADC采集,并控制PWM输出。 1种按键改变PWM输出,0-10%-50%-100%-0循环变换。 仿真ok,未烧录试用。
[单片机]
<font color='red'>PIC</font>10F320的PWM控制两种方法
PIC16F877A串口发送字符串问题
PIC16F877A串口发送,查询方式,就为了调出这个费了我一天时间,原来是串口芯片电压问题,现总结如下: 1、注意232串口芯片供电电压,有5V和3.3V的 2、注意TXD、RXD接线,单片机的TXD接232芯片的R2OUT,单片机的RXD接232芯片的T2IN 3、注意ESP8266的UTXD接MCU的RX,URXD接MCU的TX 4、注意ESP8266的UTXD接232的T2IN,URXD接232的R2OUT 5、串口波特率设置成9600 6、注意连接线的可靠性,如果用线连的话一定要检查线和插座是否稳定连接 PIC16F877A串口发送 //以下是串口发送程序 #include #define ucharunsigned
[单片机]
PIC单片机的输入和输出操作方法介绍
pic单片机是学习单片机人士必定接触的一款器件,因此大家对pic单片机或多或少具备一定了解。而在pic单片机学习过程中,pic单片机内部硬件资源接口是需要大家掌握的基本内容之一。其中,I/O更是pic单片机的实际基础操作。 I/O口单片机作为一个控制器件必定有数据输入和输出。输入量可能是温度、压力、转速等,而输出量可能是开关量和数据,以保证受控过程在规定的范围内运行。数据的输入和输出都需通过单片机内部有关电路,再与引脚构成输入/输出(I/O)端口。PIC16F84单片机芯片有两个I/O端口(PROTA和PORTB)。端口A为5位口,端口B为8位口,共占用13位引脚。每个端口由一个锁存器(即数据存储器中的特殊功能寄存器05H、0
[单片机]
<font color='red'>PIC</font>单片机的输入和输出操作方法介绍
pic单片机多路ad切换程序介绍
PIC单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变。如果是同样的体系结构,时钟频率较高的处理能力会
[单片机]
<font color='red'>pic</font>单片机多路ad切换程序介绍
PIC32MZ 通过U盘在线升级 -- USB Host bootloader
上一篇博文介绍的PIC32MZ HID bootloader是其中之一,这次将要介绍的是PIC32MZ U盘bootloader,也是其中之一。大概在今年6月份,我有尝试过实现PIC32MZ U盘bootloader, 但没有成功。放假了,效率果然不一样,之前一直没能完成,这次也轻松搞定。PIC32MZ U盘bootloader也是在harmony的bootloader例程基础上修改而成。开发环境如下, 1. IDE: MPLABX IDE 4.01 2. Compiler: XC32 v1.40 3. Library: Harmony 1.07 4. Example: c:/microchip/harmony/v
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved