Elektronikai szakportal- minden ami elektronikai. programok, elektronikai programok, elektronikai segedprogramok, elektronikus programok, hangfalak, hangfaltervezes, hangfaltervezo, hangfaltervek, kapcsolasok, kapcsolasok, kapcsolas, elektronikai kapcsolas, kapcsolas, kapcsolasi rajzok, kapcsolasi rajzok, bekotesek, kapcsolasi rajz gyujtemeny, bekotesi rajzok, forum, elektronikai forum, elektronikai szakforum, szakforum, cikkek, elektronikai cikkek, elektronikus cikkek, elektronikai leirasok, hirek, elektonikai hirek, hirek az elektronika vilagabol, elektronikai hirek
PIC PROGRAMOZÁS IV. 7 SZEGMENSES KIJELZŐ
Olvasóink értékelése: / 55
ElégtelenKitűnő 
Írta: Fábián Kristóf   
2010. április 22. csütörtök, 15:41

 

A következő program egy 7 szegmenses kijelzőt fog vezérelni. Számolni fogjuk a gombnyomásokat és annak értékét kiíratjuk a kijelzőre. Mivel egy kijelzőt használunk értelemszerűen 9-ik gomblenyomás  után a számlálás kezdődik elölről. A kijelző a B PORT-ra van kötve, a nyomógomb pedig a PORTD,0-ra.

Program:

 

1. Beállítások

Először lefoglalunk memória területet (SZAM), majd a beállításoknál a PORTB-t kimenetnek a PORTD 0-ik bitjét pedig bemenetnek állítjuk be. A bankváltás után a 7 szegmenses kijelzőre kirakjuk a 0-át, mivel még nem nyomtuk meg a gombot, vagyis bemozgatjuk a 0 értékét a munkaregiszterbe és ezután kiküldjük a PORTB-re, így a kijelzőn megjelenik a 0.

 

2. Főprogramrész

A főprogramrészünkben először figyeljük a nyomógombot. A gomb megnyomása után meghívjuk a TABLA nevű szubrutint:

A TABLA nevű szubrutinnak az a szerepe, hogy itt tároljuk a kijelzőre kiírt számoknak a bináris formáját.

 

Először bemozgatjuk a SZAM címkével ellátott memóriaterület értékét a munkaregiszterbe, majd ezután az ADDWF utasítással ezt az értéket hozzáadjuk a PCL-hez. A PCL azt mutatja meg, hogy éppen, melyik sorban tart a programunk, tehát így a SZAM értékét hozzáadva a PCL-hez először a RETLW B'00000110' sorra ugrunk. A RETLW utasítás úgy működik, hogy egy literállal térünk vissza a munkaregiszterben a szubrutinból, jelenesetben az 1-es értékével. Ha pl. már 2-szer nyomtuk meg a gombot, akkor értelemszerűen 2-őt adunk hozzá a PCL-hez és így a kijelzőre kiírandó 2-es szám értéke jelenik meg a munkaregiszterben.

 

3. Visszatérés

A visszatérés után a munkaregiszter tartalma megjelenik a PORTB-n. (MOVWF PORTB) Ezután az INCF utasítással a SZAM értékéhez hozzáadunk egyet. A MOVFW SZAM sorral bekerül a memória terület értéke a munkaregiszterbe és ezután egy logikai művelet fog végrehajtódni a XORLW utasítással. A XORLW utasítás úgy működik, hogy XOR műveletet hajt végre egy literállal (amit mi adunk meg) és a munkaregiszter tartalmával. A logikai műveletek eredménye a STATUS regiszter zéró bitjében jelenik meg. Tehát ha a logikai állítás igaz a zéró bit értéke 1 lesz, ha nem igaz 0. A művelet eredményét úgy tudjuk megállapítani, hogy a BTFSS utasítással figyeljük a STATUS regiszter zéró bitjét. (BTFSS STATUS,Z) Ha ez hamis visszaugrunk a főprogramrészhez, ha igaz átugorjuk a következős sort, majd kitöröljük a SZAM című memória terület értékét és ezután térünk vissza a főprogramrészhez. Ez azért fontos, mivel a 10-ik kattintást nem tudjuk megjeleníteni a kijelzőn,( mert csak egyet használunk) ezért a számlálást elölről kell kezdenünk.

 

Tesztelés:

A program lefordítása és betöltése után (F8) a TOOLS menüben megnyitjuk a 7-Segment LED displays panel-t, és a Microcontroller view-et. A kijelzőn beállítjuk, hogy a PORTB-re legyen kötve és, hogy engedélyezve legyen a kijelző (Always enabled!, Display Enable)

 

A beállítások és program elindítása után a PORTD 0-án lévő nyomógomb nyomkodása után láthatjuk, hogy számoljuk a kattintásokat a kijelzőn.

 

Jó programozást kívánok!

Hozzászólások
Hozzáadás Keresés
OLDMAN72  - PORTD   |89.173.31.xxx |2011-07-16 21:22:45
A sorokban ahol PORTD van F8 után, minden sornál hibát dob. mit ronthatok el?
pontazok   |81.182.177.xxx |2011-07-06 17:39:55
Nagyon jó leírások!
Én az alapokat innen tanultam!!!!
Adams  - _   |94.21.86.xxx |2011-05-14 12:20:17
Nagyon várom a folytatás ,jó leírások, informatív honlap. Ha ilyen egyszerűséggel több anyag lenne fenn, jobb
lenne, de már ez is nagyon jó.

Üdv
Ádi
Ricske   |91.120.37.xxx |2011-04-11 15:02:57
Lehet, hogy nem szép dolog ilyet kérni, de esetleg tudsz ajánlani másik oldalakat, ahol ennyire egyszerűen van
leírva a PIC programozása? Én már kismillió oldalt átvizslattam, de sehol nem találtam hasonlóan
leegyszerűsített magyarázatokat.
master  - re:   |SAdministrator |2011-04-05 19:46:26
Helo!
A szerzőtársaim sajnos egyéb elfoglaltság miatt nem tudnak most cikkeket írni, de remélem ez megváltozik
majd.
Üdv!
Ricske   |91.120.37.xxx |2011-04-04 12:05:06
Ezek a cikkek nagyon jók!
Mikor lesz folytatás? Ha lesz egyáltalán. Ahogy látom az utolsó is már majdnem egy
éves.
kristof  - .   |81.183.45.xxx |2011-01-22 14:15:00
nézd meg hogy milyen gyorsan fut a program!lehet hogy lassúra van állítva! állítsd extremely fast-ra!
Névtelen   |62.201.120.xxx |2011-01-19 22:11:43
bocs hülyeséget írtam, de hogy lehetne megoldani, hogy csak ecer keljen megnyomni ?
Névtelen   |62.201.120.xxx |2011-01-19 21:59:53
szia köszönöm a válaszodat. A le-fel engedés logikáját idáig is értette mert akkor lép csak a következő
sorokra de nem evvel van a problémám, lehet az emu hibája de le-fel, le-fel kell kétszer nyomjam hogy tovább
lépjen.
kristof  - .   |193.225.218.xxx |2011-01-19 17:48:05
Hello!

Azért reagál minden második gombnyomásra, mivel először lenyomod a gombot, majd a következő
kattintással elengeded, tehát a két kattintás felel meg az egy megnyomásnak.
gábor   |62.201.120.xxx |2011-01-18 16:48:28
ha jol gondolom ugy megolthato ha a egyik kimentröl egy vezeték segítségével portd,0 ra küldök egy 1 est
Gábor   |62.201.120.xxx |2011-01-16 11:08:08
Szia nálam csak minden második lenyomásra reagál. Nincs semmi ami vissza bilentse
alap állásba, vagy csak nálam
nem jó?
Válaszodat előre köszönöm.
kristof  - .   |Author |2010-06-28 21:52:57
Hello!

Igen, lesz! Csak így vizsgák után, munka és nyári szünet között nem nagyon volt időm írni...
Üdv.
gabi   |91.82.180.xxx |2010-06-24 23:14:40
Helló!
Nagyon jók a cikkek!
Ugye lesz még folytatás?

Üdv: Gabi!
kristof   |Author |2010-04-29 19:38:49
Hello!

Hát lehet, hogy ciki, de MPLAB-ot még sose használtam... Én csak a PIC Simulatorral foglalkoztam eddig és
mással nem igazán... A suliban is ezt tanultam... Szóval sajnos ahhoz nemigazán tudok hozzászólni.
edison14  - Programozás   |213.151.217.xxx |2010-04-28 18:03:29
Helló!

Olvasgattam a cikkeidet és nagyon tetszenek. Azt szeretném megkérdezni, hogy MPLAB-ban is meg tudnád
csinálni ezeket a programokat? Esetleg egy cikket tudnál készíteni az MPLAB használatáról és a PIC-ezés
mikéntjéről? Én MPLAB-ot szeretnék használni mivel a suliban is ezt tanítják és szeretnék rá
felkészülni.

Nagyon szépen köszönöm.
Hozzászólás
Név:
Email:
 
Tárgy:
UBBKód:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Rólunk. | .Impresszum. | .Használati feltételek. | .Kapcsolat. | .Támogatónk a SzerverPlex.hu