INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, da sind zwei kleine Programme drin, die ich hier einfach mal im Quelltext zu Lehrzwecken reinkopiere. Ich hoffe DieHard hat da nichts dagegen. Cu Rene 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'IIIIIIIIIIIIIII MORSE TRAINER IIIIIIIIIIIIIII 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ' CONRAD ELECRONIC Jul.01 (DH) ' '---------------- Kurzbeschreibung ------------------------------------- ' Das Programm ist ein kleiner Morsetrainer für das Application-Board und ' erzeugt 5er Gruppen aus Buchstaben und Zahlen. ' ' - Die Geschwindigkeit wird über die Variable sp eingestellt und bewegt sich so zwischen ' 200 BpM (1) und deutlich unter 20 Bpm (>10). ' Wer es komfortabler will kann die Variable sp auch über ein Poti und einen AD-Port erzeugen. ' - Die 5er Gruppen werden am LCD angezeigt '-------------------------- '------ I/O PORTS --------- '-------------------------- define lcd_port byteport[2] define lcd_rs port[14] define lcd_rw port[13] define lcd_e port[15] define poti ad[1] ' maximal 20 Zeichen pro Zeile '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- '---- LCD DRIVER ------------- define lcd_buf byte[1] define lcd_param byte[2] define sp byte [3] define fo byte [4] define z1 byte[5] define laenge byte[6] define Gruppenzahl byte[7] define MAXPOS 20 #system_init gosub lcd_init randomize timer fo=0 '----- ZEICHEN GENERIEREN---- #neuzeichen sp=2 z1=(abs(rand) mod 35) '-----ZEICHEN AUSGABE--- fo=fo+1 looktab tabelle1,z1,laenge beep 100,sp*laenge,sp looktab tabelle2,z1,laenge if laenge=0 then goto fgruppen beep 100,sp*laenge,sp looktab tabelle3,z1,laenge if laenge=0 then goto fgruppen beep 100,sp*laenge,sp looktab tabelle4,z1,laenge if laenge=0 then goto fgruppen beep 100,sp*laenge,sp looktab tabelle5,z1,laenge if laenge=0 then goto fgruppen beep 100,sp*laenge,sp 'zeichen zum lcd #fgruppen lcd_param=&H41+z1 if z1 < 26 then goto lcdout lcd_param=&H30+z1-26 #lcdout gosub lcd_writechar '---FORMATIERUNG IN 5er GRUPPEN ----- pause sp*2 if fo<5 then goto neuzeichen pause sp*5 gruppenzahl=gruppenzahl+1 lcd_param=&H20 gosub lcd_writechar if gruppenzahl=2 then gosub lcd_line2 if gruppenzahl=4 then gosub lcd_cls else goto fogru gruppenzahl=0 #fogru fo=0 goto neuzeichen '--------------------------------------- '------------- LCD ROUTINES ------------- '---------------------------------------- #LCD_INIT ' alle ports 0 lcd_port = OFF ' 8-Bit-Modus aktivieren lcd_param=&H38 : gosub LCD_WRITECMD ' mit 8-Bit-Command in 4-Bit-Modus umschalten lcd_port=&B00000010 tog lcd_e tog lcd_e ' ab jetzt 4-Bit-Modus lcd_param = &H28 : gosub LCD_WRITECMD lcd_param = &H0C : gosub LCD_WRITECMD ' Display loeschen #LCD_CLS lcd_param = &H02 : gosub LCD_WRITECMD lcd_param = &H01 : gosub LCD_WRITECMD return ' Zeilenwechsel #LCD_GOTOLINE if lcd_param = 1 then lcd_param = &H80 if lcd_param = 2 then lcd_param = &HC0 goto LCD_WRITECMD #LCD_LINE2 lcd_param=&HC0:goto LCD_WRITECMD ' LCD-Kommando #LCD_WRITECMD lcd_buf = OFF goto LCD_WRITE ' Zeichenausgabe #LCD_WRITECHAR lcd_buf = &B00100000 ' Kommando oder Zeichen an Display senden #LCD_WRITE lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble tog lcd_e tog lcd_e lcd_port = lcd_buf or (lcd_param and &H0F) ' Lo-Nibble tog lcd_e tog lcd_e return '----- ZEICHEN CODIERUNG -------- ' 1=kurz 3=lang 0=nix table tabelle1 ' a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 '------------------------------------------------------------------------ 1 3 3 3 1 1 3 1 1 1 3 1 3 3 3 1 3 1 1 3 1 1 1 3 3 3 3 1 1 1 1 1 3 3 3 3 tabend table tabelle2 3 1 1 1 0 1 3 1 1 3 1 3 3 1 3 3 3 3 1 0 1 1 3 1 1 3 3 3 1 1 1 1 1 3 3 3 tabend table tabelle3 0 1 3 1 0 3 1 1 0 3 3 1 0 0 3 3 1 1 1 0 3 1 3 1 3 1 3 3 3 1 1 1 1 1 3 3 tabend table tabelle4 0 1 1 0 0 1 0 1 0 3 0 1 0 0 0 1 3 0 0 0 0 3 0 3 3 1 3 3 3 3 1 1 1 1 1 3 tabend table tabelle5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 1 1 1 1 1 tabend '********************************************************************** '**** CW-KEYER MIT CQ-TEXT ***** '********************************************************************** ' CONRAD ELECRONIC JUL.01 (DH) ' - Paddle Anschluss an Port1 (Punkt) und Port2 (Strich) ' - Mithörton am Port "BEEP" ' - Geschwindigkeitseinstellung über Poti an ad1 ' - Punkt und Strich Speicherung ' - Taste für cq Text Ausgabe an Port 8 ' ' Port1 -----------I ' (GND) Port2 --------------PADDLE ' Port3 -----------I ' ' - Port5 ist der Ausgang und wird an den Transceiver angeschlossen ' ' Für maximale Geschwindigkeit nimmt die Variable speed den Wert 3 an. ' Ein Punkt ist dann 47ms, die Pause 53ms und der Strich 165ms. ' Das entspricht in etwa den geforderten 1 zu 1 zu 3 Verhältnissen. ' Das Tempo ist dann etwa 120 und sollte für die meisten Fälle ' ausreichend sein. Nach unten gibt es eigentlich nur die Gähn-Grenze. '********************************************************************** '-------------------------- '------ I/O PORTS --------- '-------------------------- define poti ad[1] define strich port[3] define punkt port[1] define gnd port[2] define out port[5] define text port[8] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- define f byte[1] define l byte [2] define k byte[3] define pflag byte[4] define sflag byte[5] define speed byte [6] define w byte[7] define const1 byte[8] define const2 byte[9] define const3 byte[10] '-------------------------- '--- SYSTEM CONSTANTS ----- '-------------------------- f =100 'Frequenz Mithörton const1=25 const2=3 const3=1 gnd=0 out=on 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'IIIIIII PROGRAM MAIN LOOP IIIIIIIIIIIIII 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII #abfrage if not text then gosub cqtext '--- Einstellung mit Poti --------------------- 'speed = poti/const1+2 '---------------------------------------------- speed=2 k=speed:l=const2*speed if not strich then gosub gibstrich if not punkt then gosub gibpunkt if sflag then gosub gibstrich if pflag then gosub gibpunkt goto abfrage 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'IIIIIIIIIIII DOT GENERATOR IIIIIIIIIIIIIIIIIIII #gibpunkt out=off:beep f,k,0:out=on pflag=0 for w= const3 to Speed -1 pause 1 if strich then goto weiter sflag=1 #weiter next return 'IIIIIIIIIIII DASH GENERATOR IIIIIIIIIIIIIIIIIII #gibstrich out=off:beep f,l,0:out=on sflag=0 for w= const3 to speed-1 pause 1 if punkt then goto wei pflag=1 #wei next return 'IIIIIIIIIIIIIIIII CQ-CALL IIIIIIIIIIIIIIIIII #cqtext gosub cq gosub cq gosub cq gosub de gosub rufzeichen gosub rufzeichen gosub cq gosub pse gosub k return 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII #cq out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '---------- out=off:beep f,l,0:out=on:pause k out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,l,0:out=on:pause l pause 3*l return #de out=off:beep f,l,0:out=on:pause k 'D out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '--------- out=off:beep f,k,0:out=on:pause l 'E pause 3*l return #rufzeichen out=off:beep f,l,0:out=on:pause k 'D out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '----------- out=off:beep f,k,0:out=on:pause k 'L out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '----------- out=off:beep f,k,0:out=on:pause k '4 out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,l,0:out=on:pause l '---------- out=off:beep f,k,0:out=on:pause k 'R out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '---------- out=off:beep f,l,0:out=on:pause k 'C out=off:beep f,k,0:out=on:pause k out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '---------- out=off:beep f,k,0:out=on:pause k 'L out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause l pause 3*l return #pse out=off:beep f,k,0:out=on:pause k out=off:beep f,l,0:out=on:pause k out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '---------- out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,k,0:out=on:pause l '---------- out=off:beep f,k,0:out=on:pause l pause 3*l return #k out=off:beep f,l,0:out=on:pause k out=off:beep f,k,0:out=on:pause k out=off:beep f,l,0:out=on:pause l return ogoianer früher mal topmail |
Antwort schreiben |