Alias név

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
pkedvessy

Alias név

Hozzászólás Szerző: pkedvessy »

Hali
Az lenne a kérdésem, hogy az egyes io portoknak lehet-e valamilyen alias nevet adni, hogy később amennyiben módosítanom kell a kódot, csak itt kelljen módosítani, és ne az egész kódban!
Gondolok itt arra, hogy mondjuk a Portb.1 -et elnevezem Ki1-nek, és aztán így használom:
set Ki1
reset Ki1
...

Köszi
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Mondjuk így?:)
A Bascom 1.11.7.4 súgóból ollózva.... :P




Config Pinb.1 = Output
Direction Alias Portb.1
Do
Set Direction 'has the same effect as SET PORTB.1
Waitms 1
Reset Directopn
Loop
End
pkedvessy

Hozzászólás Szerző: pkedvessy »

Köszi, ez kell nekem :-D
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Hello

Lehet hülye kérdés.
Nem lehet a kimeneteket közvetlen tömbbe rendezni?

Valahogy így gondoltam:

P(1) alias portb.1
p(2) alias portb.2
p(3) alias portb.3

De ez nem működik.
Esetleg valami más megoldás?

Vagy csak külön lehet? Ha sub-ba mindegyikhez hozzárendelek egy másik változót ami már tömbbe van és mindig meg kell hívni?

Köszi
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Minek? Hiszen az már tömbben van!
Például egy futó fény:

Kód: Egész kijelölése

'Porttest.bas

$regfile = "m16def.dat"                                     ' specify the used micro

$crystal = 8000000                                          ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 40                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

$sim


Config Portb = Output
Portom Alias Portb
Dim Ib As Byte

Do

For Ib = 0 To 7
   Set Portom.ib
   Waitms 400
   Reset Portom.ib
Next Ib

Loop
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Most is okosabb lettem.
Ez is jó megoldásnak tűnik csak nálam eléggé összevissza vannak a ledeknek a kimenetei. mert így vannak sorba.
Valahol 0-tól fölfelé valahol 7-től vannak lefelé a portok. Van pedig hogy kimaradnak lábak.
és jól enne ha mondjuk egy for ciklusban le lehetne rendezni pl egy futófényt.

Kód: Egész kijelölése

Led1 Alias Porte.0
Led2 Alias Porte.1
Led3 Alias Porte.2
Led4 Alias Porte.3
Led5 Alias Porte.4
Led6 Alias Porte.5
Led7 Alias Porte.6
Led8 Alias Porte.7
Led9 Alias Portb.0
Led10 Alias Portb.1
Led11 Alias Portb.2
Led12 Alias Portb.3
Led13 Alias Portb.4
Led14 Alias Portb.5
Led15 Alias Portb.6
Led16 Alias Portb.7
Led17 Alias Portd.1
Led18 Alias Portd.2
Led19 Alias Portd.3
Led20 Alias Portd.4
Led21 Alias Portd.5
Led22 Alias Portd.6
Led23 Alias Portd.7
Led24 Alias Portc.0
Led25 Alias Portc.1
Led26 Alias Portc.2
Led27 Alias Portc.3
Led28 Alias Portc.4
Led29 Alias Portc.5
Led30 Alias Portc.6
Led31 Alias Portc.7
Led32 Alias Porta.7
Led33 Alias Porta.6
Led34 Alias Porta.5
Led35 Alias Porta.4
Led36 Alias Porta.3
Led37 Alias Porta.2
Led38 Alias Porta.1
Led39 Alias Porta.0
Led40 Alias Portf.7
Led41 Alias Portf.6
Led42 Alias Portf.5
Led43 Alias Portf.4
Led44 Alias Portf.3
Led45 Alias Portf.2
Led46 Alias Portf.1
Led47 Alias Portf.0
De ha nincs jobb megoldás ez még mindig sokkal jobb mint amit én akartam csinálni.
Köszi :D
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Küldd el egy szubrutinba, ahol szépen kiválogatod, hogy melyik melyik. Ha biztosra mész, még a memóriában az egymás utániakat fixen ki is oszthatod a DIM overlay illetve az At paranccsal...
A hozzászólást 1 alkalommal szerkesztették, utoljára Robert 2010. január 7. csütörtök, 17:17-kor.
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Ok köszönöm énis erre gondoltam.
A kettő megoldást ötvözve fogom elkészíteni.

Köszi
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Futófény 47 LEDre. :)
Én így oldottam meg. Tömbök és ciklusokkal:
Lépés sorrend:
Portok: E:0-7, B:0-7, D:1-7, C:0-7, A:7-0, F:7-0
Port címek memóriába ágyazva:
PortA : H3B
PortB: H38
PortC: H35
PortD: H32
PortE: H23
PortF: H62

