【正文】
****************************************************。 R7 = 百位數(shù) MOV A, 0AH XCH A, B DIV AB 。 單字節(jié) 16 進(jìn)制轉(zhuǎn) BCD。 舍去溫度低位中小數(shù)點(diǎn)后的四位溫度數(shù)值 SWAP A MOV TEMPER_NUM, A MOV A, TEMPER_VL JNB ,TEMPER_COV。 十位數(shù)顯示符號(hào)DISPBCD2: RET。 顯示區(qū) BCD 碼溫度值刷新子程序。**********************************************************。 整數(shù)部分 ANL A, 0F0H SWAP A MOV TEMPL, A MOV A, TEMPH ANL A, 0FH SWAP A ORL A, TEMPL LCALL HEX2BCD1 MOV TEMPL, A ANL A, 0F0H SWAP A ORL A, TEMPHC 。 顯示負(fù)號(hào) SJMP TEMPC11TEMPC1: MOV TEMPHC,0BH 。 處理溫度 BCD 碼子程序。 延時(shí) 104us DJNZ R6, $ MOV A, 0BEH LCALL WRITEDS1820 。 延時(shí) 104us DJNZ R6, $ MOV A, 44H LCALL WRITEDS1820 。**********************************************************。 寫(xiě) DS18B20 的程序, 從 DS18B20 中寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)。 延時(shí) 15us DJNZ R6, $MOV C, TEMPDIN MOV R6, 3CH 。 延時(shí) 200us DJNZ R6, $ SJMP INITDS1820 RETINITDS1820OUT:SETB TEMPDIN RET。 復(fù)位 DS18B20。R7R6R5R4/R3R2=R7R6R5R4(商)...R1R0(余數(shù))DIV4BY2: MOV 46H, 20H MOV R0, 00H MOV R1, 00HDIVLOOP1: MOV A, R4 RLC A MOV R4, A MOV A, R5 RLC A MOV R5, A MOV A, R6 RLC A MOV R6, A MOV A, R7 RLC A MOV R7, A MOV A, R0 RLC A MOV R0, A MOV A, R1 RLC A MOV R1, A CLR C MOV A, R0 SUBB A, R2 MOV B, A MOV A, R1 SUBB A, R3 JC DIVLOOP2 MOV R0, B MOV R1, ADIVLOOP2: CPL C DJNZ 46H, DIVLOOP1 MOV A, R4 RLC A MOV R4, A MOV A, R5 RLC A MOV R5, A MOV A, R6 RLC A MOV R6, A MOV A, R7 RLC A MOV R7, A RET。 R7R6R5R4 = R3R2 * R1R0MUL2BY2: CLR A MOV R7, A MOV R6, A MOV R5, A MOV R4, A MOV 46H, 10HMULLOOP1: CLR C MOV A, R4 RLC A MOV R4, A MOV A, R5 RLC A MOV R5, A MOV A, R6 RLC A MOV R6, A MOV A, R7 RLC A MOV R7, A MOV A, R0 RLC A MOV R0, A MOV A, R1 RLC A MOV R1, A JNC MULLOOP2 MOV A, R4 ADD A, R2 MOV R4, A MOV A, R5 ADDC A, R3 MOV R5, A MOV A, R6 ADDC A, 00H MOV R6, A MOV A, R7 ADDC A, 00H MOV R7, AMULLOOP2: DJNZ 46H, MULLOOP1 RET。溫度與速度對(duì)應(yīng)表(30℃~91℃)TEMPR: DB 9DH,9DH,9DH,9EH,9EH,9EH,9EH,9FH,9FH,9FH,0A0H,0A0H DB 0A0H,0A1H,0A1H,0A1H,0A1H,0A2H,0A2H,0A2H,0A3H,0A3H DB 0A3H,0A4H,0A4H,0A4H,0A4H,0A5H,0A5H,0A5H,0A6H,0A6H DB 0A6H,0A7H,0A7H,0A7H,0A8H,0A8H,0A8H,0A8H,0A9H,0A9H DB 0A9H,0AAH,0AAH,0AAH,0ABH,0ABH,0ABH,0ABH,0ACH,0ACH DB 0ACH,0ADH,0ADH,0ADH,0AEH,0AEH,0AEH,0AFH,0AFH,0AFH DB 0AFH,0B0H,0B0H,0B0H,0B1H,0B1H,0B1H,0B2H,0B2H,0B2H DB 0B2H,0B3H,0B3H,0B3H,0B4H,0B4H,0B4H,0B5H,0B5H,0B5H DB 0B5H,0B6H,0B6H,0B6H,0B7H,0B7H,0B7H,0B8H,0B8H,0B8H DB 0B9H,0B9H,0B9H,0B9H,0BAH,0BAH,0BAH,0BBH,0BBH,0BBH DB 0BCH,0BCH,0BCH,0BCH,0BDH,0BDH,0BDH,0BEH,0BEH,0BEH DB 0BFH,0BFH,0BFH,0BFH,0C0H,0C0H,0C0H,0C1H,0C1H,0C1H。次次高位為零,先判斷次高位是否為不顯示 SUBB A,3CH JNZ JJ2 MOV 42H,3CH 。將溫度值轉(zhuǎn)換為對(duì)應(yīng)的速度值 MOVC A,A+DPTR MOV R0, A LCALL MUL2BY2 MOV R3, 03H MOV R2, 0E8H LCALL DIV4BY2 MOV R3, 27H MOV R2, 10H LCALL DIV4BY2 MOV A,R4 ADD A,30H MOV 40H, A MOV A,R4 JNZ JJ0 MOV 40H,3CH 。接收成功標(biāo)志 RETI。超聲波發(fā)送完畢,關(guān) T1 CLR ET1 MOV R4,0AHRETIOUT: RETI。T0 中斷,65mS 中斷一次INTT0: CLR EACLR TR0 MOV TH0,00H MOV TL0,00H SETB ET1 SETB EA SETB TR0 。重新開(kāi)啟測(cè)距定時(shí)器 MOV R2,02HLOOP: LCALL DISPLAYDJNZ R2,LOOP SJMP BEGIN1。開(kāi)啟測(cè)距定時(shí)器ABEGIN: LCALL DISPLAY JNB 23H,ABEGIN 。40KHz 初值 MOV TL1,0F4H MOV P0,0FFH MOV P1,0FFH MOV P2,0FFH MOV P3,0FFH MOV R4,0AH 。40H43H 為顯示距離存放單元MOV R7,30H 。定時(shí)器 T1 中斷ORG 0023H RETIORG 002BH RETI 。 中斷入口程序 。 處理溫度值緩存區(qū)VOUT EQU 。*************************************************************TEM