⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ledliushui.asm

📁 PIC流水灯控制-汇编
💻 ASM
字号:
;**************************************************
  __CONFIG 3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭
;****************************************************
status    equ   3h       ;定义状态寄存器地址
portc     equ    7h      ;定义端口C的数据寄存器地址
trisc     equ   87h      ;定义端口C的方向控制寄存器地址
flag      equ   25h      ;定义一个控制左移/右移的标志寄存器
;***********************************************************
       org   000h      ;定义程序存放区域的起始地址
       nop             ;放置一条ICD必须的空操用指令
       bsf     status,5      ;
       movlw   00h        ;对端口C的方向控制码00H先送W
       movwf   trisc       ;再由W转移到方向控制寄存器
       bcf    status,5       ;恢复到文件寄存器体0
       movlw  01h         ;将00000001B先送W
       movwf  portc        ;再由W转移到数据寄存器
       bsf     flag,0      ;将左右移标志位置1,首先进行左移LED
       bcf     status,0     ;将标志位C先清0
loop  btfss    status,0      ;测试进位/借位位,是1则修改标志
       goto     loop1       ;是0则不修改标志
       comf    flag,1       ;FLAG的BIT0作为标志位,把它取反
loop1  btfss    flag,0       ;判断标志位,是1则跳到循环左移
       goto     loop2       ;是0则跳到循环右移
       rlf       portc,0     ;循环左移端口C数据寄存器,结果送W
       movwf   portc        ;将结果再送回端口C的数据寄存器
       goto     loop3        ;跳过下面两条指令
loop2  rrf      portc,0   ;循环右移端口C数据寄存器,结果送回W
       movwf   portc     ;将结果再送回端口C的数据寄存器   ;
loop3  call      delay         ;调用廷时子程序
       goto      loop         ;返回
;-------------------------延时子程序----------------------------
delay                       ;子程序名,也是子程序入口地址
       movlw   0ffh          ;将外层循环参数值FFH经过W
       movwf   20h          ;送入用作外循环变量的20H单元
lp0    movlw   0ffh          ;将内层循环参数值FFH经过W
       movwf   21h           ;送入用作内循环变量的21H单元
lp1    decfsz   21h,1         ;变量21H内容递减,若为0跳跃
       goto     lp1           ;跳转到LP1处
       decfsz    20h,1         ;变量20H内容递减,若为0跳跃
       goto     lp0           ;跳跃到LP0处
       return                 ;返回主程序
       end                   ;源程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -