亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? csd_1hl.asm

?? cypresscy74294ic鍵盤和鼠標原碼
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;;*****************************************************************************
;;  FILENAME: CSD_1HL.asm
;;   @Versions@
;;  Generated by PSoC Designer ver 4.4  b1884 : 14 Jan, 2007
;;
;;  DESCRIPTION: CSD User Module high level software
;;                implementation file for the 21x34 PSoC family of devices.
;;-----------------------------------------------------------------------------
;;  Copyright (c) Cypress Semiconductor 2000-2006. All Rights Reserved.
;;*****************************************************************************
;;*****************************************************************************

include "m8c.inc"
include "memory.inc"
include "CSD_1.inc"

;-----------------------------------------------
; Global Symbols
;-----------------------------------------------

export _CSD_1_UpdateSensorBaseline
export  CSD_1_UpdateSensorBaseline
export _CSD_1_InitializeSensorBaseline
export  CSD_1_InitializeSensorBaseline 
export _CSD_1_bIsSensorActive
export  CSD_1_bIsSensorActive
export _CSD_1_bIsAnySensorActive
export  CSD_1_bIsAnySensorActive
export _CSD_1_SetDefaultFingerThresholds
export  CSD_1_SetDefaultFingerThresholds
export _CSD_1_InitializeBaselines
export  CSD_1_InitializeBaselines
export _CSD_1_UpdateAllBaselines
export  CSD_1_UpdateAllBaselines
IF CSD_1_SLIDERS_EXIST
export _CSD_1_wGetCentroidPos
export  CSD_1_wGetCentroidPos
ENDIF
;-----------------------------------------------
; Variable Allocation
;-----------------------------------------------
AREA InterruptRAM (RAM, REL, CON)

; Local variables
_CSD_1_bEndOfArray:                               ; Temp pointer variable
 CSD_1_bEndOfArray:                       BLK  1  
_CSD_1_fIsPressed:                                ; Temp variable for if any sensor is pressed
 CSD_1_fIsPressed:                        BLK  1
_CSD_1_bCurPos:                                   ; Temp position variable
 CSD_1_bCurPos:                           BLK  1  
_CSD_1_bSnsMaskPtr:                               ; Temp sensor mask pointer used in centroid calculation
 CSD_1_bSnsMaskPtr:                       BLK  1
_CSD_1_bStartIndex:                               ; Temp Start index
 CSD_1_bStartIndex:						 BLK  1
_CSD_1_wTmpBtnFThreshold:                         ; Temp Difference
 CSD_1_wTmpBtnFThreshold:				 BLK  2

IF CSD_1_SLIDERS_EXIST
; Local slider variables
_CSD_1_wDenom:                                    ; Denominator is also the Ctrd Pos
 CSD_1_wDenom:                            BLK  2
_CSD_1_dNumer:                                    ; Numerator also contains the Ctrd Pos
 CSD_1_dNumer:                            BLK  2                   
_CSD_1_wCtrdPos:                                  ; Ctrd Pos is LMSB and LLSB of the numerator
 CSD_1_wCtrdPos:                          BLK  2                            
_CSD_1_dMultTempX:                                ; Temp multiplication register
 CSD_1_dMultTempX:                        BLK  4
_CSD_1_dMultTempY:                                ; Temp multiplication register
 CSD_1_dMultTempY:                        BLK  4
_CSD_1_bCurSlider:                        
 CSD_1_bCurSlider:                        BLK  1
_CSD_1_bCurCtrdStartPos:                          ; Temp current centroid start position
 CSD_1_bCurCtrdStartPos:                  BLK  1
_CSD_1_bCurCtrdSize:                              ; Temp current centroid size
 CSD_1_bCurCtrdSize:                      BLK  1
_CSD_1_bBiggestCtrdStartPos:                      ; Temp biggest centroid start position
 CSD_1_bBiggestCtrdStartPos:              BLK  1
_CSD_1_bBiggestCtrdSize:                          ; Temp biggest centroid size
 CSD_1_bBiggestCtrdSize:                  BLK  1
_CSD_1_wCurPkValue:                               ; Temp current peak
 CSD_1_wCurPkValue:                       BLK  2
_CSD_1_bCurPkPos:                                 ; Temp current slider pointer
 CSD_1_bCurPkPos:                         BLK  1
_CSD_1_bDiplexInfo:                               ; Temp flag for diplex of current group
 CSD_1_bDiplexInfo:						 BLK  1
