Strana 1 z 1

Úprava kódu v assembleri

Napísané: 03 Nov 2018, 00:27
od používateľa Brian01
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.

Re: Úprava kódu v assembleri

Napísané: 03 Nov 2018, 09:10
od používateľa peterple
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

Re: Úprava kódu v assembleri

Napísané: 03 Nov 2018, 13:34
od používateľa Brian01
Ď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ť.

Re: Úprava kódu v assembleri

Napísané: 03 Nov 2018, 19:41
od používateľa peterple
Zmenil si to všade alebo len na tom jednom mieste?

Re: Úprava kódu v assembleri

Napísané: 03 Nov 2018, 21:28
od používateľa Brian01
Tak ako si písal, všade, no na displeji nesvietilo nič.

Re: Úprava kódu v assembleri

Napísané: 04 Nov 2018, 07:56
od používateľa peterple
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.

Re: Úprava kódu v assembleri

Napísané: 04 Nov 2018, 09:51
od používateľa dan21
Mozno bude jednoduchsie investovat do spravneho dispaly-a :-) :-)
Ale ak sa chces zdokonalit v assembleri, tak toto je dobry zaciatok :-)

Re: Úprava kódu v assembleri

Napísané: 04 Nov 2018, 10:16
od používateľa alidedko
Nie, toto je velmi zly zaciatok.

Dobry zaciatok je vediet blikat ledkou.

Re: Úprava kódu v assembleri

Napísané: 04 Nov 2018, 10:19
od používateľa dan21
Som si teraz precital, ze je v zivote v assembleri nerobil, takze potom je ta ledka spravny zaciatok :-) :-)
Asi kupit spravny display bude jednoduchsie :-)

Re: Úprava kódu v assembleri

Napísané: 04 Nov 2018, 13:18
od používateľa Brian01
Ďakujem veľmi pekne za pomoc ale zmenil som to tak, no zasa nič, asi bude jednoduchšie kúpiť vhodný displej.

Re: Úprava kódu v assembleri

Napísané: 04 Nov 2018, 17:11
od používateľa peterple
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.

Re: Úprava kódu v assembleri

Napísané: 04 Nov 2018, 20:35
od používateľa Brian01
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...

Re: Úprava kódu v assembleri

Napísané: 05 Nov 2018, 20:47
od používateľa Brian01
: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.