BASCOM - Ovládní LED tlačítky

Dobrý den, napsal jsem si podle knihy Atmel AVR Programování v jazyce BASCOM program na ovládání LED pomocí tlačítek. Po kompilaci spustím program, ten vypadá, že běží, ale LED nic nedělají. Můžete mi s tím prosím poradit? Viz. program v příspěvku.

A ještě bych se chtěl zeptat, jestli by mi někdo poradil jak naprogramovat program, když stisknu tlačítko např. s číslem 1 nebo 2, aby se to číslo zobrazilo na LCD.

Děkuji
tlačítka.bas (578 Bytes)

Pokud zvládáš poslat text na displej, tak kromě toho, že samozřejmně nastavíš použitý piny pro tlačítka jako vstupní, tak se musí nastavit pull-up odpor na pinu tím, že tam pošleš log 1. Tahle “drobnost” mě při prvním pokusu s tlačítky stála hodně času, než jsem na to přišel.

Poslat text na displej, myslíš např. tento?

Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6

Config Lcd = 16 * 2
Cursor Off
Do
Cls
Lcd “Ahoj svete!”
Waitms 500
Lowerline
Wait 1
Lcd “Vitej!”
Wait 1
Loop
End

Ano. Nejsem si jistý, zda jde poslat na displej číslo, proto jsem i čísla předtím převedl na text.

No netuším jak bych to měl udělat.

číslo na display ba mělo jít ,zjednodušeně např.
Dim A as byte
A=100
LCD A

jinak napiš jestli chceš číslo toho tlačítka jen zobrazit a nebo s ním dále potom pracovat.
pokud jenom zobrazit tak např takto:

config PORTB = Input

PORTB.0 = 1
PORTB.1 = 1

Do
if PINB.0 = 0 then
LCD “1”
end if

IF PINB.1 = 0 then
LCD “2”
end IF
loop
end

A nevíš prosím tě, jak udělat, aby se po stisknutí tlačítka zobrazila hodnota na displeji?

upravil jsem příspěvek výše

Díky, nevím proč, ale pouze mi to vypisuje čísla 1 a 2 a pří tom tlačítko nestisknu.

Nevím zda 8535ka má vnitřní puul up odpory.Já dělám s mega 32 a ta je má. Pokud je nemá tak musíš vstup připojit přes R 10K na plus a tlačítkem ho uzemňovat.

Já to teď zkoušel s tím příkladem co jsi uvedl výše, dal jsem tam čip mega 32 co používáš ty, ale také mi to pouze vypisuje čísla a tlačítko jsem nestisknul. Nemohl by jsi sem dát příklad jak to máš prosím tě?

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

tak jsem to narychlo zbastlil v reálu na vývojovém kitu EvB 4.3 MEGA32 a funguje to dokonale.Při resetu zůstane display prázdný a při stisku tlačítka se zobrazí 1 nebo 2 a stav drží až do sepnutí jiného tlačítka.

Pinové připojení LCD v programu neřeším mám to nastavené v OPTIONS v BASCOMU.

$regfile = “m32def.dat”
$crystal = 16000000
Config Lcd = 16 * 2
Config Portc = Input

Portc.0 = 1
Portc.1 = 1
Cls
Cursor Off
Do
If Pinc.0 = 0 Then
Cls
Lcd “1”
End If

If Pinc.1 = 0 Then
Cls
Lcd “2”
End If

Loop
End

joo a teď jdu na pivko tak zítra můžm pokračovat.

Díky, udělal jsem to tak, jak jsi to napsal, jen jsem si tam dodal řádek pro nastavení pinů pro LCD:

Na displeji se mi na místě čísla 1 střídá s 2 a tlačítko jsem nestiskl, viz obrázek.
SLA.JPG

já simulátor moc nepoužívám,ale zkoušel jsem to a ono se to chová tak jak píšeš. Chvíli lsem si s tím hrál a zjistil jsem že ty tlačítka jsou inverzně,to znamená ,že jsou obě stisknutá. Zkus ty zelený (jako stisknout) na PC0 i PC1 a potom zpusť simulaci,mě to chodilo.
V reálu to opravdu chodí tak jak jsem to uvedl.

joo a pro simulaci si dej na začátek kódu $sim , pokud bys to pak opravdu programoval tak to musíš odstranit.

Dobře, díky moc