_CSD_1_bDiplexMSB:                                ; Temp that contains the address of the rom diplex table
 CSD_1_bDiplexMSB:                        BLK  1
_CSD_1_bDiplexLSB:
 CSD_1_bDiplexLSB:                        BLK  1
_CSD_1_wDivBtwSns:                                ; Temp divisions between sensors
 CSD_1_wDivBtwSns:                        BLK  2
ENDIF

AREA bss
; Global variables
_CSD_1_baSnsBucket:                                 ; Baseline difference accumulator, one entry for each sensor
 CSD_1_baSnsBucket:                       BLK  CSD_1_TotalSensorCount
_CSD_1_baSnsDebounce:
 CSD_1_baSnsDebounce:                     BLK  CSD_1_TotalSensorCount
_CSD_1_baLowBaselineReset:
 CSD_1_baLowBaselineReset:                BLK  CSD_1_TotalSensorCount

IF CSD_1_SLIDERS_EXIST
_CSD_1_waCtrdPkValue:                             ; Array containing peak value of centroid
 CSD_1_waCtrdPkValue:                     BLK  (2*CSD_1_SliderCount)
ENDIF
 	 
; Local variables
export _CSD_1_fIsPressed
export  CSD_1_fIsPressed
export _CSD_1_bEndOfArray
export  CSD_1_bEndOfArray
export _CSD_1_bCurPos
export  CSD_1_bCurPos
export _CSD_1_bSnsMaskPtr
export  CSD_1_bSnsMaskPtr

IF CSD_1_SLIDERS_EXIST
; Local slider variables
export _CSD_1_wDenom
export  CSD_1_wDenom
export _CSD_1_wCtrdPos
export  CSD_1_wCtrdPos
export _CSD_1_dNumer
export  CSD_1_dNumer
export _CSD_1_dMultTempX
export  CSD_1_dMultTempX
export _CSD_1_dMultTempY
export  CSD_1_dMultTempY
export _CSD_1_bCurCtrdStartPos
export  CSD_1_bCurCtrdStartPos
export _CSD_1_bCurCtrdSize
export  CSD_1_bCurCtrdSize
export _CSD_1_bBiggestCtrdStartPos
export  CSD_1_bBiggestCtrdStartPos
export _CSD_1_bBiggestCtrdSize
export  CSD_1_bBiggestCtrdSize
export _CSD_1_wCurPkValue
export  CSD_1_wCurPkValue
export _CSD_1_bCurPkPos
export  CSD_1_bCurPkPos
export _CSD_1_bDiplexMSB
export  CSD_1_bDiplexMSB
export _CSD_1_bDiplexLSB
export  CSD_1_bDiplexLSB
export _CSD_1_wDivBtwSns
export  CSD_1_wDivBtwSns
ENDIF

;@PSoC_UserCode_INIT@ (Do not change this line.)
;---------------------------------------------------
; Insert your custom declarations below this banner
;---------------------------------------------------

;------------------------
; User Includes
;------------------------


;------------------------
; User Constant Definitions
;------------------------


;------------------------
; User Variable Allocation
;------------------------


;---------------------------------------------------
; Insert your custom declarations above this banner
;---------------------------------------------------
;@PSoC_UserCode_END@ (Do not change this line.)

;------------------------
;  Constant Definitions
;------------------------
AREA UserModules (ROM, REL, CON)

; For using two byte variables
LSB:  equ  1
MSB:  equ  0

; For using four byte variables
MMSB: equ 0
MLSB: equ 1
LMSB: equ 2
LLSB: equ 3

FINGER_THRESHOLD:            equ   1eh
NOISE_THRESHOLD:             equ   ah
NEGATIVE_NOISE_THRESHOLD:    equ   5h
BASELINE_UPDATE_THRESHOLD:   equ   14h


.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSD_1_UpdateSensorBaseline(BYTE bSensorNum)
;
;  DESCRIPTION:
;      Update baseline for one sensor. The algorithm is as follows:
;        If difference count is negative baseline become raw count
;        If difference count is above noise threshold do not update
;        Else difference count is positive and within noise threshold so
;        difference is halved and added to the bucket. When the bucket
;        reaches the threshold the baseline increments and the bucket resets
;-----------------------------------------------------------------------------
;  STACK USAGE: 0 BYTES
;
;  ARGUMENTS: 
;      A => Sensor Number
;    
;  RETURNS:    
;      Nothing
;
;  SIDE EFFECTS: 
;    The A and X registers may be modified by this or future implementations
;    of this function.  The same is true for all RAM page pointer registers in
;    the Large Memory Model.  When necessary, it is the calling function's
;    responsibility to perserve their values across calls to fastcall16 
;    functions.
;
 CSD_1_UpdateSensorBaseline:
