📄 sys_adc.asm
字号:
;==========================================================================================; SH69P822;; (c) Copyright 2006-2007, Sino Wealth Microelectronics Corporation Limited; All Rights Reserved;; module name : Sys_ADC.asm version : 1.0; function : ; by : CLR; in : 2007-02-13;;==========================================================================================;==========================================================================================; ADCProcessor;Function: after each ADC is done,insert the imcoming rzADC_Data[H,L] to an array which; contain 5 valueBuf and they're sort from the smllest to the biggest,; if all 5 ADC is done,that's to say all 5 incoming rzADC_Data[H,L] is sorted and; stored in this array,we get a middle one value as the tempertary ADC result ; this tempertary ADC result may not be a stable one,it must endure the debounce ; process to certify it is a stable AD result.; ;the sort process is defined in this file and the debounce process defined in IO_ScanRT.asm;==========================================================================================ADCProcessor: lda rzADC_GODONE ,0 ba3 ADCProcessor_Over ADC_SaveResult: lda zADC_Times ,0 bnz ?notFirst ldi zWk4 ,0x00 jmp ?saveData ?notFirst: sta zWk2 ,0 sbim zWk2 ,0x01 ?compare: ldi rzDPL ,zADCBuf&0x0f ldi rzDPM ,(zADCBuf>>4)&0x07 ldi rzDPH ,(zADCBuf>>7)&0x07 lda zWk2 ,0 sta zWk0 ,0 addm zWk0 ,0 addm rzDPL ,0 eor rzDPL ,0 adcm rzDPM ,0 lda rzINX ,0 sta zWk0 ,0 adim rzDPL ,0x01 eor rzDPL ,0 adcm rzDPM ,0 lda rzINX ,0 sta zWk1 ,0 lda zWk0 ,0 sub rzADC_DATAL ,0 lda zWk1 ,0 sbc rzADC_DATAH ,0 bc ?beginMove ?continueCompare: sbim zWk2 ,0x01 bnc ?beginMove jmp ?compare ?beginMove: sbi zADC_Times ,0x01 sta zWk3 ,0 adi zWk2 ,0x01 sta zWk4 ,0 ?move: ldi rzDPL ,zADCBuf&0x0f ldi rzDPM ,(zADCBuf>>4)&0x07 ldi rzDPH ,(zADCBuf>>7)&0x07 lda zWk3 ,0 sta zWk0 ,0 addm zWk0 ,0 addm rzDPL ,0 eor rzDPL ,0 adcm rzDPM ,0 lda rzINX ,0 sta zWk0 ,0 adim rzDPL ,0x01 eor rzDPL ,0 adcm rzDPM ,0 lda rzINX ,0 sta zWk1 ,0 adim rzDPL ,0x01 eor rzDPL ,0 adcm rzDPM ,0 lda zWk0 ,0 sta rzINX ,0 adim rzDPL ,0x01 eor rzDPL ,0 adcm rzDPM ,0 lda zWk1 ,0 sta rzINX ,0 lda zWk3 ,0 baz ?saveData sbim zWk3 ,0x01 lda zWk4 ,0 sub zWk3 ,0 bc ?move ?saveData: ldi rzDPL ,zADCBuf&0x0f ldi rzDPM ,(zADCBuf>>4)&0x07 ldi rzDPH ,(zADCBuf>>7)&0x07 lda zWk4 ,0 addm zWk4 ,0 addm rzDPL ,0 eor rzDPL ,0 adcm rzDPM ,0 lda rzADC_DATAL ,0 sta rzINX ,0 sta zWk0 ,0 adim rzDPL ,0x01 eor rzDPL ,0 adcm rzDPM ,0 lda rzADC_DATAH ,0 sta rzINX ,0 ?saveOK: sbi zADC_Times ,0x04 bnz Restart_ADC ldi zADC_Times ,0x0f lda zADCBuf+4 ,0 sta zADCValue ,0 lda zADCBuf+5 ,0 sta zADCValue+1 ,0Restart_ADC: adim zADC_Times ,0x01 orim rzADC_GODONE ,1000b ADCProcessor_Over: jmp Exit_ADCProcessor;--------------------------------------End--------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -