Dobrý den, mám programování mikroprocesorů Atmel v jazyce BASCOM jako maturitní práci a nikdy jsem v tom nedělal. Napsal jsem si jednoduchý program na ovládání LED pomocí tlačítek (viz. zdojový kód), ale po kompilaci a spuštění nic nezobrazuje a přitom vypadá, že běží. Nemůže mi s tím někdo poradit?
$regfile = “8515def.dat”
$crystal = 8000000
Dim P As Byte
Config Portb = Output
Config Porta = Input
P = &H00
Do
Portb = P
If Pina.0 = 0 Then
Incr P
End If
If Pina.1 = 0 Then
Decr P
End If
If Pina.2 = 0 Then
Shift P , Left
End If
If Pina.3 = 0 Then
Shift P , Right
End If
If Pina.4 = 0 Then
Rotate P , Left
End If
If Pina.5 = 0 Then
Toggle P
End If
If Pina.6 = 0 Then
P = &HFF
End If
If Pina.7 = 0 Then
P = &H00
End If
Waitms 200
Loop
End
A pokud možno, jestli by jste mi mohl někdo ještě prosím poradit, jak bych mohl naprogramovat příklad s ADC input, aby při posouvání posuvníku zobrazoval čísla na LCD? Moc děkuji.
administrator: přejmenováno z "Maturitní práce - AVR v jazyce BASCOM"
Pokud budeš chtít finální verzi, kde to ukazuje na 2 desetinný místa a ne na 20, tak to sem večer z domova hodím. Tady to zaoukrohlování nefungovalo. Jinak kód jsem našel v mém již zmiňovaném topicu.
Dim X As Single
Dim Y As Single
Dim Z As Single
Dim V As Single
Dim A As Word
Config Adc = Single , Prescaler = Auto
Config Lcd = 16 * 2
Cursor Off
Lcd “Voltmetr”
Wait 1
Lowerline
Cls
Start Adc
Do
A = Getadc(0) 'Nacteni y AD prevodniku
X = 4.8875 * A 'Prepocet na volty
Y = X / 10 ’ Posunutí desetinné tečky o jednu vlevo
Z = Round(y) ’ Zaokrouhlení na celé číslo
V = Z / 100 ’ Získání čísla s dvěma desetinými místy
Locate 2 , 1
Lcd " "
Locate 2 , 1
Lcd Str(v) + " V "
Waitms 20 ’ Zobrazení na displeji
Loop
End[/code]
Dim X As Single
Dim Y As Single
Dim Z As Single
Dim V As Single
Dim A As Word
Dim Volt As String * 20
Dim Voltx As String * 20
Config Adc = Single , Prescaler = Auto
Config Lcd = 16 * 2
Cursor Off
Lcd “Voltmetr”
Wait 1
Lowerline
Cls
Start Adc
Do
A = Getadc(0) 'Nacteni y AD prevodniku
X = 4.8875 * A 'Prepocet na volty
Y = X / 10 ’ Posunutí desetinné tečky o jednu vlevo
Z = Round(y) ’ Zaokrouhlení na celé číslo
V = Z / 100
Voltx = Str(v)
Voltx = Left(voltx , 4) ’ Získání čísla s dvěma desetinými místy
Locate 2 , 1
Lcd " "
Locate 2 , 1
If Len(voltx) = 3 Then
Volt = Voltx + "0 V "
Else
Volt = Voltx + " V "
End If
Lcd Volt
Waitms 20 ’ Zobrazení na displeji
Loop
End[/code]
Promiň, že ještě otravuju, při kompilaci toho programu mi to vyhodí hlášku “Unsupported DAT file”. Když se podívám do nastavení na chipy, tak m48 tam není. Nevíš co bych s tím měl udělat?
Důvod je zřejmý - já tam mám ATmega48 ale ty 8515. Tak musíš prohodit můj za svůj definiční řádek pro chip *$regfile = “m48def.dat” * za svůj $regfile = “8515def.dat” a snad to poběží. Jelikož mě překvapuje, že by to mělo být AVR a není ATtiny ani ATmega.
Přepsal jsem to na $regfile = “8515def.dat” a dal kompilovat, dole vyskočila chyba: Error: 101 Line: 26 Can’t find HW-register {ADMUX } , in File: C:/…, je to řádek “A=Getadc(0)”.
administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.