Re: noch etwas Senf Kategorie: Progr. Assembler, TaskingTools, OS (von André H. - 28.11.2004 10:06) | ||
Als Antwort auf Re: noch etwas Senf von krassos - 27.11.2004 14:34 | ||
| ||
Hallo krassos, > > Ich bin wegen OSOPT V3.1 momentan dabei, das OS gründlich zu durchforsten. > > Ich werde einmal sehen, ob es irgendeine Möglichkeit für eine Anpassung gibt. > > Also, da� man wirklich zwischen zwei Funktionen umschalten kann. > > Ich mu� dem aber die niedrigste Priorität geben. > > Also unterste Priorität wäre schon ok. Unterste Prio hei�t hier, da� ich versuche dies nur anzugehen, wenn ich noch Zeit übirg habe. > Mach ich auch grad, komm aber nicht so recht voran. Ichhabe gestern Abend noch schnell etwas geschrieben und getestet. Die Routine ist absichtlich sehr einfach und primitiv gestaltet und ist sicher nicht optimal. ;-) Du brauchst als Hilfsmittel das Hyperterminal mit 57.600 Baud. Ich Werte das Signal an P1H.7 aus. Daher brauchst Du noch einen Pull-Up-Widerstand (10k). Hier die Routine: const bcd[]=1,2,4,8,10,20,40,80; const DOW_NAMES[] = "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"; thread main {long timer;int bit,nr; byte minute, stunde, tag, dow, monat, jahr; string s1,s2; hwcom.setspeed(8); hwcom.clr(); loop { wait ports.get(15); timer=system.timer(); wait not ports.get(15); timer=system.timer()-timer; if timer>1950 bit='F'; else if timer>1780 {bit='S';nr=-1;} else if timer>930 bit='F'; else if timer>880 bit='0'; else if timer>830 bit='F'; else if timer>780 bit='1'; else bit='F'; hwcom.num(nr+1); hwcom.tab(); hwcom.num(timer); hwcom.tab(); hwcom.put(bit); if bit=='F' { hwcom.tab(); hwcom.print("Bitfehler"); } else if nr==-1 { hwcom.tab(); hwcom.print(DOW_NAMES[dow%7]); s1= ' ' + (tag/10+0x30) + (tag%10+0x30) + '.' + (monat/10+0x30)+ (monat%10+0x30) + '.' + (jahr/10+0x30) + (jahr%10+0x30); hwcom.print2(s1); s2= 9 + (stunde/10+0x30) + (stunde%10+0x30) + ':' + (minute/10+0x30) + (minute%10+0x30) + ":00"; hwcom.print2(s2); } else if nr==15 { hwcom.tab(); if bit=='0' hwcom.print("Betriebsantenne"); else if bit=='1' hwcom.print("Reserveantenne"); } else if nr==16 { hwcom.tab(); if bit=='1' hwcom.print("Ankündigung Zeitumstellung"); } else if nr==17 { hwcom.tab(); if bit=='0' hwcom.print("Normalzeit"); else if bit=='1' hwcom.print("Sommerzeit"); } else if nr==18 { hwcom.tab(); if bit=='0' hwcom.print("Sommerzeit"); else if bit=='1' hwcom.print("Normalzeit"); } else if nr==19 { hwcom.tab(); if bit=='1' hwcom.print("Ankündigung Schaltsekunde"); } else if nr==20 { hwcom.tab(); if bit=='1' hwcom.print("Startbit Zeit OK"); else hwcom.print("Startbit Zeit Fehler"); } else if nr>20 and nr<28 { if nr==21 minute=bit and 1; else if bit=='1' minute=minute+bcd[nr-21]; } else if nr>28 and nr<35 { if nr==29 stunde=bit and 1; else if bit=='1' stunde=stunde+bcd[nr-29]; } else if nr>35 and nr<42 { if nr==36 tag=bit and 1; else if bit=='1' tag=tag+bcd[nr-36]; } else if nr>41 and nr<45 { if nr==42 dow=bit and 1; else if bit=='1' dow=dow+bcd[nr-42]; } else if nr>44 and nr<50 { if nr==45 monat=bit and 1; else if bit=='1' monat=monat+bcd[nr-45]; } else if nr>49 and nr<58 { if nr==50 jahr=bit and 1; else if bit=='1' jahr=jahr+bcd[nr-50]; } hwcom.ret(); nr=nr+1; } } MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: |