|
READ_TEMP: ;讀1820內(nèi)部溫度子程序.
CALL RESET
JB 70h,EXT1
CALL SKIP_ROM
CALL TEMP_CONV ;溫度AD變換
CALL DELAY_600MS
CALL RESET
CALL SKIP_ROM
CALL TEMP_GET ;發(fā)取溫度的命令
CALL READ ;接收...
EXT1:
RET
SKIP_ROM:;跳過(guò)ROM檢測(cè)
MOV A,#0CCH ;#0CCH為跳過(guò)rom命令
CALL WRITE
RET
RECALL_EPROM:;重調(diào)Eprom
MOV A,#0B8H
CALL WRITE
RET
TEMP_CONV:
MOV A,#44H ;AD變換
CALL WRITE
RET
TEMP_GET:
MOV A ,#0BEH;讀18b20命令
CALL WRITE
RET
;********* 18B20基本時(shí)序子程序
RESET: ;初始化子程序
SETB P1.2
NOP
CLR P1.2 ;拉低
MOV R3,#150 ; *4=600US
CALL DELAY_BY_R3
SETB P1.2;拉高
MOV R3,#15 ; 60US
CALL DELAY_BY_R3
MOV R3,#60 ;4個(gè)周期*60=240US內(nèi)檢測(cè)
A1: JNB P1.2,A2 ;檢測(cè)到低平信號(hào)
DJNZ R3,A1 ;如果沒(méi)有應(yīng)答的低電平信號(hào),返回A1重新檢測(cè),超時(shí)后下一行,
SETB 70h ;DS1820不存在.
JMP A3
A2: CLR 70h
MOV R3,120;240US;等恢復(fù)時(shí)間2*120=240us
DJNZ R3, $
A3:
RET
WRITE:
MOV R2,#8;一個(gè)字節(jié)為8位
CLR C ;C位清0 C位用來(lái)放A的一位數(shù)據(jù),用移位的方法放入C
B1: SETB P1.2
NOP
CLR P1.2
MOV R3,#4 ;16US
CALL DELAY_BY_R3
RRC A;把A中的數(shù)送入C
MOV P1.2,C ;把C送入總線
MOV R3,#12;48US(一位數(shù)據(jù)的發(fā)送:60us<tx<120us)
CALL DELAY_BY_R3
SETB P1.2 ;拉高1us結(jié)束一位
NOP
DJNZ R2,B1
RET
READ:
MOV R1,#4 ;接收4個(gè)字節(jié)數(shù)據(jù)依次是1.低位 2.高位. 3.高限 4.低限
MOV R0,#28H;低位放28H;高位放29h (1. 28H,2. 29H 3. 2AH 4. 2BH )
C0: MOV R2,#8;一字節(jié)數(shù)據(jù)8位
C1: CLR C ;清除C
SETB P1.2
NOP
NOP
CLR P1.2 ;拉低.
NOP ;1us秒后拉高?
SETB P1.2
MOV R3,#4 ;16us后采數(shù)據(jù)
CALL DELAY_BY_R3
MOV C,P1.2 ;讀出18b20的數(shù)據(jù)
RRC A ;移入A
MOV R3,#12;48US恢復(fù)時(shí)間
CALL DELAY_BY_R3
DJNZ R2,C1 ;一個(gè)字節(jié)收完
MOV @R0,A ;移入存儲(chǔ)位
INC R0 ;下一位;29h
DJNZ R1,C0 ;全部取完嗎?沒(méi)有重復(fù)
RET
END
小白一個(gè),程序出現(xiàn)如下錯(cuò)誤
CALL DELAY_600MS
CALL DELAY_BY_R3
CALL DELAY_BY_R3
CALL DELAY_BY_R3
CALL DELAY_BY_R3
STARTUP.A51(6): error A45: UNDEFINED SYMBOL (PASS-2)
STARTUP.A51(35): error A45: UNDEFINED SYMBOL (PASS-2)
STARTUP.A51(38): error A45: UNDEFINED SYMBOL (PASS-2)
STARTUP.A51(56): error A45: UNDEFINED SYMBOL (PASS-2)
STARTUP.A51(60): error A45: UNDEFINED SYMBOL (PASS-2)
STARTUP.A51(77): error A45: UNDEFINED SYMBOL (PASS-2)
STARTUP.A51(81): error A45: UNDEFINED SYMBOL (PASS-2)
請(qǐng)問(wèn)大神們應(yīng)該如何修改,這個(gè)應(yīng)該怎么定義
|
|