 |

|
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 03 10, 23:18. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Programavimo problemos
|
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
|
|
|
 |
 |
 |
Programavimo problemos |
Parašytas: 2012 06 22, 16:00 |
|
|
|
Gal kas galėtu padėt išsiaiškint tokia programos fragmentą;
MOV DPTR, #0FF00H ;suprantu, kad čia į registrą
; DPTR įrašo šešioliktainį sk.
MOV R2, DPL ;čia iš DPTR registro žemesnės dalies perrašo į R2
MOV R3, DPH ;čia iš DPTR registro aukštesnės dalies perrašo į R3
CLR C ;išvalo CY bitą PSW registre
MOV A, R2 ;R2 turini perkelia į akumumuliatorių
SUBB A, DPL ;iš A turinio atima DPL turinį
MOV R2,A ;A turinį įrašo į R2
aš suprantu, kad iš įrašyta į iš DPL į R2 turinį atima tą patį skaičių, kuris yra DPL ir R2 turėtu būt 0, vėliau:
MOV A, R3 ;R3 turini perkelia į akumumuliatorių
SUBB A, DPH ;iš A turinio atima DPH turinį
MOV R3,A ;A turinį įrašo į R3
čia tas pats tik su registrais DPH ir R3, R3 manau taip pat turėtu būt 0, nes į R3 iš DPH įrašytas sk. įrašomas į akumuliatoriu, vėliau atimamas sk. esantis DPH iš esančio akumuliatoriuje.
Pagal aprašyma iš skaičiaus esančio R3R2 atimama 10000
0FF00H šešioliktainėj, tai dešimtainėj 65280, kaip čia iš to sk. atimama 10000, nesuprantu P.S. esu naujokas šioje srityje |
|
|
|
|
 |
 |
Programavimo problemos |
Parašytas: 2012 06 22, 17:20 |
|
|
|
kad cia pastoviai gausi nuli pagal sita fragmenta nes is R3(DPL rieksme) - DPL, ir tas pats su dph. Beto jei realiai rasant tai keikviena kart po atimties turi tikrint carry velevele ir pries atimti ja nunulinti. Realiai DPTR skirtas atminciai adresuoti, jei cia apie 8051 mikrovaldikli ir turi zaist tik su registrais paprastais 8 bitu i jais susimetus dalis skaiciaus.
jei riek pacios programos kuri is skaiciaus teigiamu didesniu uz 2710h atima 10000d->2710h
mov R1,#27h
mov R2,#10h
crl c
mov A,R4; tavo skaicius bus R3 R4
subb A,R2
mov R4,A
jnc testi ;jei R4>R2
dec R3 ;jei R4<R2
testi:
mov A,R3
subb A,R1
mov R3,A |
|
|
|
|
 |
 |
Programavimo problemos |
Parašytas: 2012 06 23, 07:17 |
|
|
|
labai ačiu, už patarimą. šiaip čia aš apsižioplinau:
MOV DPTR, #0FF00H; įrašo sk.
MOV R2, DPL; įrašo žemesnę dalį DPTR į R2
MOV R3, DPH; įrašo aukštesnę dalį DPTR į R3
......
MOV DPTR, #10000; perrašo į DPTR jau kita sk., kuri ir atima, šia eilutę pražiopsojau. Turbut dėl patyrimo stokos, šioje programoje daug šuolių. Bet iškilo kitas klausymas, pradžioje programos eina adresų priskyrimas
R7 .EQU 7; priskyriam 7 adresui registrą R7
R6 .EQU 6; priskyriam 6 adresui registrą R6
........
PSW .EQU 0D0H; priskyriam 0D0H adresui registrą PSW
DPL .EQU 82H; priskyriam 82H adresui registrą DPL
DPH .EQU 83H; priskyriam 83H adresui registrą DPH
........
bet niekur nemačiau, kad DPTR'ui būtu priskyrtas koks nors adresas pvz.:
DPTR .EQU 82H; toks pats, kaip ir DPL, nes kiek suprantu DPL ir DPH įeina į DPTR sudėti.nes tokiu atveju komandos
MOV DPTR, #0FF00H; ir
MOV DPTR, #10000; netenka prasmės, neaišku kontroleriui kur įrašyti šiuos sk., nes DPTR'ui nepriskyrtas joks adresas...
P.S išanksto dėkoju... |
|
|
|
|
 |
 |
Programavimo problemos |
Parašytas: 2012 06 23, 13:50 |
|
|
|
keista kad kazkas R7 R6 registrus pervadinima i lasteles (EQU komanda priskiria konstantas programuotojo) .
Pats dptr yra procesoriaus 16bit adresu registras.
jei naudoji dptr kaip konstanta tai nlb suprantu tavo programos, bandei manaja? |
|
|
|
|
 |
Programavimo problemos |
Parašytas: 2012 06 23, 16:40 |
|
|
|
nebandžiau, dar šiek tiek žinių trūksta, aš čia kol kas dar teorijos semiuosi, tą programą iš knygos studijavau "Микроконтролеры? это очень просто том1" . Išbandyt, tai turbut kokio simuliatoriaus reikia? Aš tai ten supratau,
pirmas lastelias priskiria registrams, nes programa prasideda taip:
R7 .EQU 7 ; АДРЕСА РЕГИСТРОВ R0-R7
R6 .EQU 6
R5 .EQU 5
........
R1 .EQU 1
R0 .EQU 0
ACC .EQU 0E0H ; АДРЕС АКУМУЛЯТОРА
B .EQU 0F0H ; АДРЕС РЕГИСТРA B
........
Aš čia suprantu, kad čia yra priskyriami adresai registrams |
|
|
|
|
 |
 |