_CSD_1_UpdateSensorBaseline:
   RAM_PROLOGUE RAM_USE_CLASS_3
   RAM_SETPAGE_CUR 0 ; direct access ram will always be in interrupt ram area
   RAM_X_POINTS_TO_INDEXPAGE
   
   mov [CSD_1_bSensorNum], A                                                   ; Save sensor index
   asl A
   mov X,A
   
   ; Get the difference counts
   RAM_SETPAGE_IDX >CSD_1_waSnsResult
   mov A, [X+CSD_1_waSnsResult+LSB]
   RAM_SETPAGE_IDX >CSD_1_waSnsBaseline
   sub A, [X+CSD_1_waSnsBaseline+LSB]
   RAM_SETPAGE_IDX >CSD_1_waSnsDiff
   mov [X+CSD_1_waSnsDiff+LSB], A 
   RAM_SETPAGE_IDX >CSD_1_waSnsResult
   mov A, [X+CSD_1_waSnsResult+MSB]
   RAM_SETPAGE_IDX >CSD_1_waSnsBaseline
   sbb A, [X+CSD_1_waSnsBaseline+MSB]
   RAM_SETPAGE_IDX >CSD_1_waSnsDiff
   mov [X+CSD_1_waSnsDiff+MSB], A

   tst [X+CSD_1_waSnsDiff+MSB], 80h						                                      ; Is difference negative?
   jnz .IsNegative

IF (CSD_1_AUTORESET)
   cmp [X+CSD_1_waSnsDiff+MSB], 0
   jz   .AddBucketLSB
   mov  A, 255
   jmp  .AddBucketConst
ELSE
   ; Compare to Noise Threshold
   cmp [X+CSD_1_waSnsDiff+MSB], 0
   jnz  .InitLowBaselineReset 
   cmp [X+CSD_1_waSnsDiff+LSB], NOISE_THRESHOLD
   jnc	.InitLowBaselineReset
   jz   .InitLowBaselineReset
ENDIF
   
   ; Add to the Bucket
.AddBucketLSB:
   mov A, [X+CSD_1_waSnsDiff+LSB]
.AddBucketConst:
   mov X, [CSD_1_bSensorNum]							     
   add A, 0
   rrc A															                                                        ; For slower tracking
   RAM_SETPAGE_IDX >CSD_1_baSnsBucket                     
   add [X+CSD_1_baSnsBucket], A
   jc  .DoInc
   cmp [X+CSD_1_baSnsBucket], BASELINE_UPDATE_THRESHOLD
   jc .EndBucket
.DoInc:
   ; Increment Baseline
   mov [X+CSD_1_baSnsBucket], 0
   mov A, X
   asl A
   mov X, A
   RAM_SETPAGE_IDX >CSD_1_waSnsBaseline
   add [X+CSD_1_waSnsBaseline+LSB], 1 
   adc [X+CSD_1_waSnsBaseline+MSB], 0
   
.EndBucket:
IF (CSD_1_AUTORESET)
   mov  A, [CSD_1_bSensorNum]
   asl  A
   mov  X, A
   ; Compare to Noise Threshold
   RAM_SETPAGE_IDX >CSD_1_waSnsBaseline
   cmp [X+CSD_1_waSnsDiff+MSB], 0
   jnz  .InitLowBaselineReset 
   cmp [X+CSD_1_waSnsDiff+LSB], NOISE_THRESHOLD
   jnc	.InitLowBaselineReset
   jz   .InitLowBaselineReset
ELSE
ENDIF
   jmp .SetDifferenceToZero

.IsNegative:
   ; Compare to Negative Noise Threshold
   cmp [X+CSD_1_waSnsDiff+MSB], FFh
   jnz  .CheckLowBaseline 
   cmp [X+CSD_1_waSnsDiff+LSB], (FFh - NEGATIVE_NOISE_THRESHOLD)
   jnc	.LowerBaseline
