Bascom vs C
HWSW Famulus
hwsw at famulus.hu
Sun Nov 20 22:40:19 CET 2005
> Ha mikrovezerlot kell programozni, akkor kell tudni idozitest csinalni.
' ------------------------------------------------------------------------------'
' TIMER0 init start
' ------------------------------------------------------------------------------'
' Timer0 = 5_000 Hz
Config Timer0 = Timer , Prescale = 64: Timer0 = &HCE
On Ovf0 Tim0_isr
Enable Timer0
...
....
' ------------------------------------------------------------------------------'
Tim0_isr:
' ------------------------------------------------------------------------------'
Timer0 = &HCE
$include "Timer0_linear.bas" 'a tenyleges kod behuzasa
Return
>Az hogy van LCD meg miegymas illesztes a BasCom-ban az
> fasza, de ha pl. a XYZ1234 tipusu ADC-t kell illeszteni, akkor azt ki
> fogja megirni?
Hat en...
ez pl egy SPI buszos AD7705-el merleg cellat olvaso kod reszlete
Kiirja az LCD-re az eredmenyt
10 meersbol atlagol, tara-z a'la BASCOM
(csak egy demo program reszlete, hogy
muxik-e dolog. egyaltalan, ezert
nincs fesulve/optimalizalva a kod)
...
...
Config Spi = Soft , Din = Pinb.3 , Dout = Portb.2 , Ss = None , Clock =
Portb.0
Spiinit
...
...
Do
Spiir(1) = &H20
Spiout Spiir(1) , 1
Spiir(1) = &H04
Spiout Spiir(1) , 1
Spiir(1) = &H10
Spiout Spiir(1) , 1
Spiir(1) = &B0111_0000
Spiout Spiir(1) , 1
Spiir(1) = &H38
Spiout Spiir(1) , 1
Spiin Spiolvas(1) , 2
Tara = 256 * Spiolvas(1)
Tara = Tara + Spiolvas(2)
Locate 1 , 10 : Lcd "T: "
Locate 1 , 14 : Lcd Tara
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Olvas:
Spiir(1) = &H38
Spiout Spiir(1) , 1
Spiin Spiolvas(1) , 2
Suly = 256 * Spiolvas(1)
Suly = Suly + Spiolvas(2)
Suly = Suly - Tara
Suly = Suly * Skala
If R < 10 Then
Incr R
Atlag = Atlag + Suly
Else
R = 1
Atlag = Atlag / 10
Atlag = Round(atlag)
Locate 2 , 10 : Lcd "S: "
Locate 2 , 14 : Lcd Atlag
End If
Waitms 10
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Spiir(1) = &B1111_1111
Spiout Spiir(1) , 1
Goto Olvas
Loop
>> A munak hatekonysag igy egesz jo, a
>> fizikai melysegu mukodest meg eleg
>> akkor megismerni, ha nagyon sziv az emberfia...
>
> Mindez, tegyuk hozza az LCD kezeles. Ez csak egy periferia amit
> kezelni. Emellett van meg sokszaz mas hardver, amit egy
> mikrovezerlohoz illeszteni kell.
..a leheto legkevesebb eszmunkaval, tehat
a lehetseges legnagyobb elvonatkoztatai szinten..
> Hagy kerdezzem mar meg, van valami megkotes, hogyan kell az adatbuszra
> kotni az LCD-t a bascom-hoz?
Valasztas fuggo...
lehet portlab es memoriaba agyaztott szemleletu is
ha portlab szemleletu akkor a labak
lehetnek szanaszet vagy
lehetnek egy porton belul (default)
lehet 4(default) vagy 8 bites modban
lehet sw(default) kesleltetesu vagy hw busy alapu
...es megirhatod magad is :-)
> De a mikrokontroller es a kornyezete egy hardver. A benne futo
> szoftvert sem szoftvernek, hanem firmware-nek nevezik. Hogy
> programozhato ez a kornyezet az ismerete nelkul?
Ugyhogy .. a konkret hw regisztereket elfedi
egy magasabb szintu logikai reteg! a program nyelv altal.
Ezt a magasabb szintet progizza az emberfia es a fordito majd
szepen eldonti mikor melyik regiszterbe mit kell eppen irni.
A francot se erdekli, hogy
egy pwm-hez hany regiszter kezelese kell konkrete
eleg ha logikai szinten feltudom parameterezni a mukodest...
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm =
Clear Down
.....
Pwm1a = 100
Pwm1b = 200
....
Aztan ha kell ettol rafinaltab alkalmazas ,
akkor esetleg elmelyedek a regiszterekben
es jol szet progizom oket :-)
A feladatok igen jelentos resze
nem igenyel atomhasito kodot!
Ha nincs user interface vagy
nem tul komoly akkor meg plane nem...
Egy LCD-s menu az mar huzosabb pl.
de par LED es nyomogomb kezelese
azert nem a csucsok-csucsa
Kulonosebb hw ismeret nelkul
egy laza kis Basicben is siman megoldhato.
A 7 eves Tomi fiam is
olykor mar tudja milyen
utasitast kell a kodban modositani
vagy betenni/kivenni, ha
akar egy kis variat vagy + csicsat...
Pedig hw-rol sosem beszeltem neki, csak
elmagyaraztam a BASIC utasitasokat es
MEG IS MUTATATM, milyen a hatasa,
ha (at)irok valamit a kepernyon...
Agyal, atirja, leforditja, letolti es orul, hogy
megvarialta am! a "keretrendszert" amit
csinaltam neki jatszadozasra...
Az ilyenek tapasztalatokbol azt gondolom boven
eleg a kello szintu elvonatkoztatas a feladatok megoldashoz,
nem kell azt tudni mitol muxik, eleg ha tudom mukodtetni!
Nomeg azt is gondolom, hogy
logikus es kreativ aggyal siman megtanulhato
parnap alatt az egesz varazslat lenyege
egy a gyakorlatban is hasznalhato szintig.
De nem C alapokon!!!
Nem veletlen am, hogy a
BASIC=Beginner's All-purpose Symbolic Instruction Code
azaz kb: kezdok altalanos celu szimbolikus programozasi nyelve
jelentesu betuszo, pontosan erre lett kifejlesztve a 60-as evekben
a gyors tanulasra es konnyu programozasra....
KJ
More information about the Elektro
mailing list