📄 raout.asm
字号:
#INCLUDE <P16f877a.INC>
;演示RA流水灯,以及跨页调用子程序的方法,以及GOTO指令标准的使用方法
;本文件以传统的单片机绝对定位的风格书写,不需要在项目中添加LKR文件。
COUNT EQU 0X20
COUNT1 EQU 0x21
COUNT2 EQU 0x22
#DEFINE IOX PORTA ;定义A口
#DEFINE TIOX TRISA ;
ORG 0X0;
NOP ;使用ICD2,复位地址,必须加此指令
GOTO MAIN
ORG 0X30
MAIN;流水灯,RA口
BCF STATUS,RP1;
BSF STATUS,RP0; 切换到BANK1
CLRF TIOX;
MOVLW 0X07;
MOVWF ADCON1;
MOVLW 0X07
MOVWF CMCON;
BCF STATUS,RP1;
BCF STATUS,RP0; 切换到BANK0
MOVLW 0X01; 传送立即数至w 第一个灯赋值 RA0
MOVWF IOX; 传送w至f
NOP; 空操作
MOVLW HIGH DELAY;
MOVWF PCLATH; DELAY的高地址送送入PCLATH
CALL DELAY; 调子程序
MOVLW 0X02; 第二个灯赋值 RA1
MOVWF IOX;
NOP
MOVLW HIGH DELAY;
MOVWF PCLATH; DELAY的高地址送送入PCLATH
CALL DELAY;
MOVLW 0X04; 第三个灯赋值 RA2
MOVWF IOX;
NOP
MOVLW HIGH DELAY;
MOVWF PCLATH; DELAY的高地址送送入PCLATH
CALL DELAY;
MOVLW 0X08 ; 第四个灯赋值 RA3
MOVWF IOX;
NOP
MOVLW HIGH DELAY;
MOVWF PCLATH; DELAY的高地址送送入PCLATH
CALL DELAY
; MOVLW 0X10; 第五个灯赋值 RA4
; MOVWF IOX;
; NOP;
; MOVLW HIGH DELAY;
; MOVWF PCLATH; DELAY的高地址送送入PCLATH
; CALL DELAY; RA4,开漏输出,另外测试
MOVLW 0X20; 第六个灯赋值 RA5
MOVWF IOX;
NOP;
MOVLW HIGH DELAY;
MOVWF PCLATH; DELAY的高地址送送入PCLATH
CALL DELAY; RA4,开漏输出,另外测试
MOVLW 0X2F; 全部灯赋值 RA5
MOVWF IOX;
NOP;
MOVLW HIGH DELAY;
MOVWF PCLATH; DELAY的高地址送送入PCLATH
CALL DELAY; RA4,开漏输出,另外测试
MOVLW 0X2A; 全部灯赋值 RA5
MOVWF IOX;
NOP;
MOVLW HIGH DELAY;
MOVWF PCLATH; DELAY的高地址送送入PCLATH
CALL DELAY; RA4,开漏输出,另外测试
movlw high MAIN
movwf PCLATH;
GOTO MAIN; 标准GOTO,要注意PCLATH,并做改变。
ORG 0X800 ;BANK1子程序
DELAY ; 0.5s延时子程序
clrf COUNT ;
clrf COUNT1 ;
movlw 0x03 ;
movwf COUNT2 ;
LDloop
decfsz COUNT,f ;
goto LDloop ;
decfsz COUNT1,f
goto LDloop
decfsz COUNT2,f
goto LDloop
return
END ;程序结束,以END为标记。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -