📄 84led-c.asm
字号:
;84led-a.asm 程序让LED8不停的闪烁实验,供初学入门用,熟悉廷时程序的编写方法。
;PIC单片机学习网-----http://www.pic16.com 作者:陈学乾
;本程序的功能是:程序复位后,RB7口的LED8每0.2秒闪一次,不停的闪烁
;烧写时应注意:配置位已经在程序中写明,加载HEX文件时会自动加载,烧写时不用再手动设置配置位。
;实验时请注意套件跳线选择,跳线全部插入串口座方向
;********************************************************************
LIST P=16F84A,R=DEC; 告诉编译程序使用何种PIC单片机,默认数制为10进制。
;---------------------------------------------------------------------
__CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC
;没有代码保护
;看门狗关闭
;上电廷时器开启
;振荡器模式为XT
;----------------------------------------------------------------------
STATUS EQU 03H ;定义状态寄存器地址
PORTA EQU 05H ;端口A的数据寄存器地址
PORTB EQU 06H ;端口B的数据寄存器地址
TRISA EQU 5H ;定义端口A的方向控制寄存器地址
TRISB EQU 6H ;定义端口B的方向控制寄存器地址
;---------------------- STATUS
RP0 EQU 5 ;定义状态寄存器中的RAM页选位RP0
;--------------------;用户寄存器
L1 EQU 10H ;廷时变量
L2 EQU 11H
L3 EQU 12H
;-------------------------
ORG 0000H ; 程序从零地址开始
CLRF PORTA
CLRF PORTB ;初始化I/O口
BSF STATUS,RP0 ;设置数据寄存器体1
MOVLW B'00000000' ; 1代表输入,0代表输出
MOVWF TRISA ; 设置PORTA全部IO为输出
MOVLW B'00000000'
MOVWF TRISB ; 设置PORTB 全部IO为输出
BCF STATUS,RP0 ;恢复数据寄存器体0
LOOP ;下面是主程序
MOVLW 80H ;送80H到W
XORWF PORTB,1 ;取反RB7,让LED8闪烁
CALL DELAY ;调用0。2S廷时程控
GOTO LOOP ;返回不断闪烁
;-------------------------------------以下是0。2S廷时子程序
DELAY
MOVLW 2 ;(1US)定义最外层循环变量初始值
MOVWF L1 ;(1US)
DELAY_1
MOVLW 200 ;(1US)定义第二层循环变量初始值
MOVWF L2 ;(1US)
DELAY_2
MOVLW 200 ;(1US)定义第一层循环变量初始值
MOVWF L3 ;(1US)
DELAY_3
DECFSZ L3,1 ;(1US)L3-1=0?是!跳出内层循环
GOTO DELAY_3 ;(2US)否!循环回去
DECFSZ L2,1 ;(1US)L2-1=0?是!跳出循环
GOTO DELAY_2 ;(2US)否!循环回去
DECFSZ L1,1 ;(1US)L1-1=0?是!跳出循环
GOTO DELAY_1 ;(2US)否!循环回去
RETLW 0 ;子程序返回
END ; 形式上的程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -