Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Kicsit sűrűre sikerült a program
Nem bántásból mondom, de: úgy látom, hogy C nyelven írsz Basic programot. A C nyelvnek van egy nagyon jó tulajdonsága, a struktúráltsága. Így nagyon nehezen lehet (sehogy) a programodat elolvasni. Amúgy a C általában is nehezen olvasható. Ezért nagyon sűrün kell kommentezni, szinte minden sorát. Ez szinte a túlélés egyik eszköze. Visszatérve a programodra. Nem voltam képes kihámozni belőle a lényeget. Mi lenne, ha azt csinálnád, hogy a függvény meghívásakor mind a négy oszlopot aktvan meghajtod és a visszatérő 4 sorból eldöntöd, hogy egyáltalán nyomnak-e gombot. Ha nem, akkor void a visszatérési érték. Ha bármelyik sorban úgy látszik, hogy mintha gomb nyomás lenne, akkor leszkenneled azt a sort és oszlopot amelyiket valóban nyomják. A sor és oszlopszámból Pl. egy case utasítással ki lehet hámozni, hogy melyik gomb is volt megnyomva. Ekkor ez lesz a függyvényed visszatérési értéke. Ezzel aztán mindenki azt csinálhat amit akar. Szerintem tized ennyi programból meg lehet valósítani ezt a módozatot. Ja, és nem kell GOTO utasítások garmadája sem. sysy
Bocs, hogy elmerülök a részletekben, de ezt én egyszerűbben írnám:
CIMKE: if(PORTD=0B11110000) //var, amig nem valtozik PORTD GOTO CIMKE; ennyi elég lenne: while(PORTD=0xF0); //var, amig nem valtozik PORTD az utána következő sor nem is igazán kell: else goto KBREAD; KBREAD:
Helló!
Nem akarok kötekedő lenni, de az egy egyenlőség jel az értékadás, a kettő az egyenlőség feltételének viszgálata. A billentyűzet kezelésnél ki lehet használni a PortB megszakítási lehetőségeket is. üdv brejti
Sysy:
Köszi. Igazából eredetileg én is a TC-ben kombináltam (volna) össze, csak eltoltam valamit. Azután rájöttem, hogy mit és a könyv megkerült.
Igazad van! Dehát a kopipész kényelmessége figyelmetlenné tett.
sysy
hali mindenki
kellene nekem egy olyan leirás ahol fel vannak sorolava a ccs -hez való parancsok. most ismerkedem a ccs-el. ha tud valaki segíteni azt köszönöm. üdv tibiiii00
az bizony benne van a ccs helpjében...
nem ártana egyszer megnézni
... és a honlapjáról is letölthető.
Köszi a tippet!
Megnézegettem amiket írtál, és sikerült összehozni a függvényt. Ez már jobb mint az előző, és müködik is. Így néz ki: * * * * * A fórum használatának figyelmeztetés ellenére megszegése miatt a hozzászóls egy része törlésre került!
Felhívom becses figyelmedet ennek a hozzászólásodnak a végére deguss moderátor által írt kiegészítésre:
Idézet: „Használjuk a [ c o d e = c ] tagot! [ / c o d e ]. Ezentúl ilyen hosszú, strukturálatlan programrészleteket csatolmányként kérünk illeszteni. Köszönjük. deguss” Ebből a hozzászólásodból a kód-részt törlöm, legközelebb az egész hozzászólás törölve lesz, és kapod a warn-t is!
Helló Prinner!
Tegnap éjjel azért még elolvastam a leveledet! Ez már kezd hasonlítani egy C programra. Csak így tovább! Viszont nem jöttem rá, hogyan találja ki a programod azt, hogy melyik sor illetve oszlop találkozásánál nyomják a gombot. Szerintem ott valahol akarod megcsinálni, ahol a felső 4 és az alsó 4 bitet megcseréled kimenet illetve bemenet szempontjából. Sajnos nem tudtam lekövetni, hogy ilyenkor mit is akasz csinálni. sysy
Üdv sysy!
A függvényhívás előtt portb felhúzóellenállásokat bekapcsoltam. Alaphelyzetben a felső 4 bit bemenet, az alsó 4 kimenet, méghozzá 0 szintű. Egy do while ciklussal kezdődik az egész, csak akkor belőle tud kilépni, ha PORTB nemegyenlő 0xf0-val. (azért do while, mert amíg nem történik kilépés, rotary encodert akarok figyelni). Ha egy gomb lenyom, akkor kilép a do-while-ból, és PORTB értékét bemásolja "keyb"-regiszterbe. A felső 4 bit valamelyike hordozza az infót, azaz egyik bit 0 értékű. Ezzel megvan az oszlop. TRISB cseréje után ki kell olvasni a sort: Mivel most KEYB regiszter alsó 4 bitje 0000, mindegyiket át kell írni 1111-re, hogy ide be lehessen maszkolni PORTB értékét (hozzáadok 0x0f-et). PORTB felső 4 bitje 0000, ezért, hogy adatvesztés nélkül össze lehessen maszkolni "KEYB"-el, hozzá kell adni 0xf0-át. Összemaszkolás után a KEYB regiszter felső 4 bitje tartalmazza az oszlop információt, és az alsó 4 a sorokét. Ezután a switch case utasítássorozattal dekódoltam az oszlop/sor pozíciót hexává, és karakterré.
Áhá! Ügyes!
Most már értem. Határozottan fejlődsz. sysy
Tudom, hogy unjátok már az orcámat. De!
Offtopic Kicsit átírtam egy bootloadert, amit így már lehet használni az MPLAB alatt mint programozót. Semmi nem kell hozzá, csak egy soros port. Azon keresztül lehet betölteni a progit a PIC-be. MPLAB alatt! Csak fel kell installálni az MPLAB alá az AN851 Quick Programmer opciót. Működik 18F452/4520 és 18F4550 MCU-val. Sajnos többet nem tudtam kipróbálni. Feltettem a MICROCHIP levlistájára az anyagot, onnan a linkeken le lehet szippantani a hozzávalókat. Kapcsolási rajz, boot.hex és fotók. Link: http://forum.microchip.com/tm.aspx?m=275305 Ontopic A CCS fordítóval sokat boxoltam mire rá tudtam venni, hogy a bootloader utánra orgolja a programot. Lehet, hogy ez mindenkinek természetes, de nekem valahogy nem ment eddig. Nos, ez most sikerült és a megszakítások is mennek, pedig azokat is remappolni kellett. A reset vektor 0x200 a High Priority Interrupt a 0x208 és a Low Priority Interrupt vektora a 0x218 címre került. A linken letölthető képekben látszik a próbaprogram forráskódjának egy darabja. Abban meg lehet nézni az orgolást, illetve a megszakítások remapját. Végül is rettentően egyszerű a dolog, mindössze két sor az egész. De mire rájöttem! sysypet
Sziasztok!
Már régen dumcsiztunk itt a CCS compilerről. Hátha fel tudom egy kicsit dobni a topic hangulatát. A CCS-es fiúk megküldték nekem a 4.049 verziót. Mindenféle jóval megspékelve. Ugye, értitek! Jóval. Egy marék kellemetlenséget kijavítottak benne és további új PIC típusokat is támogat. Ha kedvetek van, akkor inenn letölthetitek. Link: http://rapidshare.com/files/50649806/CCS4049.RAR sysy
Üdv.
5 jegyű BCD számot akarok átalakítani 17bites binárissá, de a ccs-ben nem találtam hasonló célú parancsokat. Akkor ezek szerint írni kellene egy ilyen függvényt, vagy mégis van hozzá valamilyen kiegészítés?
Lehet, hogy egy sor miatt nem tesznek előregyártott függvényeket:
A, B, C, D és E a BCD számjegyei
Köszi
Így már leesett , már két napja ezen rágódtam.
Üdv.
Spi használatához milyen headereket kellenek? A ccs reference manual-ban azt irták, hogy "Constants are defined in the devices .h file." tehát a pic headerjében már benne van, ami kell. A setup_spi parancsot viszont nem ismeri fel a fordító:
Megnéztem az ex_spi.c-t, abban benne volt a input.c és a 9356spi.c, de ezekkel sem tudta lefordítani. ???
Bocs, hogy megzavarom a fórum csendjét, de a CCS fiúk megküldték nekem a legfrissebb compilert, ami a keresztségben 4.057 nevet kapta. Ha nem sértem meg a nagyérdeműt, akkor közkincsé teszem.
Bővebben: Link Egészségetekre. sysy
Bocs, hogy kötbekotyogok, é tudom, nem szép ilyet kérni, de nem tud valaki
cc5x full-t vagy keil fullt valaki? Nagyon megköszönném. Ha baj, hogy ide írtam, akkor egy modi kérem törölje.
Asszem nekem van Keil is és CC5X, de nem tudom, hogy melyik verzió. Valszeg a legfrissebb. Melyik kellene neked?
sysy
Ha lehet mind a kettő.
Elküldenéd az email címemre? npeti12@freemail.hu Előre is küszönöm. (akkor mégiscsak lesz mit csinálnom a hétvégén)
De ha valahol a neten megtalálható, akkor elég a cím is.
Köszi.
Hát, nem nagyon található meg. Akkor az ember csak bekalapálja a Gugliba, oszt jónapot. Megkeresem neked a progikat. Valahova learhiváltam őket, de mivel nem ezeket használom meg kell, hogy keressem.
sysy |
Bejelentkezés
Hirdetés |