.CheckLowBaseline:
   ; Set difference to zero
   RAM_SETPAGE_IDX >CSD_1_waSnsDiff
   mov [X+CSD_1_waSnsDiff+LSB], 0
   mov [X+CSD_1_waSnsDiff+MSB], 0
   ; Check Low Baseline Reset
   mov A, X
   asr A
   mov X, A
   RAM_SETPAGE_IDX >CSD_1_baLowBaselineReset
   mov A, [X+CSD_1_baLowBaselineReset]
   dec A
   mov [X+CSD_1_baLowBaselineReset], A
   push A
   mov A, X
   asl A
   mov X, A
   pop A
   jnz .EndofUpdateSensorBaseline

.LowerBaseline:
   RAM_SETPAGE_IDX >CSD_1_waSnsResult
   mov A, [X+CSD_1_waSnsResult+LSB]
   RAM_SETPAGE_IDX >CSD_1_waSnsBaseline
   mov [X+CSD_1_waSnsBaseline+LSB], A
   RAM_SETPAGE_IDX >CSD_1_waSnsResult
   mov A, [X+CSD_1_waSnsResult+MSB]
   RAM_SETPAGE_IDX >CSD_1_waSnsBaseline
   mov [X+CSD_1_waSnsBaseline+MSB], A

.SetDifferenceToZero:
   ; Set difference to zero
   mov A, [CSD_1_bSensorNum]
   asl A
   mov X,A
   RAM_SETPAGE_IDX >CSD_1_waSnsDiff
   mov [X+CSD_1_waSnsDiff+LSB], 0
   mov [X+CSD_1_waSnsDiff+MSB], 0
.InitLowBaselineReset:
   mov A, X
   asr A
   mov X, A
   RAM_SETPAGE_IDX >CSD_1_LowBaselineReset
   mov [X+CSD_1_baLowBaselineReset], CSD_1_LowBaselineReset
          
.EndofUpdateSensorBaseline:
   RAM_EPILOGUE RAM_USE_CLASS_3
   ret

.ENDSECTION