Programavimo problemos |
Parašytas: 2012 06 23, 17:01 |
|
|
|
registras tai procesoriaus dalis, realiai siulyciau issirasyt IAE nebloga simuliatorius ir asembleri ir c kalba ima o literatura siulyciau paskaitu konspekta googlej paeiskojus mikroprocesoriai. Isesmes pirma norint asembleriu programint riekia gerai isstudijuoti jo architektura nes kitaip nlb iseis. Architekturos sarasas tai pat kaip ir jo asemblerio komandu sarasa gali rasti mikroprocesoriaus datasheete. |
|
|
|
|
 |
 |
 |
 |
Programavimo problemos |
Parašytas: 2012 06 24, 10:46 |
|
|
|
Aš atsisiunčiau, IAR simuliatoriu, susiinstaliavau. Nelabai žinau nuo ko pradėt, susikūriau projektą joje yra kaip ir direktorija Asmmain.s51 pagrindiniame lauke yra automatiškai sukurta programos pradžia:
NAME main ;čia suprantu, kad yra programos
................................;pavadinimas
PUBLIC main ;čia kiek su C++ turėjau reikalų, tai rašomi
................................;kintamieji,
................................;tai čia gal reikia surašyt visus priskyrimus tokius,
................................; ....ACC .EQU 0E0H....., ar kažką panašaus?
ORG 0FFFEh ;čia suprantu, kad sekanti komanda, nuo adreso
...............................;0FFFEH, kaip ir tolokai tą pradžia, gal iki čia
...............................; skirta kintamiesiems surašyt?-kintamųjų sritis
DC16 main ;čia nežinau, bet įtariu, kad kontrolerio tipas?
RSEG RCODE ;šito išvis nežinau
main NOP ; nuo čia suprantu turi prasidėt asm kodas?
...............................; kurios pirma komanda tuščia, kaip ir laiko
...............................;užlaikymas
END main ; programos pabaiga
Gal ir kvaili pasirodys klausymai, bet man tai pradžia, nenoriu pasirodyt įkyrus, bet turiu kelis klausymus, kur man reikia pradėt rašyt programos kodą? ar išvis čia? ar teisingi mano pamastymai? Tikiuosi nelabai kvailai atrodau, bet jie jus prajuokinau tokiais klausymais, tai irgi neblogai....
P.S. nkreikit dėmesio į taškus, jie tik tam , kad būtu galima lengviau atskirt programą nuo komentarų |
|
|
|
|
 |
 |
Programavimo problemos |
Parašytas: 2012 06 24, 17:11 |
|
|
|
gal kas galėtu pasakyt, ar IAR simuliatoriuje galima rašyt kodą asembleriu?, nes kol kas aš suprantu, kad ten galima tik C |
|
|
|
|
 |
Programavimo problemos |
Parašytas: 2012 06 25, 15:46 |
|
|
|
ten visoms imanomoms kalboms, mano anksciau rasyta programa:
Kodas: |
#include "ioADuC841.h"
name main ; Pagrindinė programa
public __program_start ; Zymes C-SPY derinimo irankiui
public main
__program_start:
main:
mov R1,#27h
mov R2,#10h
clr c
mov A,R4; tavo skaicius bus R3 R4
subb A,R2
mov R4,A
jnc testi ;jei R4>R2
dec R3 ;jei R4<R2
testi:
mov A,R3
subb A,R1
mov R3,A
?C_EXIT: ; Programos exit yme, naudojama C-SPY irankiui exit:
ret ; griti
END |
faila butina issaugoti asm pletiniu kitaip nlb funkcinuos. |
|
|
|
|
 |
Programavimo problemos |
Parašytas: 2012 06 25, 16:36 |
|
|
|
#include "ioADuC841.h"; , čia turbūt reikia šią bilioteką nurodyt, kad susikalbėtų su asembleriu?
public __program_start; čia gal deklaruojama funkcija?
panašu į C, bet, rašant funkcijos "main" kamieną, reiktu įterpt į {}? |
|
|
|
|
 |
Programavimo problemos |
Parašytas: 2012 06 25, 18:22 |
|
|
|
erikasmik rašo: |
#include "ioADuC841.h"; , čia turbūt reikia šią bilioteką nurodyt, kad susikalbėtų su asembleriu?
public __program_start; čia gal deklaruojama funkcija?
panašu į C, bet, rašant funkcijos "main" kamieną, reiktu įterpt į {}? |
as tau visa veikencia programa parasiau... o tu dar bandai prisikabint. ten kur main ir kita velniava neklausk paprasciausiai tokia sintakse sitam kompiliatoriui o kas viduj tai grynas 8051 mikroprocesoriaus asemblerio kodas. |
|
|
|
|
 |
Programavimo problemos |
Parašytas: 2012 06 26, 07:49 |
|
|
|
Atisiprašau, toks aš jau, bandau viską iš pagrindų, pabandysiu programą nukopijuot ir pažiūrėt.... |
|
|
|
|
|
 |
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 |
 |
LEGO
Mänguköök,
mudelautod,
nukuvanker |
 |
KCD2 Mods
Installing KCD 2 Mods,
KCD 2 Guides,
KCD 2 Cheats |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
GTA 6 Wiki
GTA 6 Map,
GTA 6 Characters,
GTA 6 News |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|

|
 |