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