Kód: Egész kijelölése

$regfile = "m128def.dat"                                    ' specify the used micro

$crystal = 8000000                                          ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 40                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

$sim

Dim Ib As Byte , Jb As Byte , Port As Byte
Dim Portcim(6) As Byte , Startib(6) As Byte , Stopib(6) As Byte , Stepib(6) As Integer , Adat(8) As Byte
'Port címek:
Portcim(1) = &H23                                           'PORTE
Portcim(2) = &H38                                           'PORTB
Portcim(3) = &H32                                           'PORTD
Portcim(4) = &H35                                           'PORTC
Portcim(5) = &H3B                                           'PORTA
Portcim(6) = &H62                                           'PORTF
'Start Index:
Startib(1) = 1
Startib(2) = 1
Startib(3) = 2
Startib(4) = 1
Startib(5) = 8
Startib(6) = 8
'Stop Index:
Stopib(1) = 9
Stopib(2) = 9
Stopib(3) = 9
Stopib(4) = 9
Stopib(5) = 0
Stopib(6) = 0
'Step Lépés irány:
Stepib(1) = 1
Stepib(2) = 1
Stepib(3) = 1
Stepib(4) = 1
Stepib(5) = -1
Stepib(6) = -1
'PORT Adat:
Adat(1) = 1
Adat(2) = 2
Adat(3) = 4
Adat(4) = 8
Adat(5) = 16
Adat(6) = 32
Adat(7) = 64
Adat(8) = 128

Do
   For Jb = 1 To 6
'   Print Startib(jb) ; " " ; Stopib(jb) ; " " ; Stepib(jb)
   Ib = Startib(jb)
      Do
         Out Portcim(jb) , Adat(ib)
         Waitms 400
         Ib = Ib + Stepib(jb)
      Loop Until Ib = Stopib(jb)
      Out Portcim(jb) , 0
   Next Jb
Loop

End                                                         'end program
De kíváncsi lennék a „DIM overlay illetve az At paranccsal” megoldásra is!? :?: :D
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Vagy ugyan az Set Bits-el, Adattömb nélkül:

Kód: Egész kijelölése

'Porttest2.bas

'Lépés sorrend:
'Portok: E:0->7, B:0->7, D:1->7, C:0->7, A:7->0, F:7->0

'$regfile = "m128def.dat"
$regfile = "m64def.dat"

$crystal = 14745600
'$crystal = 11059200
'$crystal = 8000000

'$baud = 19200
$hwstack = 32
$swstack = 40
$framesize = 40

$sim
'Index változok
Dim Ib As Byte , Jb As Byte , Byt As Byte
'Ciklus vezérlö tömbök
Dim Portcim(6) As Byte , Startib(6) As Byte , Stopib(6) As Byte , Stepib(6) As Integer
'Használt kimenetek beállítása:
Config Porte = Output
Config Portb = Output
Config Portd = &B11111110                                   'PORTD.0 bitet nem használja
Config Portc = Output
Config Porta = Output
Config Portf = Output

'Használt Port címek kapcsolás sorrendjében:
Portcim(1) = &H23                                           'PORTE Addr
Portcim(2) = &H38                                           'PORTB Addr
Portcim(3) = &H32                                           'PORTD Addr
Portcim(4) = &H35                                           'PORTC Addr
Portcim(5) = &H3B                                           'PORTA Addr
Portcim(6) = &H62                                           'PORTF Addr
'6db. Porthoz ciklus értékek:
'Start Index:
Startib(1) = 0
Startib(2) = 0
Startib(3) = 1
Startib(4) = 0
Startib(5) = 7
Startib(6) = 7
'Stop Index:
Stopib(1) = 8
Stopib(2) = 8
Stopib(3) = 8
Stopib(4) = 8
Stopib(5) = 255
Stopib(6) = 255
'Step Lépés köz, irány:
Stepib(1) = 1
Stepib(2) = 1
Stepib(3) = 1
Stepib(4) = 1
Stepib(5) = -1
Stepib(6) = -1

'Futófény 47/1 LEDre.
Do
   For Jb = 1 To 6                                          '6db Port léptetés
      Ib = Startib(jb)                                      'Aktuális port kezdő Index érték
      Do
         Byt = 0
         Set Byt.ib                                         'Ib címzi a Port.bites.
         Out Portcim(jb) , Byt                              'Set Adat Bit(ib)
         Waitms 400
         Ib = Ib + Stepib(jb)                               'Indexléptetés
      Loop Until Ib = Stopib(jb)                            'Index vége
      Out Portcim(jb) , 0                                   'Aktuális Port törlés
   Next Jb

