[ melkiot @ 11.04.2006. 20:41 ] @
Dali ima tko napisanu simulaciju digitalnog sata sa LCD-om u Bascomu ili nešto slično? (da je u bascomu)
Jer treba mi za maturalni rad,a nerazmuijem one naredbe poput TIMER koje su potrebne za pokretanje tajmera,tj. sata...Kristal je 12 Mhz...

Ili ako tko zna kako pokrenuti tajmer da broji po sekundu...Logiku sata znam napisati,to mi nije problem.Treba mi taj dio programa koji bi točno po sekundu brojio...

Hvala unaprijed...
[ _str_ @ 12.04.2006. 01:33 ] @
Bascom-AVR il i Bascom-51?
[ melkiot @ 12.04.2006. 20:12 ] @
BASCOM 8051...
[ _str_ @ 12.04.2006. 22:28 ] @
Citat:
melkiot: BASCOM 8051...

e baš šteta :)


Ne znam samo koliko su komande u ove dve verzije kompatabilne.
Pogledaj u help, potraži komandu TIME, naći ćeš i mali primer, koji možeš probati da simuliraš.

[Ovu poruku je menjao _str_ dana 12.04.2006. u 23:29 GMT+1]
[ yugaja @ 12.04.2006. 23:08 ] @
Evo koda ;)

Nije LCD( vec ledovi) ali ces se snaci!!
poz!!

[Ovu poruku je menjao yugaja dana 13.04.2006. u 00:09 GMT+1]
[ melkiot @ 13.04.2006. 20:52 ] @
nece mi kompjalirati kod. Javi mi gresku kod linije

"Priority Set Timer0"


no ova greska mi se i prije pojavljivala na nekim simualcijama gdje se upotrebljava ta ili slicna linija.Zasto?
[ yugaja @ 13.04.2006. 22:50 ] @
Pa koji si mcu izabrao? Ima li izabrani uC uopste mogucnost podesavanja prioriteta interapta?
[ melkiot @ 14.04.2006. 20:54 ] @
Mcu? uC ?
kad bih ja znao sto je to...

evo jedan primjer po kome bi trebao napisati kod,ali ja ne znam kak da to ucinim...

"preostalo nam je jos samo objasniti prekidnu rutinu za dijeljenje frekvencije oscilatora Timer_0_int. Frekvencija kvarca 12 Mhz interno se dijeli s 12 tako da dobijemo 1 Mhz.Ovu vrijednost brojacem Timer0 dijelimo s 250,a dobivena 4 kHz u ovoj prekidnoj rutini dodatno se dijele,najprije s 20,a potom jos i s 200.Pogodite konacni rezultat"

kako to u kod prenijet?
[ yugaja @ 15.04.2006. 11:01 ] @
OK, za pocetak "iskomentarisi" liniju Priority Set Timer0, znaci jedan ' ispred!

U ovom slucaju ce raditi i bez te linije :)

Probaj pa cemo videti dalje. Source koji sam ti okacio je od, cini mi se, nekog Slovenca, skinuo sam negde sa NET-a, radi sigurno. Ja sam probao sa 89C52, cak sam na toj test ploci imao zakacen LCD tako da je (skoro) to sto ti treba!!! Samo promeni par linija ubaci LCD...
[ melkiot @ 27.04.2006. 20:36 ] @
kad smo vec kod atmel-a, cemu sluze onaj kondenzator i otpornik koji se spajaju sa RST pinom i Vcc?
znam da je Vcc napajanje, RST reset,ali cemu oni sluze? jel drze RST pin u "1" stalno ili?
[ _str_ @ 28.04.2006. 05:54 ] @
Kondezator služi da prilikom uključenja napajanja drži resetovan kontroler neko vreme, što zavisi od R i C, da bi se izbeglo nekontrolisano ponašanje MCU-a kada je VCC u porastu.
[ melkiot @ 29.04.2006. 12:59 ] @
$sim

$crystal = 12000000

Config Lcd = 16 * 1

Dim Clock As Byte , Prikaz As Byte , Mux As Byte , Clock1 As Byte , Izracun As Byte , Sekunde As Byte
Dim Minute As Byte , Sat As Byte


Config Timer0 = Timer , Gate = Internal , Mode = 2
On Timer0 Timer_0_int
Load Timer0 , 250

Enable Interrupts
Enable Timer0

Start Timer0

Clock = 0
Clock1 = 0
Sekunde = 0


Do

Upperline
Lcd Sekunde
Loop


Timer_0_int:
Incr Clock
If Clock > 99 Then
Clock = 0
Incr Clock1
End If
If Clock1 > 39 Then
Clock1 = 0
Incr Sekunde
End If
If Sekunde > 59 Then
Sekunde = 0
Incr Minute
End If
If Minute > 59 Then
Minute = 0
Incr Sat
End If
If Sat > 23 Then
Sat = 0
End If
Return



'evo, napisao sam nesto ovako. I sada mi se nece na LCD-u ispisivati pomak sekundi. Stoji samo na nuli.
'moze netko kopirat u Bascom i vidjeti zasto nece?
' htio bi vidjet jel mi se sekunde pomoci, tj. jel radi timer
[ melkiot @ 30.04.2006. 11:52 ] @
Kakvu frekvenciju na ulazu? pa kristal je 12Mhz, a to sam naveo na pocetku programa... ne kuzim
[ melkiot @ 30.04.2006. 22:06 ] @
samo si dodao na jos jedno mesto "Load Timer0 , 250"?

pa nista ne radi novo. U simulaciji program izvrsi cijeli kod par puta, a onda samo ponavlja liniju za ispis sekunde:



Do
Upperline
Lcd Sekunde
Loop

Više nisam pametan. Neznam ni sam sta da napisem. e da,ako stavim da je timer0=6, on to ne razumije, jer onda mi je timer0 varijabla, pa ju moram definirati (integer, byte...) a to valjda nesmije tako.

Jel imas kakav primjer simulaciju da barem ispisuje kako broji po sekundu?
[ _str_ @ 30.04.2006. 23:21 ] @
Imam negde na CD-ovima Bascom x51, pogledaću sutra. Program koji si napisao radi na BascomAVR uz izmenu linije "Config Timer0 = Timer , Gate = Internal , Mode = 2" i one dodatke na LCD-u ispisuje 0, pa onda 1 .... Javiću se sutra (danas).
[ _str_ @ 01.05.2006. 16:01 ] @
Program koji si napisao pokrenuo sam u Bascom 8051 i radi. Nema potrebe menjati listing. Ako hoćeš u simulaciji da ti ispisuje sekunde na LCD, uključi opciju "Refresh variables" (sličica sa rukom, gore u desnom ćošku) i onda pokreni simulaciju. 100% provereno.
[ melkiot @ 01.05.2006. 19:44 ] @
Ma ukljucena je ta opcija...Probao sam i onaj moj kod ponovo i onaj tvoj.

Nego, što si to promenio u onoj liniji koda sto si rekao?
[ melkiot @ 01.05.2006. 20:02 ] @
jel se moze namjestiti da u simulaciji pinovi budu neke tipkovnicke kratice?

Npr. pin 1.3 da bude slovo A, pa kad stisnem A u simuaciji, kao da sam aktivirao pin 1.3??
[ melkiot @ 01.05.2006. 20:03 ] @
jel se moze namjestiti da u simulaciji pinovi budu neke tipkovnicke kratice?

Npr. pin 1.3 da bude slovo A, pa kad stisnem A u simuaciji, kao da sam aktivirao pin 1.3??
[ _str_ @ 01.05.2006. 21:12 ] @
U prozoru za simulaciju imas nekoliko praznih redova, nalaze se iznad listinga. Duplim klikom na neki od njih upisi ime promenljive, u tvom slucaju clock, clock1, sekunda. Pokretanjem simulacije vrednosti ce se menjati, za clock od 0 do 100. Tako mozes pratiti sta se desava sa programom. Sa desne strane imas listu registara i medju njima registre za timer0, podeljen u dva osmobitna L i H. U ovom primeru koristi se nizi (L). Na dnu prozora za simulaciju imas informaciju o proteklom vremenu simulacije u mS. Ne mozes ocekivati da se simulacija odvija u realnom vremenu, tako da ce proteci dosta sekundi dok se na LCD-u ne promeni stanje sa 0 na 1.
[ melkiot @ 01.05.2006. 21:27 ] @
Timer_0_int:

Load Timer0 , 250
Incr Clock
If Clock > 99 Then
Clock = 0
Incr Clock1
.....
....

zasto ide do 99?
mozda ja najbolje ne razumijem tu timer rutinu...
ovak, rutina se izracunava svakih 250 mikro sekundi?
znaci, u toj rutini se onda izracunava sve potrebno sto nam treba, sekunde, sati....

Al kako postici da bude tocno po sekundi pomak? 1Mhz je frekv. koja dode na timer .(ako je kristal 12 mhz)

Ja sam radio do sada sat nekakav sa obicnim brojacima...to nije bilo jako tocno, nakok par sati vec je sat kasnio minutu...bilo je s*****,,,