[elektro] dsPIC EQU villámkérdés
Nemeth Tibor
nemeth.tibor798 at t-online.hu
Fri Mar 4 17:30:09 CET 2011
Hali!
Hát jó, süllyedjünk a részletekbe. A gond az, hogy csak egy példát
feltételezve tudom jobban leírni, ha meg a példa mindjárt a valóság
lenne meg is oldanánk a problémát. No mindegy, majd küzdesz vele Te is.
Uncsi és fáradságos lesz.
Hogy legyen miről beszélni, nevezzük a szegmenseket az alábbi link
ábrája alapján a,b,c,...g-nek!
http://en.wikipedia.org/wiki/Seven-segment_display
Tegyük fel, hogy
a segment Port_A 0 bit
b segment Port_B 3 bit
c segment Port_B 4 bit
d segment Port_B 5 bit
e segment Port_D 0 bit
f segment Port_D 2 bit
g segment Port_D 7 bit
;Ekkor A porton csak 0 bitet használod LCD-hez, definiálunk egy ;konstanst
LCDMASK_A EQU 0000001b
;hasonlóképpen
LCDMASK_B EQU 00111000b
LCDMASK_D EQU 10000101b
;Most jön a sziszifuszi munka, a karaktergenerátor, ráadásul háromszor
;mert három portra van szétszórva.
CHGTAB_A
ANDLW 15 ;ha teljes hexa digitsor van,
; PCLATH ha van ilyen abba a pic-ben?
addwf PCL,1
DT 1,0,1,1,0,1,1,1,1,1,1,0,1,0,1,1
CHGTAB_B
ANDLW 15
addwf PCL,1
DT 111000b,11000b,101000b,111000b
DT 11000b,101000b,110000b,11000b
DT 111000b,111000b,11000b,110000b
DT 100000b,111000b,100000b,0
;Már baromira unom, de még hátra van
CHGTAB_D
ANDLW 15
addwf PCL,1
DT 101b,0,10000001b,10000000b
DT 10000100b,10000100b,10000101b,0
DT 10000101b,10000100b,10000101b,10000101b
DT 101b,10000001b,10000101b,10000101b
;Tegyük fel, hogy az aktív állapot a Hi.
;Digit kiírása:
DIGTOLCD ;W-ben egy digit, ezt írjuk ki
; kell még két bájtnyi ram TEMP1 és TEMP2
MOVWF TEMP1
MOVF PORTA ;********ettől
ANDLW ~LCDMASK_A ;ez itt bitenkénti negálás, ha nálad másképp lenne
MOFWF TEMP2
MOVF TEMP1,0
CALL CHGTAB_A
ANDLW LCDMASK_A ;ez fölösleges, de ha elcsesztük a ;karakter generátor
táblát és az idegen bitet is tartalmaz, sok ;vesződségtől óv meg.
IORWF TEMP2
MOVWF PORTA ;********eddig le kell tiltani IT-t ha ;az
változtathat PORTA állapotán;
;Most ugyanez még kétszer B és D portra
MOVF PORTB ;********ettől
ANDLW ~LCDMASK_B
MOFWF TEMP2
MOVF TEMP1,0
CALL CHGTAB_B
ANDLW LCDMASK_B ;ez fölösleges, de ha elcsesztük a ;karakter generátor
táblát és az idegen bitet is tartalmaz, sok ;vesződségtől óv meg.
IORWF TEMP2,0
MOVWF PORTB ;********eddig le kell tiltani IT-t ha ;az
változtathat PORTB állapotán;
MOVF PORTD ;********ettől
ANDLW ~LCDMASK_D
MOFWF TEMP2
MOVF TEMP1,0
CALL CHGTAB_D
ANDLW LCDMASK_D ;ez fölösleges, de ha elcsesztük a ;karakter generátor
táblát és az idegen bitet is tartalmaz, sok ;vesződségtől óv meg.
IORWF TEMP2,0
MOVWF PORTD ;********eddig le kell tiltani IT-t ha ;az
változtathat PORTD állapotán;
RETURN
Persze lehet, hogy valami kevésbé fáradságosra gondoltál, de valahogy le
kell írni, hogy van lenyomtatva és hogy néz ki egy karakter.
Üdv.
Németh Tibor
2011.03.03. 22:30 keltezéssel, Adam Huszar írta:
> Igen, erről van szó, ilyen maszkolást szeretnék megvalósítani a progi
> elején, mert nem tudom egy portra rakni a kijelző lábait.. :/
>
> Ádi
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list