'AR1010 Testprogramm
$regfile = "m8adef.dat"
$crystal = 8000000
$hwstack = 64
$swstack = 64
$framesize = 64
'(
----------------------------
-----AVR32pinMSL-Modul------
----------------------------
Taster o--PD5 | PD4--o
LED o--PD6 | INT1/PD3--o
o--PD7 | INT0/PD2--o
o--PB0-------| TxD/PD1--o
o--PB1/OC1A |----RxD/PD0--o
o--PB2/OC1B | SCL/PC5--o SCL
o--PB3/MOSI | SDA/PC4--o SDA
o--PB4/MISO | PC3--o
o--PB5/SCK | PC2--o
o--PB6/XTAL1 | PC1--o
o--PB7/XTAL2-|--------PC0--o
o--Vcc 8MHz ADC7--o
o--Vcc Resonator Aref--o
o--GND | ADC6--o
----------------------------
')
' ==============================================================================
' Bestimme die Ein und Ausgänge
Ddrb = &B_00_0000 '1 ist Ausgang 0 ist Eingang
Portb = &B11_1111 'auf Hi oder Low setzen
Ddrc = &B_00_0000 '1 ist Ausgang 0 ist Eingang
Portc = &B11_1111 'auf Hi oder Low setzen
Ddrd = &B_0100_0000 '1 ist Ausgang 0 ist Eingang
Portd = &B1011_1111 'auf Hi oder Low setzen
' #############################################################################
Taster Alias Pind.5 'Test-Taster
Led Alias Portd.6 'Signal-LED
' ==============================================================================
' Globale Interrupts einschalten
Enable Interrupts
On Int0 Read_key
Enable Int0
' ==============================================================================
$include "Radio_dim.inc"
' ==============================================================================
' I2C-Config
Config Scl = Portc.5
Config Sda = Portc.4
'$lib "i2c_twi.lbx"
'Config Twi = 100000 'BUS-Takt,
Config I2cdelay = 10
'AR1010 read and write address
Const Arwr = &H20
Const Arrd = &H21
' ==============================================================================
' I2C Matrixtastatur (Kent Andersson)------------------------
$lib "key_i2c.lib" 'LIB für I2C-Matrixtastatur
$external _key_code 'Externe Routine
Const Pcf8574_kbd = &H72 'I2C-Adresse des PCF8574A
Dim _key_scan As Byte 'Variable für Tastenausgabe
'!rcall _Key_Init
' I2C LCD (Kent Andersson)-----------------------------------
$lib "Lcd_i2c.lib" 'LIB für I2C-LCD
Const Pcf8574_lcd = &H74 'I2C-Adresse des PCF8574A
Dim _lcd_e As Byte
_lcd_e = 128
!Rcall _init_lcd
' ==============================================================================
Dim Kb As String * 1
Dim Kba As Byte At Kb Overlay
Dim Kbn As Byte
Dim Iw As Word 'Index-Word-Variable
' ==============================================================================
'Erster Start
Cls
Gosub Initar1010
Gosub Waitforstc
Waitms 100
Strg = 1
Channel = 1026 'NDR2
Locate 1 , 1 : Lcd "I2C-Radio AR1010"
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Gosub Tune
Waitms 100
!rcall _Key_Init
' ==============================================================================
Do
Select Case Kbn
Case 1 To 7
Strg = Kbn
Gosub Sender
Kbn = 42 'ASCII-Wert für "Z"
Case 17 'Taste "A"
Gosub Set_freq
End Select
If Taster = 0 Then
Strg = 1
Gosub Sender
Bitwait Taster , Set
Else
End If
Loop
End
' ==============================================================================
$include "Radio_subs.inc"
' ==============================================================================
Sender:
Led = 1 'LED aus
Select Case Strg
Case 1
Channel = 1026 'NDR2
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Case 2
Channel = 1019 'FFN
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Case 3
Channel = 1038 'Antenne NDS
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Case 4
Channel = 0980 'NDR1
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Case 5
Channel = 0936 'N-Joy
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Case 6
Channel = 1014 'SAW
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Case 7
Channel = 0875 '111
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
Case Else
Channel = 1026 'NDR2 (default)
Locate 2 , 1 : Lcd "Frequenz: " ; Channel ; " "
End Select
Gosub Tune
Led = 0 'LED ein
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
NOP
Wend
Return
' ==============================================================================
Set_freq:
Led = 1
Channel = 0
Locate 1 , 1
Lcd "Frequenz waehlen"
Locate 2 , 1
Lcd "Eingabe: ____ "
Wait 1
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
nop
Wend
'-------------------------------
While _key_scan = 0 'Warten bis eine Taste gedrückt wurde
nop
Wend
Channel = Kbn
Channel = Channel * 1000
Locate 2 , 1
Lcd "Eingabe: " ; Kbn ; "= " ; Channel
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
nop
Wend
'-------------------------------
While _key_scan = 0 'Warten bis eine Taste gedrückt wurde
nop
Wend
Iw = Kbn * 100
Channel = Channel + Iw
Locate 2 , 1
Lcd "Eingabe: " ; Kbn ; "= " ; Channel
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
Gosub Read_key
Wend
'-------------------------------
While _key_scan = 0 'Warten bis eine Taste gedrückt wurde
nop
Wend
Iw = Kbn * 10
Channel = Channel + Iw
Locate 2 , 1
Lcd "Eingabe: " ; Kbn ; "= " ; Channel
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
nop
Wend
'-------------------------------
While _key_scan = 0 'Warten bis eine Taste gedrückt wurde
nop
Wend
Channel = Channel + Kbn
Locate 2 , 1
Lcd "Eingabe: " ; Kbn ; "= " ; Channel
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
nop
Wend
Iw = Channel
Gosub Tune
Led = 0
Wait 1
Kbn = 42 'ASCII-Wert für "Z"
Locate 1 , 1
Lcd "I2C-Radio AR1010"
Locate 2 , 1
Lcd "Frequenz= " ; Iw ; " "
Return
' ------------------------------------------------------------------Data-Tabelle
Read_key:
!rcall _key_code 'externe Routine aufrufen
If _key_scan > 0 Then
Kb = Lookupstr(_key_scan , Matrix_wert) 'Wert vom Key_scan der Tastatur anpassen
Kbn = Kba - 48
Else
End If
If _key_scan = 16 Then
!rcall _init_lcd
Waitms 250
Locate 1 , 1 : Lcd "I2C-Radio AR1010"
Else
End If
Return
' ------------------------------------------------------------------Data-Tabelle
Matrix_wert:
Data "Z" , "7" , "8" , "9" , "A" , "4" , "5" , "6" , "B" , "1" , "2" , "3" , "C" , "F" , "0" , "E" , "D"