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

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

?? csr_1.asm

?? 此文件是一個源程序代碼
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;    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.
;
 CSR_1_EnableSwitch:
_CSR_1_EnableSwitch:

	RAM_PROLOGUE RAM_USE_CLASS_4
    RAM_SETPAGE_CUR >CSR_1_bBitMask
                                                 ; Setup Mux for switch
    mov  [CSR_1_bBitMask],A                      ; Store bit mask in temp location
   	M8C_SetBank1
    mov  A,reg[X+MUX_OFFSET]
    or   A,[CSR_1_bBitMask]
    mov  reg[X+MUX_OFFSET],A
	M8C_SetBank0

	and reg[CSR_1_ACE_CONTROL1_REG], ~0x40          ; turn off comparator output
    CSR_1_Start_CMP_M                            ; Enable power of comparator
   
    mov  A,X                                     ; Multiply port number by four for registor addresses
    asl  A
    asl  A
    mov  X,A                                     ; Restore Port address in X

                                                 ; Set mode do 110  (Hi-Z Analog)
    mov  A,reg[X+DM2_OFFSET]                     ; Set DM2 to 1
    or   A,[CSR_1_bBitMask]
    mov  reg[X+DM2_OFFSET],A

   	M8C_SetBank1
    mov  A,reg[X+DM1_OFFSET]                     ; Set DM1 to 1
    or   A,[CSR_1_bBitMask]
    mov  reg[X+DM1_OFFSET],A

	or reg[CSR_1_ACE_CONTROL1_REG], 0x40            ; turn on comparator output

    xor  [CSR_1_bBitMask],0xFF                   ; Invert bitmask
    mov  A,reg[X+DM0_OFFSET]                     ; Clear DM0 bit to 0
    and  A,[CSR_1_bBitMask]
    mov  reg[X+DM0_OFFSET],A
	M8C_SetBank0

	RAM_EPILOGUE RAM_USE_CLASS_4
    ret

.ENDSECTION



.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSR_1_DisableSwitch(BYTE bMask, BYTE bPort)
;
;  DESCRIPTION:
;    Configures switch not to be an input.  The Drive mode is changed to strong
;    and set to zero (001).  The mux is also turned off.
;-----------------------------------------------------------------------------
;
;  ARGUMENTS:    
;          X =>  Port Number for given key
;          A =>  Bit mask for given switch
;
;  RETURNS:      none    
;
;  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.
;
 CSR_1_DisableSwitch:
_CSR_1_DisableSwitch:

	RAM_PROLOGUE RAM_USE_CLASS_4
    RAM_SETPAGE_CUR >CSR_1_bBitMask
                                                 ; Disconnect switch from mux
    cpl  A                                       ; Invert bitmask
    mov  [CSR_1_bBitMask],A                      ; Store bit mask in temp location
   	M8C_SetBank1
    mov  A,reg[X+MUX_OFFSET]
    and  A,[CSR_1_bBitMask]
    mov  reg[X+MUX_OFFSET],A
   	M8C_SetBank0
    
    mov  A,X                                     ; Multiply port number by for for registor addresses
    asl  A
    asl  A
    mov  X,A                                     ; Restore Port address in X

                                                 ; Write a 0 to the bit
    mov  A,reg[X+DR_OFFSET]        
    and  A,[CSR_1_bBitMask]
    mov  reg[X+DR_OFFSET],A
                                                 ; Set mode do 001  (Digital Strong)
    mov  A,reg[X+DM2_OFFSET]                     ; Set DM2 to 0
    and  A,[CSR_1_bBitMask]
    mov  reg[X+DM2_OFFSET],A

   	M8C_SetBank1
    mov  A,reg[X+DM1_OFFSET]                     ; Set DM1 to 0
    and  A,[CSR_1_bBitMask]
    mov  reg[X+DM1_OFFSET],A

    xor  [CSR_1_bBitMask],0xFF                   ; Invert bitmask back to normal
    mov  A,reg[X+DM0_OFFSET]                     ; Set DM0 bit to 1
    or   A,[CSR_1_bBitMask]
    mov  reg[X+DM0_OFFSET],A
	M8C_SetBank0

	RAM_EPILOGUE RAM_USE_CLASS_4
    ret
.ENDSECTION

.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSR_1_StartScan(BYTE bStrtIdx, BYTE bSwCnt, BYTE bMode)
;
;  DESCRIPTION:
;  This function starts scanning of a switch or set of switches. The three
;  parameters allow scanning to start at any location in the switch array
;  and scan n keys, either once or continuously.  this function assumes
;  that the start function was executed prior to it's execution. 
; 
;-----------------------------------------------------------------------------
;
;  ARGUMENTS:    
;      bStrtIdx [SP-3]  => Starting Switch Index
;      bSwCnt   [SP-4]  => Switch count to scan
;      bMode    [SP-5]  => Scan mode
;           0x00  => Scan key/s just one time.
;           0x01  => Scan continuous
;
;  RETURNS:      None
;  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.
;
; Stack offset constants
SSC_STRT_IDX:    equ  -3
SSC_SW_CNT:      equ  -4
SSC_MODE:        equ  -5

 CSR_1_StartScan:
_CSR_1_StartScan:
   RAM_PROLOGUE RAM_USE_CLASS_4
   RAM_SETPAGE_CUR >CSR_1_bfStatus 

   CSR_1_DisableInt_M                            ; Disable Interrupts 
   CSR_1_Stop_M                                  ; Stop counter and scan pwm
   mov   X, SP                                   ; Get pointer to parameters
   mov   A, [X+SSC_STRT_IDX]                     ; Move Start Index parameter to static variable.
   mov   [CSR_1_bScanStart],A

   add   A, [X+SSC_SW_CNT]                       ; Add Switch count to Index to get last switch + 1
   dec   A                                       ; Make Last switch, not last siwtch + 1
   mov   [CSR_1_bScanEnd],A                      ; Store End scan in static variable

   mov   A, [X+SSC_MODE]                         ; Move mode into static status variable
   and   A,0x01                                  ; Mask off only the flag
   mov   [CSR_1_bfStatus],A

  ; Reset counter
   mov   reg[CSR_1_CTR_PERIOD_LSB_REG],0xFF
   mov   reg[CSR_1_CTR_PERIOD_MSB_REG],0xFF
   
   mov   A, [CSR_1_bPWMPeriod]
   mov   reg[CSR_1_PWM_PERIOD_REG], A            ; Set PWM period

   or   [CSR_1_bfStatus],CSR_1_SCAN_ACTIVE       ; Set scan active flag

   CSR_1_Start_M                                 ; Start counter and scan pwm
   CSR_1_EnableInt_M                             ; Enable the scan pwm IRQ

   mov   A,[CSR_1_bScanStart]
   mov   [CSR_1_bSwitchNum],A                    ; Set up for first switch
   lcall CSR_1_iGetPortPin                       ; Get switch port and mask
   lcall CSR_1_EnableSwitch                      ; Enable first switch

   RAM_EPILOGUE RAM_USE_CLASS_4
   ret

.ENDSECTION



.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSR_1_StopScan(void)
;
;  DESCRIPTION:
;   This functions stops the switch scanning process in an orderly method.
;    
; 
;-----------------------------------------------------------------------------
;
;  ARGUMENTS:    None
;   
;  RETURNS:      None
;  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.
;
 CSR_1_StopScan:
_CSR_1_StopScan:
   RAM_PROLOGUE RAM_USE_CLASS_4
   RAM_SETPAGE_CUR >CSR_1_bfStatus 
   and   [CSR_1_bfStatus],~CSR_1_SCAN_CONTINUOUS 
   RAM_EPILOGUE RAM_USE_CLASS_4
   ret

.ENDSECTION

.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSR_1_GetScanStatus(void)
;
;  DESCRIPTION:
;   This function returns the scan status and resets the SCAN_SET_COMPLETE
;   bit.
;    
; 
;-----------------------------------------------------------------------------
;
;  ARGUMENTS:    None
;   
;  RETURNS:      
;     A => Scan status
;
;  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.
;
 CSR_1_GetScanStatus:
_CSR_1_GetScanStatus:
   RAM_PROLOGUE RAM_USE_CLASS_4
   RAM_SETPAGE_IDX >CSR_1_bfStatus 

   CSR_1_DisableInt_M
   mov   A,[CSR_1_bfStatus] 
   and   [CSR_1_bfStatus],~CSR_1_SCAN_SET_COMPLETE             ; Clear scan complete flag
   tst   [CSR_1_bfStatus],CSR_1_SCAN_ACTIVE                    ; Check if scanning is active
   jz    .NoReEnable                                           ; Don't re-enable if not running 
   CSR_1_EnableInt_M
.NoReEnable:

   RAM_EPILOGUE RAM_USE_CLASS_4
   ret
.ENDSECTION


.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSR_1_iReadSwitch(BYTE bSwitch)
;
;  DESCRIPTION:
;     Returns the key scan value in A (LSB) and X (MSB)      
;-----------------------------------------------------------------------------
;
;  ARGUMENTS:   
;    A = Switch number
;  RETURNS:     
;    Scan value of switch LSB in A and MSB in X
;  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.
;
 CSR_1_iReadSwitch:
