当前位置:网络安全 > pic单片机按键程序汇编[pic单片机视频教学]

pic单片机按键程序汇编[pic单片机视频教学]

  • 发布:2023-09-25 21:05

PIC16单片机汇编程序的理解问题,急求

TRANS_:;信号发送程序

MOVLW 14

MOVWF CNT0;counter0 CNT0=14

TS_0:

BSF RA,TXD ;1;TXD=1(RA1=1)

RRF DT1,F ;1 循环右移DATA1(AD数据高8bit)

RRF DT0,F ;1 循环右移DATA0(AD数据低8bit)

MOVLW 11

SKPC ;(如果DT0最高位为1则跳过下一步)

MOVLW 4

;3

MOVWF CNT1 ;1 高电平长度(RRF DT0,F如果有进位(DT0最低位为1)则CN1=11,如果没进位(DT0最低位为0)则CN1=4)

TS_1:

DECFSZ CNT1,F

GOTO TS_1 ;3*CNT1(延时)

NOP ;7+3*CNT1=19 OR 40

BCF RA,TXD ;1(RA1=0)

MOVLW 4 ;1

MOVWF CNT1 ;1(CNT1=4)

TS_2:

DECFSZ CNT1,F

GOTO TS_2 ;3*CNT1(延时CNT1=4)

DECFSZ CNT0,F ;1

GOTO TS_0 ;2(循环发送CNT0=14次)

;6+3*CNT1=18

RETLW 0

;通过RA1发送14位({DATA1,DATA0})

;为1的话RA1高电平为11个延时低电平4个延时 ▔▔▔▔▔▔▔▔▔▔▔|▁▁▁▁(波形)

;为0的话RA1高电平为4个延时低电平4个延时 ▔▔▔▔|▁▁▁(波形)

[img]

求助:PIC单片机程序流程图(汇编语言编程,点亮LED灯同时实现通过滚轮的拨动快慢来控制数码管的扫描速度

主要有:

MOV P1,#0AAH

ACALL延迟

MOV P1,#55H

ACALL延迟

SJMP主要

延迟:MOV R7,#0FFH / DE:MOV R6

DJNZ R6,#0FFH,

DJNZ R7,

RET

最后,这是你想要的效果,不妨试试哦!

求PIC单片机汇编示例程序

想知道哪种,给你粘贴,下面是一些计算子程序

;******************************************************************

;一、十六位二进制转换为BCD数子程序

;******************************************************************

MOVLW 10H ;

MOVWF CNT ;

BCF STATUS,C ;

CLRF R2 ;

CLRF R1 ;

CLRF R0 ;

LOOP RLF AL ;

RLF AH ;

RLF R0 ;

RLF R1 ;

RLF R2 ;

DECFSZ CNT ;

GOTO ADJDEC ;

RETURN

ADJDEC MOVLW R0 ;

MOVWF FSR ;

CALL ADJBCD ;

MOVLW R1 ;

MOVWF FSR ;

CALL ADJBCD ;

MOVLW R2 ;

MOVWF FSR ;

CALL ADJBCD ;

GOTO LOOP ;

ADJBCD MOVLW 3H ;

ADDWF INDF,W ;

MOVWF TMP ;

BTFSC TMP,3 ;

MOVWF INDF ;

MOVLW 30H ;

ADDWF INDF,W ;

MOVWF TMP ;

BTFSC TMP,7 ;

MOVWF INDF ;

RETURN

;***************************************************************************

;乘法宏

;两个八位无符号数乘法,乘积为十六位。部分积右移相加算法:乘数带进位右移一位,

;检查进位是否为一,若是一,部分积寄存器加被乘数,否则不加;然后部分积寄存器

;带进位右移一位;重复上述过程直至循环次数为八结束。

;***************************************************************************

;宏的引用格式:MUL A,B

;完成操作: (A)*(B)---(A,B)

;影响状态位:C、Z和DC

;8*8位乘法宏MUL,结果的高字节部分存入(A),低字节存入(B)

;***************************************************************************

MUL MACRO A,B ;

LOCAL MLOOP ;

;****************************************************************************

;如只用乘法子程序,就下段。

;****************************************************************************

CLRF TMPA ;

CLRF TMPB ;

MOVLW 8 ;

MOVWF CNT ;

MOVF A,W ;

BCF STATUS,C ;

MLOOP RRF B ;

BTFSC STATUS,C ;

ADDWF TMPA ;

RRF TMPA ;

RRF TMPB ;

DECFSZ CNT ;

GOTO MLOOP ;

MOVF TMPA,W ;

MOVWF A ;

MOVF TMPB,W ;

MOVWF B ;

;*****************************************************************************

ENDM

;*****************************************************************************

;除法宏DIV

;除法是乘法的逆运算。与十进制长除法类似,从被除数的最高有效位开始,把被除数左移

;一位至余数上,如果余数不够减去除数,则商寄存器左移,移入位为零,反之移入位为一

;余数减去被除数,把被除数的下一位移至除数上。重复上述过程直至处理完所有位。

;******************************************************************************

;宏的引用格式:DIV A,B

;完成操作: (A)为商部分,(B)为余数部分

;影响状态位:C、Z和DC

;8/8位除法宏DIV,结果(A)为商部分,(B)为余数部分

;***************************************************************************

DIV MACRO A,B ;

LOCAL MLOOP ;

;****************************************************************************

;如只用除法子程序,就下段。

;****************************************************************************

MOVF A,W ;

MOVWF TMPA ;

MOVF B,W ;

MOVWF TMPB ;

MOVLW 8 ;

MVOWF CNT ;

CLRF A ;

CLRF B ;

DLOOP BCF STATUS,C ;

RLF TMPA ;

RLF B ;

MOVF TMPB,W ;

SUBWF B,W ;

BTFSC STATUS,C ;

MOVWF B ;

RLF A ;

DECFSZ CNT ;

GOTO DLOOP ;

;****************************************************************************

ENDM ;

;****************************************************************************

;间接寻址

CLRF R0 ;清除R0寄存器里的内容

MOVLW R0 ;

MOVWF FSR ;将R0寄存器的地址送入间接寻址指针FSR

MOVF INDF,0 ;

MOWF TEMP ;将间接寻址指针FSR所指地址R0寄存器里的内容送入TEMP

MOVLW 88H ;

MOVWF INDF ;将88H送入间接寻址指针FSR所指地址R0寄存器里

;*******************************************************************************

;将两位BCD数送入显示

;显示十位BCD数

DISPLAY SWAPF TEMP,W ;将TEMP寄存器里的内容的高低字节交换并送入W

ANDLW 0FH ;将0FH与W寄存器里的内容相与并送入W

CALL CODE_TAB ;查表取段码

MOVWF PORTD ;送入PORTD端口

MOVLW 1H ;

MOVWF PORTC ;选通PORTC,1

CALL DELAY ;调用延时

;显示个位BCD数

MOVF TEMP,W ;

ANDLW 0FH ;

CALL CODE_TAB ;

MOVWF PORTD ;

MOVLW 2H ;

MOVWF PORTC ;

CALL DELAY ;

;*********************************************************************************************

;16位二进制除以8位二进制

;*******************************************************************************************

DIV16

MOVF A,0

MOVWF DIV_H

MOVF BX,0

MOVWF DIV_L ;被除数高低字节分别送进各寄存器

MOVLW 9H

MOVWF DIVB ;将除数送进寄存器

MOVLW 10H

MOVWF CNT ;按被除数位数设定移位次数

CLRF AL

CLRF AH

CLRF BX

DLOOP

BCF STATUS,C

RLF DIV_L

RLF DIV_H

RLF BX

MOVF DIVB,W

SUBWF BX,W

BTFSC STATUS,C

MOVWF BX

RLF AL

RLF AH

DECFSZ CNT

GOTO DLOOP

RETURN

;****************************************************************************************************

;8位乘以16位二进制乘法运算程序

;****************************************************************************************************

MUL8

CLRF TMPA ;清除积的高位寄存器

CLRF TMPB ;清除积的中位寄存器

CLRF TMPC ;清除积的低位寄存器

MOVLW 10H ;因为8位二进制乘以16位二进制,乘数为16位,移位乘数,所以移位次数为16次

MOVWF CNT ;

MOVF BX,W ;将8位被乘数送进W

BCF STATUS,C;

MLOOP RRF TEMP_H ;

RRF TEMP_L ;带C循环右移16位乘数

BTFSC STATUS,C ;

ADDWF TMPA ;

RRF TMPA ;

RRF TMPB

RRF TMPC

DECFSZ CNT ;

GOTO MLOOP ;

MOVF TMPA,W ;

MOVWF AA ;

MOVF TMPB,W ;

MOVWF A

MOVF TMPC,W ;将乘积送进各寄存器。

MOVWF BX

RETURN

pic单片机怎么用户汇编语言实现位取反?

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键空出一格,网络标号必须顶格

;*******************************************************************

关于pic单片机按键程序汇编和pic单片机视频教学的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关文章

热门推荐