Úprava kódu v assembleri
Moderátori: psichac, Moderátori
-
- Okoloidúci
- Príspevky: 27
- Dátum registrácie: 02 Nov 2018, 23:04
- Bydlisko: Beňadikovce
- Vek: 21
Úprava kódu v assembleri
Dobrý deň prajem, zapáčil sa mi merač kapacity akumulátorov od DANYKA (http://danyk.cz/avr_aku.html) lenže mám displej so spoločnou katódou. Vedel by niekto upraviť (respektíve vysvetliť mi čo upraviť za čo) kód v prílohe? Ďakujem pekne.
- Prílohy
-
- avr_aku.asm
- (20.95 KiB) 128 stiahnutí
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Úprava kódu v assembleri
Podľa schémy je displej zapojený na port B a D. To si trochu nešťastne pomenoval autor ako PORT a PORT3
pre zmenu ovladania displeja stačí negovať všetky hodnoty ktoré sa posielajú na tieto porty. Kedže to má rozhádzané na veľa miestach tak to treba zmeniť všade
ľahké je to napr na konci kde je tabuľka znakov.
stačí zmeniť 1 za nuly a naopak.
Podobne všade kde sa pracuje s portom pomenovaným PORT
a tiež PORT3. Naštastie to tam písal pekne binarne takže je to ľahké, len je toho veľa. (tak na 5 minút s CTRL-F)
Kód: Vybrať všetko
.EQU SMER=DDRD
.EQU PORT=PORTD
.EQU SMER2=DDRC
.EQU PORT2=PORTC
.EQU VSTUPY=PINC
.EQU SMER3=DDRB
.EQU PORT3=PORTB
ľahké je to napr na konci kde je tabuľka znakov.
Kód: Vybrať všetko
; tabulka znakove sady (1gfedcba)
TABULKA:
.DB 0b11000000,0b11111001 ;0, 1
.DB 0b10100100,0b10110000 ;2, 3
.DB 0b10011001,0b10010010 ;4, 5
.DB 0b10000010,0b11111000 ;6, 7
.DB 0b10000000,0b10010000 ;8, 9
.DB 0b11111110,0b11111111 ;Nad, Nic
Podobne všade kde sa pracuje s portom pomenovaným PORT
Kód: Vybrať všetko
LDI REG,0b11111111
OUT PORT,REG
Kód: Vybrať všetko
MULT: ;multiplex
LDI REG,0b000001
OUT PORT3,REG
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
-
- Okoloidúci
- Príspevky: 27
- Dátum registrácie: 02 Nov 2018, 23:04
- Bydlisko: Beňadikovce
- Vek: 21
Re: Úprava kódu v assembleri
Ďakujem veľmi pekne za odpoveď, no veľmi to nefungovalo. Jediné čo malo na lcd displej ako taký vplyv bolo že oproti pôvodnému kódu
som to zmenil na
S pôvodným kódom na displeji svieti 6.6.6.6.
V Assembleri som v živote neprogramoval, čiže keď som dačo zle pochopil, alebo dačo robím zle, nechám sa rád poučiť.
Kód: Vybrať všetko
START:
;nastaví port D
LDI REG,0b11111111
OUT SMER,REG
LDI REG,0b11111111
OUT PORT,REG
Kód: Vybrať všetko
START:
;nastaví port D
LDI REG,0b11111111
OUT SMER,REG
LDI REG,0b00000000
OUT PORT,REG
V Assembleri som v živote neprogramoval, čiže keď som dačo zle pochopil, alebo dačo robím zle, nechám sa rád poučiť.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Úprava kódu v assembleri
Zmenil si to všade alebo len na tom jednom mieste?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Úprava kódu v assembleri
Pozrel som ten kód znova a ako spieva Richard Miler - "Nebude to také ľahké, drahá"
Je tam napríklad
Toto už je horšie a v tom kóde je takých miest pomerne dosť kde sa hodnota posielaná na PORT vypočítava. Jednoducho iba znegovať tabuľku znakov nestačí. Lebo často tam nahádže iné hodnoty mimo tej tabulky. A SBI PORT3,x som si na prvý náhľad nevšimol.
Takže zmena prístupu zober zase ten origo súbor. Nikde neprehazduj 0 na 1.
Potom pred každý riadok OUT PORT,xxx daj riadok COM xxx (vela miest)
pred každý riadok OUT PORT3,xxx dať tiež riadok COM xxx (dve miesta)
A všetky SBI PORT3,x treba zmeniť na CBI PORT3,x (tiež veľa miest)
Ale najľahšie je kúpiť si správny displej.
Je tam napríklad
Kód: Vybrať všetko
MULT_A3:
MOV REG,CIF2
RCALL ZOBRAZ
CPI ROZREG,1
BRNE TECKA_A3_NE
ANDI REG,0b01111111
TECKA_A3_NE:
OUT PORT,REG
SBI PORT3,4
RET
Kód: Vybrať všetko
MULT_A3:
MOV REG,CIF2
RCALL ZOBRAZ
CPI ROZREG,1
BRNE TECKA_A3_NE
ANDI REG,0b01111111
TECKA_A3_NE:
COM REG ;Negacia REG pred vyslatim na PORT
OUT PORT,REG
CBI PORT3,4
RET
Potom pred každý riadok OUT PORT,xxx daj riadok COM xxx (vela miest)
pred každý riadok OUT PORT3,xxx dať tiež riadok COM xxx (dve miesta)
A všetky SBI PORT3,x treba zmeniť na CBI PORT3,x (tiež veľa miest)
Ale najľahšie je kúpiť si správny displej.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Úprava kódu v assembleri
Mozno bude jednoduchsie investovat do spravneho dispaly-a
Ale ak sa chces zdokonalit v assembleri, tak toto je dobry zaciatok
Ale ak sa chces zdokonalit v assembleri, tak toto je dobry zaciatok
0
-
- Ultimate člen
- Príspevky: 3963
- Dátum registrácie: 04 Feb 2013, 22:04
- Bydlisko: U alibabky v Poprade
- Vek: 32
Re: Úprava kódu v assembleri
Nie, toto je velmi zly zaciatok.
Dobry zaciatok je vediet blikat ledkou.
Dobry zaciatok je vediet blikat ledkou.
0
Motto: Nikto nie je tak velky, aby sa nevosiel do truhly.
Re: Úprava kódu v assembleri
Som si teraz precital, ze je v zivote v assembleri nerobil, takze potom je ta ledka spravny zaciatok
Asi kupit spravny display bude jednoduchsie
Asi kupit spravny display bude jednoduchsie
0
-
- Okoloidúci
- Príspevky: 27
- Dátum registrácie: 02 Nov 2018, 23:04
- Bydlisko: Beňadikovce
- Vek: 21
Re: Úprava kódu v assembleri
Ďakujem veľmi pekne za pomoc ale zmenil som to tak, no zasa nič, asi bude jednoduchšie kúpiť vhodný displej.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Úprava kódu v assembleri
tak posledný pokus. Ešte som si uvedomil jednu chybu čo som tam zavliekol. Tentoraz som to pre istotu prerobil u seba. Komplet upravený asm nájdeš v prílohe.
- Prílohy
-
- avr_aku.asm
- (21.19 KiB) 135 stiahnutí
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
-
- Okoloidúci
- Príspevky: 27
- Dátum registrácie: 02 Nov 2018, 23:04
- Bydlisko: Beňadikovce
- Vek: 21
Re: Úprava kódu v assembleri
Ahoj, ďakujem veľmi pekne za tak veľkú snahu, no nefungovalo, zoženiem si iný displej, taký aký má byť, dám vedieť či to pôjde. Každopádne K+, takých ľudí ako si ti nie je často vidieť, cením si to...
0
-
- Okoloidúci
- Príspevky: 27
- Dátum registrácie: 02 Nov 2018, 23:04
- Bydlisko: Beňadikovce
- Vek: 21
Re: Úprava kódu v assembleri
FUNGUJE !! Kúpil som displej, taký aký má byť, a zobral som ešte zopár kryštálov, idem vymeniť displej, no ,,len tak pre istotu" som vymenil aj kryštál. A čuduj sa svete, s kódom ktorý mi pomáhal upraviť peterple (nižšie) a mojím displejom so spoločnou katódou to fungovalo na prvý krát! ĎAKUJEM peterple, veľmi si toho cením
peterple napísal:Pozrel som ten kód znova a ako spieva Richard Miler - "Nebude to také ľahké, drahá"
Je tam napríkladToto už je horšie a v tom kóde je takých miest pomerne dosť kde sa hodnota posielaná na PORT vypočítava. Jednoducho iba znegovať tabuľku znakov nestačí. Lebo často tam nahádže iné hodnoty mimo tej tabulky. A SBI PORT3,x som si na prvý náhľad nevšimol.Kód: Vybrať všetko
MULT_A3: MOV REG,CIF2 RCALL ZOBRAZ CPI ROZREG,1 BRNE TECKA_A3_NE ANDI REG,0b01111111 TECKA_A3_NE: OUT PORT,REG SBI PORT3,4 RET
Takže zmena prístupu zober zase ten origo súbor. Nikde neprehazduj 0 na 1.Kód: Vybrať všetko
MULT_A3: MOV REG,CIF2 RCALL ZOBRAZ CPI ROZREG,1 BRNE TECKA_A3_NE ANDI REG,0b01111111 TECKA_A3_NE: COM REG ;Negacia REG pred vyslatim na PORT OUT PORT,REG CBI PORT3,4 RET
Potom pred každý riadok OUT PORT,xxx daj riadok COM xxx (vela miest)
pred každý riadok OUT PORT3,xxx dať tiež riadok COM xxx (dve miesta)
A všetky SBI PORT3,x treba zmeniť na CBI PORT3,x (tiež veľa miest)
Ale najľahšie je kúpiť si správny displej.
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 2 Odpovedí
- 1037 Zobrazení
-
Posledný príspevok od používateľa AdamVarga