_CSR_1_iReadSwitch:
   RAM_PROLOGUE RAM_USE_CLASS_3
   RAM_SETPAGE_IDX >CSR_1_iaSwResult 
   asl   A                                       ; Multiply by two since results are INTs
   mov   X,A
   CSR_1_DisableInt_M
   mov   A,[X+(CSR_1_iaSwResult+LSB)]
   mov   X,[X+(CSR_1_iaSwResult+MSB)]
   CSR_1_EnableInt_M
   RAM_EPILOGUE RAM_USE_CLASS_3
   ret
.ENDSECTION

.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSR_1_SetDacCurrent(BYTE bValue, BYTE bRange)
;
;  DESCRIPTION:
;      This function sets the DAC current for the oscillator.  
;     
;-----------------------------------------------------------------------------
;
;  ARGUMENTS:    
;        A => Dac Value 0 to 255
;        A => Dac Range 0 => low range, 1 => High range
;  RETURNS:    
;        none
;
;  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.
;
 CSR_1_SetDacCurrent:
_CSR_1_SetDacCurrent:

  RAM_PROLOGUE RAM_USE_CLASS_1
   mov    reg[DAC_D], A                          ; Set Dac at medium level
   mov    A,X                                    ; Put Dac range in A

   M8C_SetBank1
   and    A,0x01                                 ; Check for high range
   jz     .SET_LOW_RANGE
   or     reg[DAC_CR],0x08                       ; Set high range
   jmp    .SDC_DONE

.SET_LOW_RANGE:
   and    reg[DAC_CR],~0x08                      ; Set low range

.SDC_DONE:
   M8C_SetBank0
   RAM_EPILOGUE RAM_USE_CLASS_1
   ret
.ENDSECTION

.SECTION
;-----------------------------------------------------------------------------
;  FUNCTION NAME: CSR_1_setScanSpeed(BYTE bDivider)
;
;  DESCRIPTION:
;      This function sets the speed of the button scan.
;      In frequency mode, this value sets the period of the PWM signal that
;      gates the frequency measurement of the cap sense oscillator.  A larger
;      value for bDivider allows the counter to accumulate more oscillator
;      counts for more resolution.
;      In period mode, bDivider sets the prescaller for the cap sense oscillator.
;      The larger this value the more periods that the 24 MHz clock is counted.
;     
;-----------------------------------------------------------------------------
;
;  ARGUMENTS:    
;        A => PWM period,  PWM compare = period - 6
;  RETURNS:    
;       none
;
;  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.
;
 CSR_1_SetScanSpeed:
_CSR_1_SetScanSpeed:

  RAM_PROLOGUE RAM_USE_CLASS_4
   RAM_SETPAGE_CUR >CSR_1_bPWMPeriod 
   mov    [CSR_1_bPWMPeriod], A
   mov    reg[CSR_1_PWM_PERIOD_REG], A           ; Set PWM period
   sub    A,2                                        ; Allow enough time to enter the interrupt and shutoff the PWM
   mov    reg[CSR_1_PWM_COMPARE_REG], A          ; Set PWM compare time         
   RAM_EPILOGUE RAM_USE_CLASS_4
   ret
.ENDSECTION

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产毛片aaaaa无费看| 精品国产91久久久久久久妲己| 亚洲亚洲精品在线观看| 日韩精品自拍偷拍| 91无套直看片红桃| 国产专区综合网| 丝瓜av网站精品一区二区| 国产精品视频在线看| 日韩欧美一区在线| 欧美无砖专区一中文字| 国产99久久久精品| 另类小说图片综合网| 亚洲精品欧美专区| 国产日韩欧美电影| 欧美一二三四在线| 欧美日韩在线播放三区四区| 成a人片国产精品| 国产一区二区女| 青草国产精品久久久久久| 一区二区三区免费| 欧美激情一区二区三区蜜桃视频| 欧美一区在线视频| 欧美综合在线视频| 色诱视频网站一区| av爱爱亚洲一区| 国产成人av自拍| 狠狠色狠狠色综合系列| 日韩综合在线视频| 亚洲大片精品永久免费| 亚洲精品精品亚洲| 亚洲丝袜美腿综合| 中文字幕一区免费在线观看| 久久久久青草大香线综合精品| 欧美精品国产精品| 欧美乱熟臀69xxxxxx| 欧美在线观看视频一区二区| 91视视频在线观看入口直接观看www | 色综合久久久久综合99| 粉嫩嫩av羞羞动漫久久久| 精品一区二区在线观看| 久久草av在线| 久久99国产精品久久99 | av午夜一区麻豆| 高清不卡在线观看| 成人精品视频一区二区三区| 国产成人精品影视| 狠狠色丁香九九婷婷综合五月| 麻豆成人久久精品二区三区小说| 日韩中文字幕不卡| 麻豆精品一区二区综合av| 久久99久久精品欧美| 久久99久久精品| 国产精品亚洲人在线观看| 国内精品自线一区二区三区视频| 精品亚洲国内自在自线福利| 国产一区二区伦理片| 国产精品一卡二卡在线观看| 国产裸体歌舞团一区二区| 国产精品1区2区3区| 成人午夜又粗又硬又大| 91女厕偷拍女厕偷拍高清| 一本大道久久a久久精品综合| 欧美伊人久久大香线蕉综合69| 欧美体内she精高潮| 欧美一级片在线观看| 精品久久一区二区三区| 亚洲国产成人一区二区三区| 综合色天天鬼久久鬼色| 亚洲小少妇裸体bbw| 久久99精品国产麻豆婷婷洗澡| 国产麻豆成人精品| 色婷婷av一区二区| 日韩精品一区二区三区中文不卡| 久久久不卡影院| 亚洲精品国产无套在线观| 青青草伊人久久| 东方欧美亚洲色图在线| 在线一区二区视频| 欧美电影免费观看高清完整版在线| 欧美精品一区二区三| 日韩理论在线观看| 麻豆中文一区二区| 成人激情av网| 91精品在线免费观看| 国产人成一区二区三区影院| 亚洲欧美国产高清| 久久av中文字幕片| 91在线小视频| 精品美女被调教视频大全网站| 国产精品美女一区二区| 日韩成人av影视| aaa国产一区| 精品国产91九色蝌蚪| 一区二区三区 在线观看视频| 另类成人小视频在线| 色诱视频网站一区| 久久精品男人天堂av| 亚洲国产精品一区二区www在线| 狠狠色狠狠色综合| 欧美日本一区二区三区四区| 国产精品无人区| 久久 天天综合| 欧美日韩大陆在线| 亚洲免费观看在线观看| 国产成人丝袜美腿| 精品精品国产高清一毛片一天堂| 亚洲一区免费视频| 成人黄色电影在线 | 色综合亚洲欧洲| 久久久久久夜精品精品免费| 五月天中文字幕一区二区| av电影在线观看完整版一区二区| 日韩片之四级片| 天天综合网 天天综合色| 91免费视频网址| 最新不卡av在线| 国产98色在线|日韩| 日韩视频一区二区| 一区二区高清免费观看影视大全| 国产乱码字幕精品高清av| 欧美在线一二三四区| 精品欧美一区二区久久| 亚洲成人免费影院| 91麻豆swag| 中文乱码免费一区二区| 亚洲第一精品在线| 欧美三级欧美一级| 日韩美女视频一区二区| 国产成人福利片| www成人在线观看| 狠狠色丁香婷综合久久| 538在线一区二区精品国产| 亚洲精品视频自拍| 成熟亚洲日本毛茸茸凸凹| 欧美日韩亚洲国产综合| 亚洲图片欧美综合| 91视频观看免费| 国产精品成人在线观看| 国产精品一区久久久久| 欧美一级理论性理论a| 亚洲成人综合视频| 一本大道av伊人久久综合| 亚洲国产精品99久久久久久久久| 国内外成人在线| 亚洲国产精品成人综合色在线婷婷 | 欧美高清视频不卡网| 日韩av一区二区在线影视| 欧美日韩一级黄| 亚洲第一福利一区| 欧美日韩国产一区| 亚洲综合在线观看视频| 色呦呦国产精品| 亚洲欧洲国产日韩| av午夜一区麻豆| 国产清纯白嫩初高生在线观看91| 国产成人av资源| 国产精品电影一区二区| av成人老司机| 一区二区三区在线免费视频| 欧美精品乱人伦久久久久久| 五月婷婷综合网| 91.xcao| 蜜桃一区二区三区在线| 精品欧美一区二区三区精品久久| 另类小说色综合网站| 久久日韩精品一区二区五区| 国产麻豆一精品一av一免费| 7777女厕盗摄久久久| 狠狠色狠狠色综合系列| 亚洲国产精品t66y| 色综合亚洲欧洲| 日精品一区二区三区| 国产无一区二区| 99精品在线观看视频| 夜夜爽夜夜爽精品视频| 欧美一区二区三区日韩视频| 国产成人av福利| 亚洲色图丝袜美腿| 欧美日韩精品欧美日韩精品一| 天天色综合成人网| 中文字幕av在线一区二区三区| 成人app软件下载大全免费| 亚洲免费在线看| 3d动漫精品啪啪1区2区免费| 国产精品亚洲人在线观看| 亚洲日本护士毛茸茸| 制服丝袜av成人在线看| 精品一区二区三区不卡| 日本一区免费视频| 日韩午夜激情免费电影| 国产suv一区二区三区88区| 亚洲精品第一国产综合野| 欧美日韩成人一区二区| 国产黄色成人av| 亚洲综合免费观看高清完整版 | 91精品国产综合久久精品性色| 亚洲chinese男男1069| 国产精品色在线| 欧美另类videos死尸| 国产综合一区二区|