Stránka 1 z 2
převod pbp do hex
Napsal: 12 pro 2010, 11:12
od fery25
Ahoj,
Chtěl jsem postavit teploměr s pic12f629 a lcd z nokie 3110 podle návodu na:
http://www.ivica-novakovic.from.hr/Noki ... ometar.htm . Autor přiložil i zdrojový kod, ale s příponou *.pbp. Chtěl bych změnit vzhled displeje, ale v MPlab jej nedokážu přeložit. Zkusil jsem přepsat příponu na *.asm , ale nic. Poradíte v jakém programu by šel tenhle zdrojový kód přeložit do hex.
Napsal: 12 pro 2010, 11:49
od mety
Pravdepodobne to bude PICBASIC PRO Compiler , ale niesom si isty.
Skus ho niekde na nete stiahnuť a potom tie subory v tom otvoriť.
Napsal: 12 pro 2010, 13:51
od fery25
Tak jo. Stahnul jsem "MicroCode Studio" včetně "PicBasic Pro compiler". A vypadá to že by si s tímhle kódem poradil, jenže je to pouze demo a ta zvládne pouze 31řádků, navíc je to jen pro PIC16... Neznáte někdo odkaz na jiný program?
Díky
Napsal: 12 pro 2010, 18:40
od majsi
Este Ti ostava jedna moznost. Cele to prepisat do svojho jazyka. Co som pozeral tak ten kod je celkom zrozumitelne napisany
![Wink :wink:](./images/smilies/icon_wink.gif)
Napsal: 13 pro 2010, 12:12
od fery25
O to se teď snažím. V Basicu je to jednoducé. Došel jsem až k části:
PrintDataLcd: for x = 1 to 8 ' ispis na Lcd
SDIN = LcdReg.7
LcdReg = LcdReg << 1
SCK = 1
SCK = 0
next x
D_C = 1
return
Pomohl bys mi přložit do assembleru jak na pin SDIN vyvést 8bitů z proměnné LcdReg?
Napsal: 13 pro 2010, 14:15
od majsi
Fuu teraz si ma dostal
![Very Happy :D](./images/smilies/icon_biggrin.gif)
s asm pre pic som dlho nerobil. Ale urcite nato prides je to jednoduchy cyklus.
movlw 0
movwf x
cyc:
incf x, 1
btfsc x, 3
goto end
btfsc LcdReg, x
goto set_1
bcf PORTB, 4
goto pok
set_1:
bsf PORTB, 4
pok:
movlw 1
movwf SCK
movlw 0
movwf SCK
goto cyc
end:
No snad som to velmi nepokazil
btfsc LcdReg, x toto si niesom isty ci je mozne to takto zapisat.
Napsal: 13 pro 2010, 15:13
od fery25
když vynecham cyklus, šlo by to i takhle?
bsf SCK
btfsc LcdReg,7
bsf SDIN
bcf SDIN
bcf SCK
bsf SCK
btfsc LcdReg,6
bsf SDIN
bcf SDIN
bcf SCK
a tak pro všech osm bitů 7,6,5...0 ??? sice žádná paráda, ale co.
Dík za tvůj čas.
Napsal: 13 pro 2010, 15:52
od AB1
Dá se to přeložit pěkně příkaz po příkazu.
Kód: Vybrat vše
Ramstart equ 0ch ; začátek RAM pro PIC16F84
Lcdreg equ Ramstart+1 ;
Counter equ Lcdreg+1 ;
#define SDIN PORTB,0
#define SCK PORTB,1
#define D_C PORTB,2
PrintDataLcd:
;for x = 1 to 8
movlw 8
movwf Counter
loop:
;SDIN = LcdReg.7
bcf SDIN
btfsc Lcdreg,7
bsf SDIN
;LcdReg = LcdReg << 1
rlf Lcdreg,1
;SCK = 1
bsf SCK
;SCK = 0
bcf SCK
;next x
decfsz Counter,1
goto loop
;D_C = 1
bsf D_C
return
Napsal: 13 pro 2010, 16:02
od majsi
fery25 píše:když vynecham cyklus, šlo by to i takhle?
bsf SCK
btfsc LcdReg,7
bsf SDIN
bcf SDIN
bcf SCK
bsf SCK
btfsc LcdReg,6
bsf SDIN
bcf SDIN
bcf SCK
a tak pro všech osm bitů 7,6,5...0 ??? sice žádná paráda, ale co.
Dík za tvůj čas.
bude to fungovat. nemas prehodene
bcf SCK
bsf SCK
???
Napsal: 13 pro 2010, 17:45
od AB1
Takto to nejde, bit SDIN by byl vždy 0, protože
1. Pokud je LcdReg,7=0, skočí na řádek "bcf SDIN".
2. Pokud je LcdReg,7=1, jde na řádek "bsf SDIN" a pak na "bcf SDIN".
Napsal: 13 pro 2010, 20:40
od fery25
Zamýšlel jsem to tak, že:
SCK použiju jako hodinový signál pro lcd, tedy do času SCK=1 + SCK=0 se musí vejít 1.bit takže myslím, že přehozené nejsou, alespoň doufám.
AB1: "Takto to nejde, bit SDIN by byl vždy 0, protože
1. Pokud je LcdReg,7=0, skočí na řádek "bcf SDIN".
2. Pokud je LcdReg,7=1, jde na řádek "bsf SDIN" a pak na "bcf SDIN"
No ale na 1/4 taktu se na SDIN objeví log.1 Myslíš, že je to příliš krátká doba? Mám přidat NOP?
Napsal: 13 pro 2010, 22:23
od majsi
ono fungovat to moze. len to nieje dobry navyk. treba si pozriet datasheet a casy ktore display potrebuje. ide o to ze ak je ten display dost rychli tak ti pri nahodeni SCK precita SDIN ktory je ale vzdy 0. az po par cykloch sa nastavi na 1 a potom sa v zapati zhodi na 0. cize si display bude citat vzdy 00000000.
inak AB1 to napisal pekne
![Wink :wink:](./images/smilies/icon_wink.gif)
Napsal: 13 pro 2010, 23:13
od AB1
No ale na 1/4 taktu se na SDIN objeví log.1 Myslíš, že je to příliš krátká doba? Mám přidat NOP?
To je nesmysl.
Data se přenesou při sestupné hraně SCK. A v tom okamžiku mají hodnotu 0. Co bylo předtím, to už odnés čas.
Ostatně není zvykem měnit data během SCK pulsu.
Běžnější je způsob jako v originálním kódu.
Napsal: 14 pro 2010, 07:45
od fery25
Díky
To jsem nevěděl, myslel jsem, že stačí během taktu přivést log.1 a bit bude bán jako 1. Proto jsem se snažil před ukončením taktu změnit SDIN zase na 0, aby náhodou nepřesáhl do dalšího taktu. Předělám.
Ještě jednou dík.
Re: převod pbp do hex
Napsal: 21 led 2011, 19:46
od JG
Zdravim,
ak o to mas este zaujem, tak dekodovat HEX kod sa da v ktoromkolvek MPLAB-e.
Temp1Lcd12F675-Ds18B20.txt - takto to vyzera
Temp2Lcd12F675-Ds18B20.asm - takto to musis upravit aby ti to zobral MPLAB pre editaciu.
Ak este mas zaujem upravit displej, mozem strucne popisat kde to treba hladat. Zaciatok obrazcov je v druhej polovici EEPROM, pokracovanie v prikazoch RETLW ... . Niektore znaky sa menia cez systemove premenne podla teploty +, -, a nad, asi 50stupnov.
Sposob vykreslovania displeja je vzdy po 8 riadkoch vzdy stlpec 8 bit z hora dole. Treba si pozriet katalogovy list.
Prave na tom tiez pracujem, ale pre displej 96x64 bodov. Dufam ze to budem mat hotove do dvoch mesiacov. Chcem vacsi ciselny udaj, a pripadne 2 snimace. Potom to zverejnim.
Prajem vela zdaru.