Fórum témák
- • Érdekességek
- • Inverteres hegesztőtrafó
- • Kaputelefon
- • Alternativ HE találkozó(k)
- • JLH erősítő
- • Cisco catalyst switch javítás
- • Áramváltó trafóval áram mérés, hogy?
- • Villanyszerelés
- • Orion hs 280 - 282
- • Kapcsolóüzemű (PWM) végfok építése
- • PIC programozás assemblyben
- • Villanypásztor
- • Felajánlás, azaz ingyen elvihető
- • Nokia 3210 MBUS-FBUS PIC kommunikáció
- • Vicces - mókás történetek
- • Számítógép hiba, de mi a probléma?
- • Vitatkozzunk! / Beszéljük meg!
- • Hangszórójavítás (otthon)
- • Rádió áthangolása, OIRT - CCIR konverter
- • Hawksford Error Correction
- • Klíma beszerelése, fűtés-hűtés házilag
- • MyParts alkatrész kereső
- • Opel Astra elektromos hibák
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Mosógép vezérlők és általános problémáik
- • Fordulatszám szabályozás felső maró
- • Autós erősítő működtetése tápegységről
- • Napelem alkalmazása a lakás energia ellátásában
- • Elektromos távirányítós kapunyitó
- • Hangszóró tekercselés
- • SMD forrasztás profin
- • Autóelektronika
- • Westen 240 Fi gázkazán hiba
- • Időjárás figyelő állomás
- • Hőkioldó bekötése áramkörbe
- • Subwoofer építése erősítőhöz
- • Elektromos fűnyíró probléma
- • TV hiba, mi a megoldás?
- • Kávéfőzőgép hiba
- • LCD TV probléma
- • 3D nyomtatás
- • Villanymotor bekötése
- • Audiofil, High End Audio
- • Analóg oszcilloszkóp javítása
- • Egy kis robogó elektronika
- • PC táp javítása
- • Napelemes kerti világítás
- • CNC építése házi alkatrészekből az alapoktól
- • Elektronikus szulfátoldó (Akku aktivátor)
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Mákszem érzékelö
- • Általános antennás kérdések, válaszok
- • Crystal radio - detektoros rádió
- • Szilárdtest relé
- • PLC kérdések
» Több friss téma
|
Fórum » PIC programozás assemblyben
Sikerült megoldani! Találtam valami furcsa utalást a PIC- pdf-ben. Kipróbáltam, szkópon látható az adatkivitel. (baud-rate is jó) Érdemes megnézni a csatolt képen az RA0-s sort, az mutatja az érvényes beállítást. "Logikai Analizátoron" viszont semmi sem jelenik meg.
Ez pedig a működést biztosító kódrészlet:
BANKSEL ANSELA ;
CLRF ANSELA ;digital I/O
;UART vezérlés érdekes: (így működik)
bsf ANSELA,TX ;most RA0
BANKSEL TRISA ;RA4-et nem hajlandó kimenetnek beállítani!!!!
MOVLW B'00111111' ;Set RA<5:0> as inputs
MOVWF TRISA
bsf TRISA,FSKbe
bcf TRISA,TX ;itt kimenetnek van beállítva, de ANSEL miatt analóg kimenet
;UART így már megy !!!
bcf TRISA,PWMki
A hozzászólás módosítva: Márc 23, 2024
Sziasztok!
Szeretnék egy kis segítséget kérni, mert már napok óta szívok és már az agyvérzés kerülget. Eléggé kijöttem a gyakorlatból, úgyhogy bármi előfordulhat.
Adott egy I2C LCD meghajtó, a mindehol kapható kínai csoda, PCF8574AT portbővítőre épülő kis modul. Ezt szeretném használni de az istenért sem akar működni.
Ami eddig biztos: a modul működik, az I2C adat küldés működik, LED-et tudok villogtatni vele, a lábkiosztása az alábbi:
DB7, DB6, DB5, DB4, LED (háttérvilágítás), E, RW, RS.
Jó nagy késleltetéseket tettem a kódba, hogy lássam mi történik. Az látszik, hogy átkapcsol kétsoros módba, tehát a 4 bites beállítás és a kétsoros módba kapcsolás működik de innentől semmi. Próba képpen egyetlen "A" betűt akartam megjeleníteni a kijelzőn, de semmi és nem tudok rájönni, hogy miért. A kódot igyekeztem minél bővebben kommentelni és tagolni, hogy érthető legyen.
Init_LCD
call START ;Start parancs, visszatéréskor W-ben a modul címe
call OUT_BYTE ;Modul címzés
movlw b'00000000' ;Modul alaphelyzetbe állítása
call OUT_BYTE
movlw b'00001000' ;Háttérvilágítás be
call Kesleltet255
call Kesleltet255
call Kesleltet255
call Kesleltet255
;1***********************************************************
movlw b'00111000' ;Functoin set DL=1
call OUT_BYTE
movlw b'00111100' ;Functoin set DL=1 + E
call OUT_BYTE
movlw b'00111000' ;Functoin set DL=1 - E
call OUT_BYTE
call Kesleltet255
;2***********************************************************
movlw b'00111100' ;Functoin set DL=1 + E
call OUT_BYTE
movlw b'00111000' ;Functoin set DL=1 - E
call OUT_BYTE
call Kesleltet255
;3***********************************************************
movlw b'00111100' ;Functoin set DL=1 + E
call OUT_BYTE
movlw b'00111000' ;Functoin set DL=1 - E
call OUT_BYTE
call Kesleltet255
;4***********************************************************
movlw b'00101000' ;Functoin set DL=0, 4 bites módba kapcsolás
call OUT_BYTE
movlw b'00101100' ;Functoin set DL=0, 4 bites módba kapcsolás + E
call OUT_BYTE
movlw b'00101000' ;Functoin set DL=0, 4 bites módba kapcsolás - E
call OUT_BYTE
;5***********************************************************
movlw b'00101000' ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt
call OUT_BYTE
movlw b'00101100' ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt + E
call OUT_BYTE
movlw b'00101000' ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt - E
call OUT_BYTE
movlw b'10001000' ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt
call OUT_BYTE
movlw b'10001100' ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt + E
call OUT_BYTE
movlw b'10001000' ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt - E
call OUT_BYTE
;6**********************************************************
movlw b'00001000' ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt
call OUT_BYTE
movlw b'00001100' ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt + E
call OUT_BYTE
movlw b'00001000' ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt - E
call OUT_BYTE
movlw b'10001000' ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt
call OUT_BYTE
movlw b'10001100' ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt + E
call OUT_BYTE
movlw b'10001000' ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt - E
call OUT_BYTE
;7**********************************************************
movlw b'00001000' ;Entry mode set I/D=1, S=0 felső bájt
call OUT_BYTE
movlw b'00001100' ;Entry mode set I/D=1, S=0 felső bájt + E
call OUT_BYTE
movlw b'00001000' ;Entry mode set I/D=1, S=0 felső bájt - E
call OUT_BYTE
movlw b'01101000' ;Entry mode set I/D=1, S=0 alsó bájt
call OUT_BYTE
movlw b'01101100' ;Entry mode set I/D=1, S=0 alsó bájt + E
call OUT_BYTE
movlw b'01101000' ;Entry mode set I/D=1, S=0 alsó bájt - E
call OUT_BYTE
;8***********************************************************
movlw b'00001000' ;Clear display, felső bájt
call OUT_BYTE
movlw b'00001100' ;Clear display, felső bájt + E
call OUT_BYTE
movlw b'00001000' ;Clear display, felső bájt - E
call OUT_BYTE
movlw b'00011000' ;Clear display, alsó bájt
call OUT_BYTE
movlw b'00011100' ;Clear display, alsó bájt + E
call OUT_BYTE
movlw b'00011000' ;Clear display, alsó bájt - E
;9**********************************************************
call OUT_BYTE
movlw b'00001000' ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt
call OUT_BYTE
movlw b'00001100' ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt + E
call OUT_BYTE
movlw b'00001000' ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt - E
call OUT_BYTE
movlw b'11001000' ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt
call OUT_BYTE
movlw b'11001100' ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt + E
call OUT_BYTE
movlw b'11001000' ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt - E
call OUT_BYTE
;*********************************************************
movlw b'01001001' ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS
call OUT_BYTE
movlw b'01001101' ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS + E
call OUT_BYTE
movlw b'01001001' ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS - E
call OUT_BYTE
movlw b'00011001' ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS
call OUT_BYTE
movlw b'00011101' ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS + E
call OUT_BYTE
movlw b'00011001' ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS - E
call OUT_BYTE
call STOP
A hozzászólás módosítva: Kedd, 9:45
Szia! Úgy emlékszem, hogy a 4 bites mód bekapcsolása után csak a fölső 4 bit-et értelmezi (DB4-DB7). Nem tetted fel a rutinokat, így csak sejtéseim lehetnek..
Szia.
Mindenképp csak a a DB4-DB7 részeket használja, mert a többi be sincs kötve. A kiküldött 8 bitből mindig csak a felső 4 az adat vagy a parancs kódja az LCD számára, az alsó 4 bit a háttérvilágítás, az E, az RW és az RS vonal. Ezért is van, hogy a 3. bit már az elején mindig 1, mert az a háttérvilágítás, az 1. bit mindig 0, mert az az RW. Ezért is látható a 38. sortól kezdve, hogy az adatok felső félbájtra és alsó félbájtra vannak szedve. Ezeket nem rutinok csinálják, hanem eleve így írtam meg, hogy az adat felső 4 bitje először az adat felső félbájtját tartalmazzák, aztán a következő küldésnél az alsó félbájtot. Szóval nincs olyan rutin ami ebbe beleszólna.
Idézet: „mert a többi be sincs kötve”
Csak egy ötlet.
Nem hagytad a nem használt bemeneteket lebegni?
Mert ha nincsenek 0-án, már az inicializálás félre megy.
|
|