;---------------------------------------------------------------------------------------- ;** Funktionen: put1620byte -> Schreibt den Wert von ds1620byte in DS1620 ;---------------------------------------------------------------------------------------- put1620byte: mov p1, #0 ;| Port1 = OUTPUT mov p1, #2 ;|RST = HIGH mov bit_stelle2, #0 wordlength: mov a, bit_stelle2 cjne a, #7, go_back inc bit_stelle2 mov a, ds1620byte anl a, #1 cjne a, #1 ,DQ0 DQ1: setb p1.2 mov p1, #7 ;| RST,CL, DQ =HIGH mov a, ds1620byte rl a mov ds1620byte, a jmp wordlength DQ0: clr p1.2 mov p1, #5 ;| RST,CL =HIGH, DQ=LOW mov a, ds1620byte rl a mov ds1620byte, a jmp wordlength go_back: ret ;---------------------------------------------------------------------------------------- ;** Funktionen: get1620byte -> liest den Wert von DS1620 in 1620byte ;---------------------------------------------------------------------------------------- get1620byte: mov p1, #2 ;| DQ = HIGH=INPUT mov bit_stelle2, #0 wordlength2: mov a, bit_stelle2 cjne a, #7, vorzeichenbit clr p1.0 ;|CLOCK= LOW inc bit_stelle2 mov a, p1 setb p1.0 ;|CLOCK= HIGH anl a, #2 cjne a, #2, write_0 write_1: setb c mov a, ds1620byte rrc a mov ds1620byte, a jmp wordlength2 write_0: clr c mov a, ds1620byte rrc a mov ds1620byte, a jmp wordlength2 vorzeichenbit: clr p1.0 ;|CLOCK= LOW inc bit_stelle2 mov a, p1 setb p1.0 ;|CLOCK= HIGH anl a, #2 cjne a, #2, kein_vorzeichen mov vorzeichen, #1 mov p1, #0 ;|OUTPUT ret kein_vorzeichen: mov vorzeichen, #0 mov p1, #0 ;|OUTPUT ret ;---------------------------------------------------------------------------------------- ;** Funktionen: liest Temperatur von DS1620 in 1620byte ;---------------------------------------------------------------------------------------- get_temperatur: setb 1.1 ;|RST = HIGH | mov ds1620byte, #0EEh ;| | Start call put1620byte ;| |Convert clr 1.1 ;|RST = LOW | setb 1.1 ;|RST = HIGH | mov ds1620byte, #0AAh ;| | call put1620byte ;| |read value in mov ds1620byte, #0 ;| |"temperatur" call get1620byte ;| | clr p1.1 ;|RST = LOW | mov a, ds1620byte ;| | mov temperatur, a ;| | setb 1.1 ;|RST = HIGH | mov ds1620byte, #022h ;| | Stop call put1620byte ;| | Convert clr p1.1 ;|RST = LOW |