$nomod51 $include (reg517a.inc) bef_w equ 0ff80h bef_r equ 0ff81h dat_w equ 0ff82h dly equ 1 takt equ p1.0 datum equ p1.1 org 0000h ljmp haupt ORG 0100H Haupt: lcall dinit lcall zahl_init lcall zahl_out lcall h_1 sjmp $ h_1: lcall transmission_start lcall datum_ausgabe lcall warte_2 ;warteschleife für sht messung setb c jnb datum,datum_einlesen clr a lcall datum_einlesen mov r7,a mov a,#1 lcall datum_einlesen mov r6,a clr c mov a,r6 add a,#60h ;-4000 low byte mov r6,a mov r7,a addc a,#0f0h ;-4000 high byte mov r7,a ret sht_conn: mov r5,#10 ;connection reset für sensor setb datum abcd: setb takt setb datum nop clr takt setb datum nop djnz r5,abcd Transmission_start: setb takt ;startsequenz initialisierung nop nop clr datum nop nop clr takt nop nop setb takt nop nop setb datum nop nop clr takt setb datum nop nop clr takt ret datum_ausgabe: clr c mov r5,#8 mov a,#00000011b ;temperatur binärfolge da_1: rlc a ;datum über carry an port 1.1 an sensor schicken mov datum,c setb takt nop clr takt setb datum djnz r5,da_1 mov c,datum setb takt ;ack abholen ab hier nop mov c,datum clr takt nop setb datum ret datum_einlesen: mov r5,#8 dae_1: setb takt ;Port 1.1 als eingang setzen und messwert einlesen setb datum nop nop mov c,datum rlc a clr takt setb datum djnz r5,dae_1 mov datum,c setb takt nop nop clr takt setb datum ret sht_raus: ret warte_2: mov r0,#100 w11: mov r1,#100 w22: mov r2,#100 djnz r2,$ djnz r1,w22 djnz r0,w11 ret dinit: mov dptr,#bef_w mov a,#00111000b ;8-bit Übertragung movx @dptr,a ;2-zeiliges Display lcall Del4100us ;5x7-Matrix mov a,#00001100b ;Display an movx @dptr,a ;Cursor aus lcall Del4100us ;Blinken aus mov a,#00000001b ;Display löschen movx @dptr,a lcall Del4100us ret del100us: mov r4,#dly*15 ;can be scaled by 1-16 del1: db 0,0,0,0,0,0,0,0,0,0,0 ;11x nop djnz r4,del1 ret del4100us: mov r3,#41 ;delay 4.1 ms@24MHz del2: lcall del100us djnz r3,del2 ret zahl_out: mov dptr,#bef_r zo1: movx a,@dptr jb acc.7,zo1 mov a,#48h orl a,#80h mov dptr,#bef_w movx @dptr,a mov r2,#5 mov r0,#80h zo3: mov dptr,#bef_r zo2: movx a,@dptr jb acc.7,zo2 mov a,@r0 orl a,#30h mov dptr,#dat_w movx @dptr,a inc r0 djnz r2,zo3 ret zahl_init: mov r0,#84h mov r2,#5 zi1: mov md0,r6 mov md1,r7 mov md4,#10 mov md5,#0 db 0,0,0,0,0,0 mov r6,md0 mov r7,md1 mov @r0,md4 mov a,md5 dec r0 djnz r2,zi1 ret end