英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
16f88x 电容触摸跟踪程序
[打印本页]
作者:
star
时间:
2012-8-21 17:56
标题:
16f88x 电容触摸跟踪程序
;AVEH/L 16次滑动平均数值. CAPH/L 当前的timer1数值 TRIPH/L 差值
;减法结果程序 SOUH,SOU
;BUTTON 前三位是触摸开关标志位 高三位是检测通道选择位 从左到有依次为123
;BUTTON 某为为1 则为此通道检测 此通道按下
;RAW< AVE-TRIP
;BUTTON,4为SQU16运算正负位 1为负 0为正
;F1/2/3 分别为16运算临时RAM
;;检验跟踪是否正确。将手指 非常慢的靠近开关,一直到完全紧密接触
;都没有检测到按下动作证明跟踪程序起到了作用!
SQU16:
;滑动平均数值的求取 (AVE*16-AVE)/16+CAP/16=AVE 滑动跟踪
;[16AVE+(CAP-AVE)]/16=AVE+(CAP/16-AVE/16) F1<F2<F3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF CAPH,W
MOVWF F3
MOVF CAPL,W
MOVWF F2 ;FX-AVE=CAP-AVE正负号为BUTTON,4 1为负 0为正
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF AVEL,W
SUBWF F2,F
MOVF AVEH,W
BTFSS STATUS,C
INCFSZ AVEH,W
SUBWF F3,F
BTFSC STATUS,C
GOTO $+5
BSF BUTTON,4
COMF F3,F
COMF F2,F
GOTO $+2
BCF BUTTON,4
NOP
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;以上的是减法运算CAP-AVE 运算结果在F3/F2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;下面是将结果FX/16然后和AVE做加减
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BCF STATUS,C
RRF F2,F
BCF STATUS,C
RRF F2,F
BCF STATUS,C
RRF F2,F
BCF STATUS,C
RRF F2,F
MOVLW 0X0F
ANDWF F3,W;屏蔽高四位
MOVWF F1 ;将低四位保存在F1中
SWAPF F1,W ;低四位半成高四位
IORWF F2,F ;顺利完成 F3的低四位转移到F2的高四位
MOVLW 0XF0;屏蔽F3的低四位
ANDWF F3,F
SWAPF F3,F;将F3的高四位移到低四位中
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;这里就完成了双字节的/16的运算.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;下面进行和AVE加减发运算
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BTFSS BUTTON,4
GOTO AVJ ;转道加法运算AV+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;FX结果为负 减法运算AVE-FX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AFJJ:
MOVF F2,W
SUBWF AVEL,F
MOVF F3,W
BTFSS STATUS,C
INCFSZ F3,W
SUBWF AVEH,F
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;结果为正 进行AVE+FX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AVJ:
MOVF F2,W
ADDWF AVEL,F
MOVF F3,W
BTFSC STATUS,C
INCFSZ F3,W
ADDWF AVEH,F
RETURN
;到此完成AVE跟踪
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2