怎么樣將兩個(gè)A/D采樣的數(shù)據(jù)在MCU內(nèi)部進(jìn)行減法運(yùn)算啊!
現(xiàn)在將兩個(gè)A/D口采樣的電壓需要做減法運(yùn)算,得到一個(gè)結(jié)果與一個(gè)值比較,做條件判斷!那是將采樣數(shù)據(jù)儲(chǔ)存在工作寄存器里面還是一個(gè)地址里面????怎么做啊??我現(xiàn)在困在這里不知道怎么辦了!
全部回復(fù)(3)
正序查看
倒序查看
@maychang
做減法時(shí)當(dāng)然要將數(shù)據(jù)放到工作寄存器里,但采樣后數(shù)據(jù)不一定放在工作寄存器里,完全可以放到片內(nèi)RAM里.兩個(gè)數(shù)據(jù)要和一個(gè)值比較,這個(gè)值是什么類(lèi)型?如果是立即數(shù),當(dāng)然是在程序里,也就是在ROM里.
我是將兩個(gè)A/D口采樣的電壓值轉(zhuǎn)換成16進(jìn)制數(shù)分高8位,低8位放在4個(gè)寄存器里面,再和一個(gè)電壓(16進(jìn)制)比較,即相減!
LD Acc1, #1 ; 1th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc9, CellVoltageL
LD Acc10, CellVoltageH
;---------------
LD Acc1, #0 ; 0th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc7, CellVoltageL
LD Acc8, CellVoltageH
SUB Acc9, Acc7
SBC Acc10, Acc8
SUB Acc9, #>41 ; 0.2v
SBC Acc10, #<41
JR ULT, CJV_Down_0v2
INC Counter_Up_0v2
CP Counter_Up_0v2,#2 ;
JR ULT, DCC_Exit
LD Counter_OutputUp, #51h
JR CJV_Exit
CJV_Down_0v2:
CLR Counter_OutputUp
CLR Counter_Up_0v2
CJV_Exit:
RET
LD Acc1, #1 ; 1th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc9, CellVoltageL
LD Acc10, CellVoltageH
;---------------
LD Acc1, #0 ; 0th channel
LD Acc0, #6 ; 6 sample times
CALL AdcConvert
LD Acc0, #6 ; 6 adjust number
CALL AdcDataAdjust
CALL AverageValue
LD CellVoltageL, AverageValueL
LD CellVoltageH, AverageValueH
LD Acc7, CellVoltageL
LD Acc8, CellVoltageH
SUB Acc9, Acc7
SBC Acc10, Acc8
SUB Acc9, #>41 ; 0.2v
SBC Acc10, #<41
JR ULT, CJV_Down_0v2
INC Counter_Up_0v2
CP Counter_Up_0v2,#2 ;
JR ULT, DCC_Exit
LD Counter_OutputUp, #51h
JR CJV_Exit
CJV_Down_0v2:
CLR Counter_OutputUp
CLR Counter_Up_0v2
CJV_Exit:
RET
0
回復(fù)