 |

|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 11 28, 23:43. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » kintamūjų vieta mikrokontroleryje...
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 17:49 |
|
|
|
|
Man dabar nelabai aiški ši vieta.
programa:
| Kodas: |
.include "2313def.inc"
.def c =r16
sbr c, 0 |
Sukompiliavus gaunasi: 00 60
1 skaičius registras.
2. pirmi 4 kintamoju bitai.
4. kiti 4 kintamoju bitai.
Ką reiškia tas "6" ?
Pratęsiu klausimą:
| Kodas: |
.include "tn2313def.inc"
.def c =r16
sbr c, 255
out DDRD, c |
hex'as 0F 6F 01 BB
Pirma pusė beveik aiški (išskyrūs; žiūrėti pirma klaisimo dalį)
Antra pusė:
1 skaičius kaip suprantu registro adresas kuriame yra kintamasis.
2 skaičius registro kuriam priskiriamas šis skaičius, čia irgi iškyla klausimas: DDRD būna "1", DDRB "7". Nepavyksta man šiū skaičių susieti su datasheet'e parašytai adresais
3,4 ką reiškia "BB" ?
p.s. kaip reikia skaičiuoti pvz. 6F tai vienas ar du skaičiai?  |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
 |
Re: kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 19:30 |
|
|
|
|
| Vytautasr rašo: |
Man dabar nelabai aiški ši vieta.
programa:.def c =r16
sbr c, 0
Sukompiliavus gaunasi: 00 60 |
Taigi viskas teisingai. Tik susikeisk baitus vietomis kad suprastum. Perrašau binariniu būdu:
0b0110-kkkk.dddd-kkkk.
Taigi 0110 (6) reiškia SBR komandą. dddd reiškia registro numerį pradedant R16. T.y., R16 bus 0000, R17 bus 0001 ir t.t. O kkkkkkkk reiškia tą konstantą "0", kurią bandai priskirti registrui.
Su sbr c, 255 lygiai tas pats. Susikeisk baitus vietomis, ir gausi tą patį "6" reiškiantį SBR komandą, FF reiškiantį 255, O likęs "0" reiškia R16. |
|
|
|
|
|
 |
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 21:00 |
|
|
|
|
Dėkui, supratau.
Dabar kita mintis.
kodėl programa parašyta su ASM užima 5 kartus mažiau vietos, nei parašyta su C?
ASM kodas
| Kodas: |
.include "tn2313def.inc"
.def c =r16
sbr c, 0b101001 ;TCCR1A
.def d =r17
sbr d, 127 ; OCR1BL
.def e =r18
sbr e, 255 DDRB
.def f =r19
sbr f, 0b10 ; TCCR1B
out DDRB,e
out TCCR1A, c
out TCCR1B, f
out OCR1BL, d |
| Kodas: |
:020000020000FC
:1000000009621F672F6F326027BB0FBD3EBD18BD51
:00000001FF |
C kodas
| Kodas: |
#include "iotiny2313.h"
void main(){
DDRB=(1<<DDB4);
TCCR1A=(1<<COM1B1)|(1<<WGM10);
TCCR1B=(1<<CS11);
OCR1B=127;
} |
| Kodas: |
:100000001DC0189518951895189518951895189558
:100010001895189518951895189518951895189578
:1000200018951895189500E107BB01E20FBD02E095
:100030000EBD0FE710E019BD08BD08950FE90DBF13
:10004000C0E803D0F0DF03D002C001E00895000053
:040050008895FECFC2
:00000001FF |
Daro jos lyg ir tą patį jei aš čia į pievas plaukiu tai pasakykit, tik prieš kelias dienas ASM pradėjau klibinti. [/code] |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 21:12 |
|
|
|
|
todel kad c kalbos nemoki optimaliai panaudoti.
jei nori optimizuoti pasiziurek tarpini asamblerio varinta
o saip c dar visokiu papildomu dalyku prideda. ir visai gali buti kad tavo kompilatorius tiap ir sukiso visa ta (1<<COM1B1)|(1<<WGM10); ne kaip viena skaiciu .
pvz kaip sukompilavo codevision
| Kodas: |
; 73 while (1)
_0x3:
; 74 {
; 75
; 76
; 77 ********** DDRB=33;
LDI R30,LOW(33)
OUT 0x17,R30
; 78 *********** TCNT0=0x56;
LDI R30,LOW(86)
OUT 0x32,R30
; 79 ************* OCR0A=0x77;
LDI R30,LOW(119)
OUT 0x36,R30
; 80 *********** OCR0 B=0x55;
LDI R30,LOW(85)
OUT 0x29,R30
; 81
; 82
; 83 };
RJMP _0x3
; 84 } |
|
|
|
|
|
|
 |
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 21:22 |
|
|
|
|
Man čia kažkaip į asemblerį daugiau neša, nei C
Parašius taip užima tiek tap
| Kodas: |
#include "iotiny2313.h"
void main(){
DDRB=255;
TCCR1A=41;
TCCR1B=2;
OCR1B=127;
} |
|
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 21:59 |
|
|
|
|
tai cia mano pavyzdys is .asm failo kaip c kompilatorius dirba.
tu irgi jei svarbu, pasiziurek ka kompilatorius padare. , tai bus aisku kodel gaunamos nesamones |
|
|
|
|
|
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 22:04 |
|
|
|
|
| Digix rašo: |
tai cia mano pavyzdys is .asm failo kaip c kompilatorius dirba.
tu irgi jei svarbu, pasiziurek ka kompilatorius padare. , tai bus aisku kodel gaunamos nesamones |
Nelabai supratau kas čia norėta pasakyti  |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 22:47 |
|
|
|
|
| Kaip čia IAR'e tai padaryti? |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 03, 23:26 |
|
|
|
|
| Vytautasr rašo: |
| Kaip čia IAR'e tai padaryti? |
Uždėti varneles prie options kad sukurtų ASM failus.
Arba pasileisti debugerį/simuliatorių. Ten irgi matysi ASM komandas. |
|
|
|
|
|
 |
kintamūjų vieta mikrokontroleryje... |
Parašytas: 2006 09 04, 07:22 |
|
|
|
|
Supratau  |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |