převod pbp do hex
Moderátor: Moderátoři
převod pbp do hex
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.
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.
Fuu teraz si ma dostal
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.
![Very Happy :D](./images/smilies/icon_biggrin.gif)
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
![Wink :wink:](./images/smilies/icon_wink.gif)
btfsc LcdReg, x toto si niesom isty ci je mozne to takto zapisat.
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
Kód: Vybrat vše
btfsc LcdReg,7
bsf SDIN
bcf SDIN
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".
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?
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?
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)
inak AB1 to napisal pekne
![Wink :wink:](./images/smilies/icon_wink.gif)
To je nesmysl.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?
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.
Re: převod pbp do hex
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.
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.
- Přílohy
-
- Temp2Lcd12F675-Ds18B20.asm
- (23 KiB) Staženo 99 x
-
- Temp1Lcd12F675-Ds18B20.txt
- (32.03 KiB) Staženo 97 x