单片机将数据符号取反

单片机将数据符号取反,第1张

做补码运算!
简单的说就是取反加1比如一个十六进制的5A40:分别存放到20h和21h的内存里。
MOVLW 0x40
MOVWF 20H
MOVLW 0x5A
MOVWF 21H
COMF 20H, 1
COMF 21H, 1
INCF 20H, 1
BTFSC STATUS, 2
INCF 0x21, 1
CLRF STATUS

现功能:按下按键三个全亮,在按下LED2灭,再按下三个LED全灭,如此循环,相当于三档,第三档是停止。第一档和第二档定时5S,5S终了,停止运行,如果此时再按1次则回到第一档。如果5S之内按下,则切换到下一档,实现功能:按下按键三个全亮,在按下LED2灭,再按下三个LED全灭,如此循环,相当于三档,第三档是停止。第一档和第二档定时5S,5S终了,停止运行,如果此时再按1次则回到第一档。如果5S之内按下,则切换到下一档。

单片机取反,指的是单片机的引脚取反。
简单说有如下几种原理:
1、用单片机编程控制的结果,此种成本稍高,但闪烁效果多样。
2、PLC控制。可编程序逻辑控制器,是一种专门用于接通和断开控制的设备,优缺点与第一条类似。
3、简单的低成本电路,用开关管控制。在电路中,电容器与三极管基极连接,而电容器通过电阻与电源连接。慢速充电时电容两端电压逐渐升高,当电压达到三极管导通的电压时,通过三极管基极和发射极放电。而三极管集电极控制的继电器让灯泡接通电源,灯泡亮起了,随后,电容器电压放电完毕,三极管又截止了,继电器又断电,灯泡灭了。这个过程逐渐循环,就实现小灯闪烁。这个电路原理类似于水车捣年糕的机器。不断流动的水进入水车上的筒子,转动的轮子拨动木槌一端,让木槌抬起,然后木槌落下,实现一次敲打。往复循环,由连续的运动转成断续的运动。

取反 *** 作是一个逻辑 *** 作,作用于变量的每一个位,unsigned char数组中元素取反, *** 作结果为sz[0]=0;取反后为sz[0]=0xff;
相当于用sz[0]+(sz[0]取反)=255;

1、pic单片机的汇编语言中,目前还没有直接能对位取反的指令,只有对寄存器取反的指令,比如:
COMF F,d ;
这条语句中“F”是寄存器的名称,当“d=1”时,结果存入“F”,当“d=0”时,结果存入“W”。这个“W”书面解释是工作寄存器。可理解为过渡寄存器或临时寄存器,做中转数据用。
2、在汇编语言中要实现位取反,可通过位状态检测判断来对位进行“置1”或“清零”,详见以下程序。
目的:将寄存器 PROTB,3 取反
;
BTFSS PORTB,3 ; 检测PORTB,3位,为1跳转QINGLING。
GOTO ZHIYI ; 为0跳转到ZHIYI。
QINGLING ; 清零程序段,这是网络标号,可理解为一段程序的名称。
BCF PORTB,3 ; 判断之前PORTB,3位为1,这句作用是将 PORTB,3 清零 。
GOTO WORK ; 跳转到 WORK 程序段继续运行。
ZHIYI ; 置1程序段, 这是网络标号,可理解为一段程序的名称。
BSF PORTB,3 ; 判断之前PORTB,3位为0,这句作用是将 PORTB,3 置1。
GOTO WORK ; 跳转到 WORK 程序段继续运行。
WORK


;注意注意,编程时,指令必须用TAB键空出一格,网络标号必须顶格


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13217246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-22
下一篇 2023-06-22

发表评论

登录后才能评论

评论列表(0条)

保存