.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSD_1_bIsSensorActive(BYTE bSensorNum)
;
;  DESCRIPTION:
;      Returns state of one sensor.	Updates the baSnsOnMask array. 
;      Implements hysteresis based on the Hysteresis parameter.
;-----------------------------------------------------------------------------
;  STACK USAGE: 3 BYTES
;
;  ARGUMENTS: 
;      A => sensor index

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产免费久久| 国产美女精品人人做人人爽 | 日韩一级免费一区| 国产精品视频观看| 久久超碰97中文字幕| 欧洲精品视频在线观看| 国产欧美一区二区在线观看| 亚洲成人7777| 日本韩国一区二区| 国产精品久久久久天堂| 精品一区二区三区在线播放| 欧美日韩国产美女| 亚洲天堂福利av| 国产成人精品免费在线| 欧美精品一区二区三区蜜桃| 午夜精品国产更新| 欧美午夜精品免费| 亚洲区小说区图片区qvod| 国产精品一品视频| 久久亚洲春色中文字幕久久久| 亚洲高清一区二区三区| 欧美影院一区二区三区| 最近日韩中文字幕| 成人激情黄色小说| 欧美激情一区二区三区不卡| 国产盗摄精品一区二区三区在线 | 自拍偷拍国产精品| 高潮精品一区videoshd| xvideos.蜜桃一区二区| 美女网站一区二区| 日韩欧美一级精品久久| 另类成人小视频在线| 日韩视频免费观看高清完整版| 日本伊人午夜精品| 日韩欧美久久一区| 激情久久五月天| www国产精品av| 国产精品亚洲人在线观看| 久久久久久黄色| 国产精品77777| 欧美国产日韩在线观看| 99久久er热在这里只有精品66| 国产精品亲子伦对白| 成人精品视频一区| 亚洲老司机在线| 欧美在线|欧美| 五月婷婷另类国产| 精品久久久三级丝袜| 成人性视频免费网站| 亚洲美女区一区| 欧美亚洲国产怡红院影院| 天天亚洲美女在线视频| 日韩西西人体444www| 国产成人aaaa| 亚洲精品乱码久久久久久黑人| 欧美群妇大交群中文字幕| 韩国女主播一区二区三区| 国产精品第五页| 欧美天天综合网| 狠狠色丁香久久婷婷综合丁香| 国产日韩精品视频一区| 欧美性一级生活| 精久久久久久久久久久| 亚洲视频免费看| 欧美一区二区三区人| 成人av在线播放网址| 日韩高清在线一区| 国产精品久久久久婷婷二区次| 欧美另类久久久品| 成人免费视频app| 天堂久久久久va久久久久| 国产婷婷一区二区| 欧美精品三级日韩久久| 成人性生交大片免费看在线播放| 亚洲免费在线播放| 亚洲精品在线免费观看视频| 欧美伊人久久久久久久久影院| 国产自产视频一区二区三区| 亚洲高清一区二区三区| 国产视频亚洲色图| 欧美高清视频不卡网| 91视频com| 国产福利91精品一区二区三区| 香蕉乱码成人久久天堂爱免费| 国产精品乱码人人做人人爱 | 日本一区二区视频在线| 制服.丝袜.亚洲.中文.综合| 99国产精品久久久久久久久久久| 久久精品国产**网站演员| 一区二区在线看| 中文字幕乱码亚洲精品一区| 欧美本精品男人aⅴ天堂| 色系网站成人免费| 大陆成人av片| 国产v综合v亚洲欧| 精品在线免费观看| 日本va欧美va精品| 亚洲综合在线电影| 成人免费在线视频观看| 国产欧美一区二区三区鸳鸯浴| 日韩欧美电影一区| 91麻豆精品国产91久久久久久久久 | 国产美女av一区二区三区| 日韩在线卡一卡二| 午夜a成v人精品| 亚洲午夜精品在线| 一区二区三区在线影院| 亚洲图片激情小说| 亚洲欧美一区二区视频| 日韩伦理电影网| 亚洲欧美一区二区三区孕妇| 国产精品久久久久久久久久免费看| 久久婷婷一区二区三区| 精品久久人人做人人爰| 精品女同一区二区| 久久亚洲捆绑美女| 欧美国产精品一区二区| 国产视频在线观看一区二区三区 | 成人黄色电影在线 | 97久久人人超碰| av男人天堂一区| 欧美男男青年gay1069videost | 日本乱码高清不卡字幕| 色噜噜夜夜夜综合网| 在线视频你懂得一区二区三区| 91国产福利在线| 欧美另类高清zo欧美| 日韩欧美一区在线| 久久精品一区八戒影视| 国产清纯美女被跳蛋高潮一区二区久久w| 久久网站最新地址| 中文字幕亚洲精品在线观看| 亚洲欧美福利一区二区| 亚洲高清在线精品| 国模少妇一区二区三区| 成人精品一区二区三区四区| 99精品国产一区二区三区不卡| 在线视频一区二区三| 日韩一区二区在线观看| 久久久91精品国产一区二区精品| 中文字幕日韩精品一区| 亚洲国产欧美日韩另类综合| 精品中文字幕一区二区小辣椒| 岛国av在线一区| 欧美亚洲综合网| 亚洲精品一区二区三区福利| 中文字幕一区不卡| 日韩电影在线免费观看| 国产精品一区二区在线播放| 色综合天天综合网天天看片| 欧美群妇大交群中文字幕| www国产精品av| 亚洲一区二区在线视频| 精品一区精品二区高清| 99久久精品免费精品国产| 欧美一区三区二区| 国产精品久久久久久久久果冻传媒| 亚洲视频一区在线| 狠狠狠色丁香婷婷综合激情 | av亚洲精华国产精华| 欧美精品色综合| 亚洲欧洲精品一区二区精品久久久| 水蜜桃久久夜色精品一区的特点| 国产精品一级片在线观看| 欧美日韩成人综合天天影院| 国产精品久久久久aaaa樱花| 日本最新不卡在线| 色综合久久88色综合天天6| 欧美精品一区视频| 亚洲动漫第一页| 99久久精品免费| 久久久久久麻豆| 日本欧美韩国一区三区| 91国偷自产一区二区三区成为亚洲经典| 精品国产凹凸成av人网站| 性欧美疯狂xxxxbbbb| 色88888久久久久久影院按摩| 日本一区二区视频在线| 国产美女娇喘av呻吟久久| 日韩一二三区不卡| 日韩av电影天堂| 欧美色老头old∨ideo| 亚洲精品v日韩精品| 成人久久久精品乱码一区二区三区| 日韩一区二区免费视频| 五月天视频一区| 欧美日韩一区二区在线观看视频| 亚洲日本在线观看| 成人美女在线视频| 亚洲国产精品99久久久久久久久| 韩国av一区二区| 精品国产乱码久久久久久图片| 午夜影视日本亚洲欧洲精品| 91成人国产精品| 亚洲色图.com| 在线观看亚洲一区| 亚洲精品久久久蜜桃| 日本高清免费不卡视频| 夜夜嗨av一区二区三区| 欧美亚洲动漫精品|