英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4093|回复: 0
打印 上一主题 下一主题

旋转式编码开关程序

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-21 16:33:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
旋转式编码开关用了104的电容做防抖,也可以用延时做防抖,还是用RB4口电平变化中断功能,RB4判高电平,RB1判方向,RB2和RB3作指示,编码开关的用途非常广泛,用作数调很方便,程序很简单就不解释了,后面有个小延时,改一改可做实验用,谢谢! ;=============================
LIST   P=16F72
INCLUDE"P16F72.INC"
;=================================
W_TEMP      EQU  0X21
STATUS_TEMP EQU  0X22
PCLATH_TEMP EQU  0X23
N0         EQU  0X24
N1         EQU  0X25
;=================================
        ORG     0000H
        NOP
        GOTO    MAIN
        ORG     0004H
        GOTO    ZD
;===========中断返回==================
RETFIE_IN
        RETFIE
;=======================================
MAIN
        BSF    STATUS,RP0
        MOVLW  B'11110011'
        MOVWF  TRISB
        BCF    OPTION_REG,NOT_RBPU      ;启动上拉
        MOVLW  B'10001001'              ;启动总中断、RBIE中断
        MOVWF  INTCON                 
        BCF    STATUS,RP0
        CLRF   PORTB
        BCF    INTCON,RBIF
LOP     
        GOTO   LOP
;==============现场保护子程序==================
ZD
        MOVWF  W_TEMP
        SWAPF  STATUS,W
        MOVWF  STATUS_TEMP
        MOVF   PCLATH,W
        MOVWF  PCLATH_TEMP
;================================================
ZD1     BCF    INTCON,RBIF
        NOP
        BTFSC  INTCON,RBIF
        CALL   KKK
        CLRF   INTCON
        BSF    INTCON,RBIE
;===============现场恢复子程序===================
POP   
        MOVF   PCLATH_TEMP,W
        MOVWF  PCLATH
        SWAPF  STATUS_TEMP,W
        MOVWF  STATUS
        SWAPF  W_TEMP,F
        SWAPF  W_TEMP,W
        GOTO   RETFIE_IN  
;=====================================================
KKK
        MOVF   PORTB,F       ;读RB口,锁定状态
        NOP
        BTFSS  PORTB,4       ;检测RB4口,为0则继续检测,为1则检另一侧RB2
        GOTO   $-1         
        BTFSS  PORTB,1
        GOTO   KK
        BTFSS  PORTB,1
        GOTO   KK
        BSF    PORTB,2
        MOVF   PORTB,F
        RETURN
;===================================================
KK      BTFSC  PORTB,1
        GOTO   RETFIE_IN
        BSF    PORTB,3
        MOVF   PORTB,F
        RETURN
;=======================20MS=========================
DELAY2MS
      MOVLW 0x9D ;外层
     MOVWF N1
     MOVLW 0xBE ;内层
     MOVWF N0
     INCFSZ N0
     GOTO  $-1
     INCFSZ N1
     GOTO  $-5
     RETURN
            END
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-27 22:19 , Processed in 0.049598 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表