Witam Nie chcia³ mi ruszyæ kawa³ek programu który przenosi³em z 51' na Atemgê8. Ju¿ my¶la³em ¿a jakies przerwy w druku bo nie mog³em zbadaæ stanu klawisza, co z pozoru mi siê wydawa³o banalne. w 51': if P1.1=0 then ....... i to dzia³a³o
w AVR: if Pind.4=0 then........ to nie dzia³a
a co¶ takiego: A=Pind.4 if A=0 then ........ dzia³a Czy da siê jako¶ zbadaæ stan pinu bezpo¶rednio? nie chcê mno¿yæ zmiennych i nie chce mi siê pisaæ tego po kilkana¶cie razy. Piotr
Didn't find your answer? Ask the community — no account required.
P
Piotrek Sz.
Piotr snipped-for-privacy@poczta.onet.pl> napisał(a):
Spróbuj tak: .. Config Pind.4 = Input 'Ustaw jako wejście Portd.4 = 1 'Włącz Pull-up If Pind.4=0 Then ..
Piotr ;)
P
Piotr
U¿ytkownik "Piotrek Sz." snipped-for-privacy@gazeta.SKASUJ-TO.pl> napisa³ w wiadomo¶ci news:djfic2$5s9$ snipped-for-privacy@inews.gazeta.pl...
W³asnie tak mam i zastanawia mnie czemu nie dzia³a :(
Piotr
Z
zuras
Piotr napisał(a):
W rejestrze portX można odczytać wartośc którą się wpisało do portu ale do odczytu stanu wejść widzianych z zewnątrz mikrokontrolera trzeba użyć rejestru pinX.X lub odczytu całego portu pinX.
P
Piotr
U¿ytkownik "zuras" snipped-for-privacy@tlen.pl napisa³ w wiadomo¶ci news:djfs8j$mui$ snipped-for-privacy@atlantis.news.tpi.pl...
Poczytaj co piszê, w³a¶nie u¿ywam Pinx.x, tylko problem w tym ¿e aby go u¿yæ w IF muszê go wcze¶niej przypisaæ do jakie¶ zmiennej inaczej IF daje taki efekt jakby na pinie by³a ca³y czas jedynka. Piotr
Z
Zbych
Zamiast czekać na odsiecz wróżki, która zgadnie czemu to nie działa, mógłbyś o wiele szybciej porównać kody wynikowe obydwu przypadków (bascom produkuje jakiś listing assemblerowy?).
P
Piotr
U¿ytkownik "Zbych" snipped-for-privacy@onet.pl napisa³ w wiadomo¶ci news:djfvuh$2ur8$ snipped-for-privacy@news.mm.pl...
Chyba poczekam na wró¿kê, nie widzê aby co¶ takiego generowa³, chyba ¿e gdzie¶ w opcjach mo¿na to wymusiæ, ponadto nie znam assemblera :) Piotr
P
Piotrek Sz.
Piotr snipped-for-privacy@poczta.onet.pl> napisał(a):
Postanowiłem częściowo zastąpić wróżkę ;-) Kod jaki wygenerował Bascom: ..
3: Config Pind.4 = Input
+00000026: 988C CBI 0x11,4 Clear bit in I/O register
4: Set Portd.4
+00000027: 9A94 SBI 0x12,4 Set bit in I/O register ;---------------------------------------------------------------------
6: A = Pind.4
+00000028: 27BB CLR R27 Clear Register
+00000029: E3A0 LDI R26,0x30 Load immediate
6: A = Pind.4
+0000002A: 918C LD R24,X Load indirect
+0000002B: FB84 BST R24,4 Bit store from register to T
6: A = Pind.4
+0000002C: E6A0 LDI R26,0x60 Load immediate
+0000002D: E0B0 LDI R27,0x00 Load immediate
6: A = Pind.4
+0000002E: 2788 CLR R24 Clear Register
+0000002F: F980 BLD R24,0 Bit load from T to register
6: A = Pind.4
+00000030: 938C ST X,R24 Store indirect ;----------------------------------------------------------------------
7: If Pind.4 = 0 Then
+00000031: 2700 CLR R16 Clear Register
+00000032: 27BB CLR R27 Clear Register
7: If Pind.4 = 0 Then
+00000033: E3A0 LDI R26,0x30 Load immediate
+00000034: 918C LD R24,X Load indirect
7: If Pind.4 = 0 Then
+00000035: FB84 BST R24,4 Bit store from register to T
+00000036: F40E BRTC PC+0x02 Branch if T flag cleared
7: If Pind.4 = 0 Then
+00000037: E001 LDI R16,0x01 Load immediate
+00000038: E040 LDI R20,0x00 Load immediate
7: If Pind.4 = 0 Then
+00000039: 1704 CP R16,R20 Compare
+0000003A: F009 BREQ PC+0x02 Branch if equal
7: If Pind.4 = 0 Then
+0000003B: C001 RJMP PC+0x0002 Relative jump
8: nop
+0000003C: 0000 NOP No operation
10: Loop
+0000003D: CFEA RJMP PC-0x0015 Relative jump
+0000003E: 9731 SBIW R30,0x01 Subtract immediate from word
10: Loop
+0000003F: F7F1 BRNE PC-0x01 Branch if not equal
+00000040: 9508 RET Subroutine return
10: Loop
+00000041: 9468 SET Set T in SREG
+00000042: F862 BLD R6,2 Bit load from T to register
10: Loop
+00000043: 9508 RET Subroutine return
+00000044: 94E8 CLT Clear T in SREG
10: Loop
+00000045: F862 BLD R6,2 Bit load from T to register
+00000046: 9508 RET Subroutine return .. dla poniższego źródła:
$regfile = "m8def.dat" Dim A As Byte Config Pind.4 = Input Set Portd.4 Do A = Pind.4 If Pind.4 = 0 Then nop End If Loop
Jak dla mnie OK , mimo że zrobione jakby okrężną drogą :)
Piotr
PS Pokaż całe źródło , jeśli chcesz ;)
P
Piotr
U¿ytkownik "Piotrek Sz." snipped-for-privacy@gazeta.SKASUJ-TO.pl> napisa³ w wiadomo¶ci news:djg42h$o8l$ snipped-for-privacy@inews.gazeta.pl...
A sk±d go masz? to mo¿e byæ pouczaj±ce.
:) pomóg³ reset komputera, d³u¿sza praca na Bascomie ARV skutkuje u mnie topnieniem zasobów :(, w pewnej chwili przesta³ siê pokazywaæ programator wiêæ uruchomi³em jeszcze raz system. W Twoim przyk³adzie chyba powinien byæ Dim A as bit choæ byte te¿ pewnie zadzia³a
To by³o prawie ca³e ¼ród³o, w przerwaniu od INT0 ma sobie zliczaæ zegar, a przej¶cie do innych funkcji jest robiome klawiszami, klawisz MENU mia³em w³a¶nie sprawdzaæ w ka¿dym przerwaniu i napisa³em sobie tylko tyle:
$regfile = "m8def.dat" Config Pind.4 = Input Set Portd.4 Do If Pind.4 = 0 Then LCD "klawisz wcisniety" End If Loop
By³a jeszcze deklaracja pinów do LCD i to tyle, teraz dzia³a, aby nie wypisywaæ portów porobi³em sobie aliasy, niby robi to samo ale przyjemniej :). Piotr
P
Piotrek Sz.
Piotr snipped-for-privacy@poczta.onet.pl> napisał(a):
Na taki luksus , pozwala AvrStudio.Już dawno zarzuciłem bascomowy symulator.
Ani słówkiem nie wspomniałeś , że tylko "symulujesz" ;)
To jest bez znaczenia.Dowolna zmienna , przed zapisem do niej wartości bitowej , jest zerowana.
..
Piotrek
P
Piotr Pitucha
U¿ytkownik "Piotrek Sz." snipped-for-privacy@gazeta.SKASUJ-TO.pl> napisa³ w wiadomo¶ci news:djgln9$a2m$ snipped-for-privacy@inews.gazeta.pl...
Dziêki za info, bêdê musia³ siê z tym zaprzyja¼niæ.
Nie wspomnia³em bo to nie by³a symulacja tylko rzeczywisty uk³ad :), programowanie wprost z poziomu Bascoma AVR
Te¿ mam takie przekonanie :) tylko przy ma³ych procesorkach chyba oszczêdniej je¶li zmienna jest bitowa, przewróci³em siê kiedy¶ na tym na
2051 jak mi brak³o miejsca na zmienne. A ogólnie to muszê lizn±æ assemblera, czasami przyda³yby siê jakie¶ wstawki w programie. Pozdrawiam Piotr
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.