\ -------------------------------------------------------------- \ history: last revision first ALL 14:07 28AUG95 \ ALL950828 V0.06 first release \ .... \ ALL950112 V0.01 first try \ -------------------------------------------------------------- \ TMEM? DALLAS TOUCHMEMORY ALL 11:53 28AUG95 DECIMAL ASSEMBLER P1.5 EQU $PTM \ define TOUCH-MEM DATA port pin FORTH HEX 33 EQU cTMRD DECIMAL \ 0F or 33 are read commands \ -------------------------------------------------------------- \ TMEM? DALLAS TOUCHMEMORY present? ALL 21:13 14APR96 CODE TMEM? ( -- t=PRESENT ) \ TM present? A,# 4 MOV $PTM CLR \ start of RESET pulse LOW B ,# 250 MOV 1$: B , 1$ DJNZ \ 480..960uSEC->500Tcycles $PTM SETB \ end of RESET pulse HIGH B ,# 6 MOV C CLR \ clear CY = NO_presence 2$: $PTM , 3$ JB \ B: HIGH, leave loop B , 2$ DJNZ \ LOOP for 3360uSEC ACC , 2$ DJNZ \ if DATA stays LOW 9$ SJMP \ STUCK LOW 3$: B ,# 40 MOV \ 60..240uSEC-> 160Tcycles 4$: C,/ $PTM ORL B , 4$ DJNZ \ delay CY=1=PRESENCE detect 9$: A CLR A,# 0 SUBB R1,A MOV APUSH LJMP END-CODE \ -------------------------------------------------------------- \ TM>=1uS ..6T, send CY B ,# 05 MOV 1$: B , 1$ DJNZ \ ..6+2+10=18Tcycles C, $PTM MOV \ read DS_DATA ..20Tcycles B ,# 18 MOV 1$: B , 1$ DJNZ \ 20+2+36=78Tcycles B POP \ =60..120uSEC =tSLOT $PTM SETB \ terminate time slot RET END-PROC CODE TM> ACC A RRC TM> c' NEXT LJMP END-CODE \ -------------------------------------------------------------- \ TMC> ACC B PUSH B ,# 8 MOV \ bit count=8 1$: A RRC TM> c' NEXT LJMP END-CODE : TMRD ( -- c ) 255 TM>ACC R0,A MOV \ -> R0 DPL INC A,@DPTR MOVX R1,A MOV \ crc -> R1 B ,# 8 MOV A,R0 MOV \ B=bit count; A=char 1$: A,R1 XRL A RRC \ CY=char XOR crc.0 A,R1 MOV 2$ JNC \ NC: bit0 was 0 A,# 24 XRL \ 18h feedbacks 2$: A RRC R1,A MOV \ positition new crc A,R0 MOV A RR R0,A MOV \ next bit to bit0 B , 1$ DJNZ \ NZ: more bits A,R1 MOV @DPTR,A MOVX DPL DEC \ put crc' DP=>SP LJMP END-CODE \ -------------------------------------------------------------- \ .tm# TML show DOW/DS2401 data ALL 12:43 31JAN95 \ L. shows low byte as 2 HEX chars : .tm# TMEM? IF CR cTMRD TM>