?? adcon.inc
字號:
;*********************************************************
; Rewriter in 2000,5,20
; AD Converter Program
; Room Pipe Temp AN7
; Room_Temp AN6
; Result Temp AN5
; Defrost Temp AN4
; Out SIde Temp AN3
;---------------------------------------------------------
AD_Convert:
;[p3dir] = Initp3dir
LDM #00H,AD1
LDM #00H,AD2 ; bit7=0 10bit A_D
; bit7=1 8bit A_D
[ADCON] = RoomADCon ; 2000.5.12
do
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
while [ADcomp] == 0
;[AD2_buffer] =[AD2] & 00000011B
CLC
[mRoomLow] =[mRoomLow] + [AD1]
[mRoomHigh] =[mRoomHigh] + 00h with_C
[ADcomp] = 0
Pipe_Temp:
LDM #00H,AD1
LDM #00H,AD2
[ADCON] = PipeADCon
do
NOP
NOP
NOP
NOP
while [ADcomp] == 0
CLC
[mPipeLow] =[mPipeLow] + [AD1] ;
[mPipeHigh]=[mPipeHigh] + 00h with_C ;
[ADcomp] = 0 ;
INC AD_Count
;
ADCon_End: ;AD_Count是完成AD采樣255次的計數(shù)器,此計數(shù)器為0時,
if [AD_Count] == 0 ;255次采樣的累計加完成,采樣的平均值就是高位所存的
[m_RoomADval] = [mRoomHigh] ;值加上低位的近似值,低位大于等于128時,高位所存值
if [mRoomLow] >= 80H ;加1。小于則不加。然后查表比較。
inc m_RoomADval ;
endif ;
[M_PipeTemp] = [mPipeHigh] ;
if [mPipeLow] >= 80H ;
INC M_PipeTemp
endif
; LDM #00h,AD_Count
LDM #00h,mRoomHigh
ldm #00h,mRoomLow
Ldm #00h,mPipeHigh
Ldm #00h,mPipeLow
jsr AD_RoomTemp
jsr AD_PipeTemp
SEB ADconend_flag
endif
RTS
;****************************************************
; AD_RoomTemp Program For tempture M_RoomTemp
; For Display roomtem
;
;****************************************************
AD_RoomTemp:
if [m_RoomADval] < 0Dh || [m_RoomADval] > 0DAh ;0f0h ;041202用于室內(nèi)感溫包故障檢測
if [m_30sIndoorerror] > 10;30 ;連續(xù)30秒檢測到不在范圍內(nèi)就報故障
[m_30sIndoorerror]=0 ;ldm #00h, m_30sIndoorerror ;
SEB b_RoomTempError ;
endif ;
else ;
[m_30sIndoorerror]=0 ;ldm #00h, m_30sIndoorerror ; ;
clb b_RoomTempError ;
endif ;
if [m_RoomADval] <= 20 && [m_RoomADval] >= 0Dh ;
[M_RoomTemp] = 00h
jmp outroom
endif
if [m_RoomADval] <= 0DAh && [m_RoomADval] >= 209 ;
[M_RoomTemp] = 100
jmp outroom
endif
ldx #00h
macher: ;當(dāng)采樣值處在表中兩數(shù)之間的時候,采取比較法取
if [TempAD_Tab,x] < [m_RoomADval] ;表中靠近采樣值的那個值。
[A_D]=[m_RoomADval]-[TempAD_Tab,x] ;
inx ;
jmp macher ;
endif ;
[A_D]= [A_D] + [m_RoomADval] ;
if [TempAD_Tab,x] >= [A_D] && x >= 1
dex
endif
stx M_RoomTemp
outroom:
RTS
;****************************************************
; AD_pipeTemp Program For tempture Val to M_PipeTemp
; For defrost roomtem
;
;****************************************************
AD_PipeTemp:
if [M_PipeTemp] < 0Bh || [M_PipeTemp] > 0f0h ;041202用于室內(nèi)感溫包故障檢測
if [m_30sIntipeerror] > 10;30 ;
ldm #00h, m_30sIntipeerror ;
SEB b_TipeTempError ;連續(xù)30秒檢測到不在范圍內(nèi)就報故障
endif ;
else ;
ldm #00h, m_30sIntipeerror ;
clb b_TipeTempError ;
endif ;
if [M_PipeTemp] < 3CH && [M_PipeTemp] >= 0Bh ;
[m_Tpipetemp] = 00h
RTS
endif
ldx #00h
Pipecher:
if [PipeAD_Tab,x] < [M_PipeTemp]
[A_D]=[M_PipeTemp]-[PipeAD_Tab,x]
inx
jmp Pipecher
endif
[A_D]= [A_D] + [M_PipeTemp]
if [PipeAD_Tab,x] >= [A_D] && x >= 1
dex
endif
stx m_Tpipetemp
RTS
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -