Úprava kódu v assembleri

Moderátori: psichac, Moderátori

Brian01
Okoloidúci
Okoloidúci
Príspevky: 27
Dátum registrácie: 02 Nov 2018, 23:04
Bydlisko: Beňadikovce
Vek: 21

Úprava kódu v assembleri

Príspevok od používateľa Brian01 » 03 Nov 2018, 00:27

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) 123 stiahnutí
0

peterple
Ultimate člen
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

Príspevok od používateľa peterple » 03 Nov 2018, 09:10

Podľa schémy je displej zapojený na port B a D. To si trochu nešťastne pomenoval autor ako PORT a PORT3

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
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.

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
stačí zmeniť 1 za nuly a naopak.

Podobne všade kde sa pracuje s portom pomenovaným PORT

Kód: Vybrať všetko

LDI REG,0b11111111
OUT PORT,REG
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

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í.

Brian01
Okoloidúci
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

Príspevok od používateľa Brian01 » 03 Nov 2018, 13:34

Ď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

Kód: Vybrať všetko

START:
;nastaví port D
LDI REG,0b11111111
OUT SMER,REG
LDI REG,0b11111111
OUT PORT,REG
som to zmenil na

Kód: Vybrať všetko

START:
;nastaví port D
LDI REG,0b11111111
OUT SMER,REG
LDI REG,0b00000000
OUT PORT,REG
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ť.
0

peterple
Ultimate člen
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

Príspevok od používateľa peterple » 03 Nov 2018, 19:41

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í.

Brian01
Okoloidúci
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

Príspevok od používateľa Brian01 » 03 Nov 2018, 21:28

Tak ako si písal, všade, no na displeji nesvietilo nič.
0

peterple
Ultimate člen
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

Príspevok od používateľa peterple » 04 Nov 2018, 07:56

Pozrel som ten kód znova a ako spieva Richard Miler - "Nebude to také ľahké, drahá"


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
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.

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
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.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: Úprava kódu v assembleri

Príspevok od používateľa dan21 » 04 Nov 2018, 09:51

Mozno bude jednoduchsie investovat do spravneho dispaly-a :-) :-)
Ale ak sa chces zdokonalit v assembleri, tak toto je dobry zaciatok :-)
0

alidedko
Ultimate člen
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

Príspevok od používateľa alidedko » 04 Nov 2018, 10:16

Nie, toto je velmi zly zaciatok.

Dobry zaciatok je vediet blikat ledkou.
0
Motto: Nikto nie je tak velky, aby sa nevosiel do truhly.

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: Úprava kódu v assembleri

Príspevok od používateľa dan21 » 04 Nov 2018, 10:19

Som si teraz precital, ze je v zivote v assembleri nerobil, takze potom je ta ledka spravny zaciatok :-) :-)
Asi kupit spravny display bude jednoduchsie :-)
0

Brian01
Okoloidúci
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

Príspevok od používateľa Brian01 » 04 Nov 2018, 13:18

Ďakujem veľmi pekne za pomoc ale zmenil som to tak, no zasa nič, asi bude jednoduchšie kúpiť vhodný displej.
0

peterple
Ultimate člen
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

Príspevok od používateľa peterple » 04 Nov 2018, 17:11

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) 128 stiahnutí
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Brian01
Okoloidúci
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

Príspevok od používateľa Brian01 » 04 Nov 2018, 20:35

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

Brian01
Okoloidúci
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

Príspevok od používateľa Brian01 » 05 Nov 2018, 20:47

:applause: :applause: FUNGUJE !! :D 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 :thumbup: :thumbup:
peterple napísal:Pozrel som ten kód znova a ako spieva Richard Miler - "Nebude to také ľahké, drahá"


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
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.

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
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.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok