' WGID04.BAS ' Last EDIT 2009/05/25 'JR0WG ID ROM OUT with temp ' ID= DE_JR0WG $regfile = "m88def.dat" ' MEGA88P $crystal = 1000000 Config Portb = Output Config Portd = Input Config Portc = Input Config Adc = Single , Prescaler = Auto , Reference = Avcc '%%%%%%%%%%%%%% LCD TST %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ' Config Lcdmode = Port 'LCDを4ビットのポートモー・ 'Config Lcdbus = 4 'LCDデータバスを4bitに設定。 'Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 'LCDのポート割り当て。 ' Config Lcdpin = Pin , Db6 = Portb.3 , Db7 = Portb.2 ' Config Lcdpin = Pin , E = Portb.6 , Rs = Portb.7 ' $initmicro 'Config Lcd = 16 * 2 'LCD表示を16文字2行に設定。 Config Timer1 = Timer , Prescale = 64 On Timer1 Timer1_int Enable Interrupts Enable Timer1 Config Watchdog = 8192 '-set WDT 8192msec ' Start Watchdog ' ' * 初期設定 * ' ' Cursor Off 'LCDのカーソルをオフ。 'Cls 'Lcd "JR0WG ID" Dim D1 As Word Dim D2 As Word Dim P As Word Dim Tn As Word Dim Tn2 As Word Dim Ondo As Word 'ADcon-->Ondo Dim Ondo2 As Word Dim Ondo3 As Word Dim Mo As Word Dim Mo0 As Word Dim Mo1 As Word Dim Tanten As Word Dim Cyouten As Word Dim Lp As Word '--for next cnt Idpin4 Alias Portb.0 'ID_PIN4=TONE out Idpin3 Alias Pind.0 Test_led Alias Portb.2 Tx_led Alias Portb.3 'ID_PIN3=ID_start SIG Start Adc '----CW Tone const----- D1 = 100 D2 = 40 P = 100 Tn = 40 Tn2 = 110 Reset Portb. 1 '********** MAIN LOOP ********************************** Do Ondo = Getadc(0) 'Cls 'Locate 1 , 1 'Lcd "AD:" ; Ondo Debounce Idpin3 , 1 , Wgid , Sub Loop '******************************************************** End Wgid: Set Portb.1 Set Tx_led Waitms 300 '-------------------SEND ID ------------------- Gosub Tu1 '--D Gosub To1 Gosub To1 Waitms Tn2 Gosub To1 '--E Waitms Tn2 : Waitms Tn2 Gosub To1 '--J Gosub Tu1 Gosub Tu1 Gosub Tu1 Waitms Tn2 Gosub To1 '--R Gosub Tu1 Gosub To1 Waitms Tn2 Gosub Tu1 '--Φ Gosub Tu1 Gosub Tu1 Gosub Tu1 Gosub Tu1 Waitms Tn2 Gosub To1 '--W Gosub Tu1 Gosub Tu1 Waitms Tn2 'Reset Porta.2 '--CK LED off Gosub Tu1 '--G Gosub Tu1 Gosub To1 Waitms 300 '------------------------------------------------------ Ondo = Getadc(0) 'Cls ' Locate 1 , 1 'Lcd "AD:" ; Ondo Select Case Ondo Case Is < 119 '--tmp is minus Ondo3 = 119 - Ondo Gosub Tu1 '--senout "M" Gosub Tu1 Waitms Tn2 Case Is > 119 '--tmp is plus Ondo3 = Ondo - 119 End Select Ondo = Ondo3 / 2 ' Locate 2 , 1 : Lcd Ondo Select Case Ondo Case Is < 10 Mo1 = 0 Mo0 = Ondo Case 10 Mo1 = 1 Mo0 = 0 Case Is > 10 Mo1 = Ondo / 10 Ondo3 = Mo1 * 10 Mo0 = Ondo - Ondo3 End Select Exit_0: Select Case Mo1 Case 5: For Lp = 1 To 5 : Gosub To1 : Next Lp Case 0 : For Lp = 1 To 5 : Gosub Tu1 : Next Lp Case 1 To 4: Tanten = Mo1 : Cyouten = 5 -mo1 For Lp = 1 To Tanten : Gosub To1 : Next Lp For Lp = 1 To Cyouten : Gosub Tu1 : Next Lp Case 6 To 9: Cyouten = Mo1 -5 : Tanten = 10 -mo1 For Lp = 1 To Cyouten : Gosub Tu1 : Next Lp For Lp = 1 To Tanten : Gosub To1 : Next Lp End Select Waitms Tn2 : Waitms Tn2 Mo1 = Mo0 Select Case Mo1 Case 5: For Lp = 1 To 5 : Gosub To1 : Next Lp Case 0 : For Lp = 1 To 5 : Gosub Tu1 : Next Lp Case 1 To 4: Tanten = Mo1 : Cyouten = 5 -mo1 For Lp = 1 To Tanten : Gosub To1 : Next Lp For Lp = 1 To Cyouten : Gosub Tu1 : Next Lp Case 6 To 9: Cyouten = Mo1 -5 : Tanten = 10 -mo1 For Lp = 1 To Cyouten : Gosub Tu1 : Next Lp For Lp = 1 To Tanten : Gosub To1 : Next Lp End Select Exit_1: Waitms 300 Reset Portb.1 Reset Tx_led Return ' If Ondo3 > 5 Then Gosub Tu1 ' Set Porta.1 'Set Porta.2 '--program ck LED on 'Reset Porta.1 ' Return '================================================= Tu1: Sound Idpin4 , D1 , P : Waitms Tn Return To1: Sound Idpin4 , D2 , P : Waitms Tn Return '***************** WDT **************************** Timer1_int: Reset Watchdog Toggle Test_led Return _init_micro: 'BACOM Bug fix Config Watchdog = 512 '-set WDT 2148msec ' Start Watchdog 'start WDT Return