12F675测试程序
LIST P=12F675
INCLUDE "P12F675.INC"
__config(0x31DC)
;------------------------------------------------------------------------------------------
S_TEMP EQU 31H
W_TEMP EQU 32H
STATUS_TEM EQU 33H
FLAG1 EQU 34H
FLAG2 EQU 35H
W EQU 0
F EQU 1
;COUNT1 EQU 21H ; 延时量
RTCC EQU 1
;RA EQU 5
;RB EQU 6
;F8 EQU 8
F9 EQU 9
;*********************************************************************************
ORG 00H
NOP
GOTO START
;------------------------------------------------------------------------------------------
;中断服务程序
;------------------------------------------------------------------------------------------
ORG 04H
MOV WF W_TEMP
SWAPF STATUS,W
MOV WF S_TEMP
BTFSS GPIO,GPIO5 ;GPIO5是否按下?
CALL DELAY ;去抖
BTFSS GPIO,GPIO5
GOTO RB0
RE ;还原中断现场
SWAPF S_TEMP,W ;中断返回
MOV WF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
MOV F GPIO,W ; 唤醒标志清零 必须读取!!!
BCF INTCON,GPIF ;清除RB中断标志位
RETFIE
RB0
INCF FLAG2,F
RBB
BTFSS GPIO,GPIO5 ;等待GPIO5释放
GOTO RBB
GOTO RE
;------------------------------------------------------------------------------------------
;主程序
;------------------------------------------------------------------------------------------
START
BCF STATUS,RP0
CLRF GPIO
MOV LW 07h
MOV WF CMCON
MOV LW 0c8H
MOV WF INTCON ;总中断和GPIO电平变化中断使能
BSF STATUS,RP0 ;选择数据存储器体1
MOV LW 0FH
MOV WF OPTION_REG ;开启内部弱上拉
MOV LW 38H
MOV WF TRISIO ;GPIO端口方向设定
BSF WPU,5
MOV lw 20h
MOV wf IOC
CLRF ANSEL
BCF STATUS,RP0 ;选择数据存储器体0
BCF GPIO,GPIO2
; BCF GPIO,GPIO1
;CLRF FLAG2 ; 清除FLAG2
LOOP1
BTFSS FLAG2,0 ;判断FLAG2的标志位是否为0
GOTO LOP1
BSF GPIO,GPIO2 ;点亮(GPI2口的LED)
; BSF GPIO,GPIO1 ;点亮(GPI1口的LED)
CALL DELAY2 ;调延时8S
; GOTO OUT
GOTO LOP1
LOP1
BCF GPIO,GPIO2
; BCF GPIO,GPIO1 ;关闭(GPI1口的LED)
CLRF FLAG2 ; 清除FLAG2
SLEEP ;睡眠
NOP
OUT ;唤醒
GOTO LOOP1
;------------------------------------------------------------------------------------------
;延时子程序
;------------------------------------------------------------------------------------------
DELAY
MOV LW .10
MOV WF 22H
D1
MOV LW 0FFH
MOV WF 23H
D2
DECFSZ 23H,1
GOTO D2
DECFSZ 22H,1
GOTO D1
RETURN
DELAY1
MOV LW 3FH ;外循环常数
MOV WF 20H ;外循环寄存器
L1
MOV LW 02H ;内循环常数
MOV WF 21H ;内循环寄存器
L2
DECFSZ 21H,1 ;内循环寄存器递减
GOTO L2 ;继续内循环
DECFSZ 20H,1 ;外循环寄存器递减
GOTO L1 ;继续外循环
本文关键字:程序 PIC单片机,单片机-工控设备 - PIC单片机
上一篇:PIC24单片机的串口帧错处理