' Bűvészkedés a tömb indexekkel, és értékekkel!
' Knight Rider
   Byt = 255
   For Jb = 1 To 6                                          'Összes LED kigyújtása
   Out Portcim(jb) , Byt
   Next Jb
'Árnyák Futó Oda
   For Jb = 1 To 6                                          '6db Port léptetés
      Ib = Startib(jb)                                      'Aktuális port kezdő Index érték
      Do
         Byt = 255
         Reset Byt.ib                                       'Ib címzi a Port.bites.
         Out Portcim(jb) , Byt                              'Set Adat Bit(ib)
         Waitms 60
         Ib = Ib + Stepib(jb)                               'Indexléptetés
      Loop Until Ib = Stopib(jb)                            'Index vége
      Out Portcim(jb) , 255                                 'Aktuális Port törlés
   Next Jb
'Vissza futó árnyék
   For Jb = 6 To 1 Step -1                                  '6db Port léptetés
      Ib = Stopib(jb) - 1                                   'Hátulról kezdi, és korrigál -1-el. Aktuális port kezdő Index érték
      Vbyt = Startib(jb)
      If Vbyt = 7 Then                                      'Értékek korrigálása
            Vbyt = Vbyt + 1
         Else
           Vbyt = Vbyt - 1
         End If
      Sbyt = Stepib(jb) * -1                                'Step Negálása
      Do
         Byt = 255
         Reset Byt.ib                                       'Ib címzi a Port.bites.
         Out Portcim(jb) , Byt                              'Set Adat Bit(ib)
         Waitms 30
         Ib = Ib + Sbyt                                     'Indexléptetés
      Loop Until Ib = Vbyt                                  'Az elején van Index vége
      Out Portcim(jb) , 255                                 'Aktuális Port törlés
   Next Jb
'
   Byt = 0
   For Jb = 1 To 6                                          'Összes LED kioltása
   Out Portcim(jb) , Byt
   Next Jb

Loop

End                                                         'end program
8)
A hozzászólást 6 alkalommal szerkesztették, utoljára kapu48 2010. január 9. szombat, 10:45-kor.
Avatar
Allspark
Bitmanipulátor
Hozzászólások: 106
Csatlakozott: 2009. július 9. csütörtök, 6:00

Hozzászólás Szerző: Allspark »

Hát köszönöm hogy vetted a fáradtságot ehhez, nagyon jó megoldás szerintem. Biztos hogy ezt fogom alapul venni.

Köszi
Avatar
Theophrast
SzínkódFestő
Hozzászólások: 78
Csatlakozott: 2011. július 17. vasárnap, 6:00

Hozzászólás Szerző: Theophrast »

Sziasztok
Ismét egy kis segitségre lenne szükségem
az alias-t hogyan lehet használni bascomban?

adott néhány led és néhány nyomógomb amelyeknek az álapotát egy for next ciklussal szeretném lekérdezni
hogyan lehetne rájuk hivatkozni?

Kód: Egész kijelölése

Led.1 Alias Portb.2
Led.2 Alias Portd.0
Led.3 Alias Portc.2
.
.
.
Led.8 Alias Portc.0

Gomb.1 Alias Pinc.3
Gomb.2 Alias Pind.2
.
.
.
.
.
Gomb.9 Alias Pinb.1



For K = 1 To 9
    If Gomb.k = 0 Then
    'csináljon valamit
    End If
Next K
ha valahogyan tömbként kezelnénk ? :?
már kiprobáltam egysmást, a bascom szintaktikailag nem értelmezi én pedig lassan kezdek kifogyni az ötletekből... :roll:
Ha valaki segitene azt nagyon megköszönném
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Hát, aliassal ezt sehogy...

declare Sub és 1 vagy 2 paraméter átadásával nem jó?
Avatar
Theophrast
SzínkódFestő
Hozzászólások: 78
Csatlakozott: 2011. július 17. vasárnap, 6:00

Hozzászólás Szerző: Theophrast »

Így lett volna a legegyszerübb és legkényelmesebb...
csak sajnos igy nem lehet megoldani :(
Azért köszönöm
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Declare sub ledkirak (a as byte, b as byte)

.
.
.
.

ledkirak (23,10)
.
.
.
end


sub (a as byte, b as byte)
portvalami.v=a
.
.
.
..
end sub
Válasz küldése