Fórum témák
» Több friss téma |
Fórum
Köszönöm, ez egy kicsit bonyolult még így is, de remélem meg fogom érteni...
Szia!
Ez az un. buborék rendezés. Működése röviden: Kettős ciklussal a kisebb értékű elemet előrébb helyezzük. Ha lefut a kettő sciklus, az elemek nagyság szerint rendezett sorban lesznek a tömbben. Részletesebben: Egy ciklussal végigvizgáljuk a tömb elemeit a 0 indextól az (n-1) indexig (azért nem n -ig, mert a soron levő elem utáni elemeket is vizgáljuk). A belső ciklusban az első ciklus által kiválasztott elemet követő elemekre megvizsgáljuk, hogy kisebb-e, mint az első ciklus által kiválasztott elem. Ha kisebb az első ciklus által kiválasztott elemmel felcseréljük. Így a belső ciklus utolsó lefutása után a tömbben levő legkisebb értékű elem a tömb legelső indexű elemébe kerül. Ekkor a külső ciklus változóját növeljük - azaz a további feladat olyan, mintha az 1 indextől egy elemmel kisebb tömböt rendeznénk...
Szép napot kedves fórumozók!
Van-e itt egy kedves társunk, aki programozó, és akad 10 perc szabadideje? Mert ha lenne egy ilyen kolléga, akkor kellene 1 kis segítség. Van egy program, amiben 1D tömb van, és nekem nehézséget okoz. Pascal-os program(mit tehetek, ezt tanítják), s ellenőrző lesz belőle, de sehogyan sem értem a működését az első ciklus után. Szóval kellene egy nagyon egyszerű nyelven fogalmazott magyarázat, hogy mi miért van, minek mi a szerepe, de jól érthetően! ![]() A program szövege nagyon egyszerű: Idézet: „Beolvasni n elemét a tömbnek, sorbarendezni őket csökkenő sorrendben, s e rendezett elemeket kimutatni egy új sorban, elválasztva üres hellyel!” Mellékeltem a Pascal filet, remélem mielőbb kapok segítséget. Sokatoknak ez rutinmunka, nekem életmentés! Üdv!
Sleep módból a következők tudják felébreszteni a 16F88x -et:
Külső reset, watchdog, RB0 - INT bemenet, Timer1 átfordulás (aszinkron számláló), ECCP capture esemény, A/D konverzió vége, EEProm írás vége, komparátor kimenet változás, változás figyelő (IOC), Eusart break és I2C slave állapotváltás. Az teheti meg, amelyik működése engedélyezett és megszakítás engedélyező bitje is 1 értékű (kivéve watchdog és reset). Lehet a timer1 -et használni sleep alatt: aszinkron szálmálóként letiltott megszakításkéréssel vagy a megszakítás kérésére újrainicializálva és űjra sleep állapotba küldeéssel. Az utóbbi esetben a főprogramnak meg kell különböztetni a timer1 átfordulást a tényleges felébresztéstől.
Mit lehet ez ellen tenni?
Nem lehet alvó módba tenni a PIC-et, ha használom a Timer1 órát?
Azzal szeretném felébreszteni a PIC-et, azért állítottam 1-re.
Ha testre kötöm akkor is fennáll a probléma. Arra gyanakszok, hogy a többi lábára kapott impulzus miatt esik mindig ki az alvó módból, és mivel külső kvarcot használok órának, ezért az RC1/T1OSI lábra folyamatosan kapja a jeleket. Ha átállítom a Timer1-et belső órára, és kiveszem a kvarcot az áramkörből, akkor mintha működne rendesen. A hozzászólás módosítva: Ápr 7, 2014
Idézet: „INTCON.INTE := 1;” A külső RB0 megszakítás bekapcsolva, az RB0 láb bemenet. Fix logikai szint van rá kapcsolva? A hozzászólás módosítva: Ápr 7, 2014
Sziasztok!
Tanácstalan lettem a Sleep parancs használatával kapcsolatban. Azt tapasztaltam, hogy ha alvó módba akarok tenni egy külső kvarcról (T1OSO/T1OSI lábak) üzemelő órát, akkor a programom fő része továbbra is fut, és frissíti az LCD szövegét. Készítettem a hiba megtalálásához egy teszt kódot és Proteusz kapcsolást. Itt beállítottam egy Timer1 időzítést és a főprogramban villogtatok egy ledet, majd azonnal alvómódba teszem a mikrokontrollert. A Timer1-nek valójában nincs is köze a villogtatáshoz, annak csak a háttérben kellene futnia. Ennek ellenére azt tapasztalom, hogy ha a Timer1 inicializálva van, akkor a led a sleep mód ellenére is villog, ha viszont kikapcsoloma Timer1-et, akkor megmarad az utolsó állapotában, tehát valóban "elalszik" a mikrokontroller (16F886). Ennek így kell működnie, vagy én követek el valami hibát?
Sziasztok!
Használt már valaki tcp connectet? Egy 18f67j60 at programozok mikropascalban : Net_Ethernet_Intern_connectTCP(ip, port_remote, port_local, socket) -tel próbálkozok kapcsolódni. Lehallgatva a hálózatot látszik, hogy ki megy a kérés a tcp szerver felé, a szerver válaszol is, de nem kapcsolódik valamiért a pic. Valakinek sikerült ezt használni?
Sziasztok.
Az én progim-ból sok minden hiányzott még. A PORTA0 lábon van egy 10K ellenállás.Bővebben: Gomb 10K ohm asm-ben megirtam, ott egy kicsit könyebb volt a dolog. De igy is jó. Most nézem hogy mi micsoda az mpas-fájlban. hali
Szia, csatoltam a programot.
Nem írtad, hogy aktív alacsony vagy magas a gomb, én alacsonyra írtam. (tehát kell egy felhúzó ellenállás a PORTA0-ra) Üdv. A hozzászólás módosítva: Márc 17, 2014
ansel és anselh regisztereket is állítsd nullára.
Ezzel az AN lábakat analógról digitálisra váltod át.
Kapcsolásoddal lesz szerintem a baj.
Pl, ha minden porta és porte bemenet, akkor ezeknek a nem használt lábait nem árt 10k ellenállással testre, vagy tápra kötni. A nyomógomb bekötésénél szintén kell a helyesen bekötött ellenállás. adcon0 és adcon1 regisztereket állítsd még nullára. A hozzászólás módosítva: Márc 17, 2014
Üdv. ( PIC16F887)
Szimulátorba betöltöttem, forditás után folyamatosan villognak a led-ek. Nekem is ugyan ez a hiba jött ki. Amikor én ezt megirtam, termlészetesen nem münködött . ![]() Ezt használtam forrásnak. (csatolt fájl eredeti) De ezzel sem ment. Napersze átirtam benne amit kell. asm-ben is megirom, aztán majd kiderül gyorsan hogy mi kell még hozzá hogy münködjön. Ma este átteszem a programot PIC16F84-re is, és megnézem hogy ott mit csinál vele. Hali A hozzászólás módosítva: Márc 17, 2014
Alapesetben így kell:
Nem árt még a porta.0-t pergésmentesíteni egy boolean változó beiktatásával. A hozzászólás módosítva: Márc 17, 2014
Sziasztok. ( PIC16F887 )
Feltétel iráshoz kérnék némi segitséget. A gomb a PORTA0-ra kerül. ( RA0) RB7,RB6,RB5,RB4 led világit alapjáraton. RB3,RB2,RB1.RB0 nem világit a led alapjáraton. Amikor a gomb lenyomásra kerül (PORTA0) , akkor RB7,RB6,RB5,RB4 nem világit a led, de a RB3,RB2,RB1.RB0 világit. a többi a fájl-ban. Hali.
Köszi a segitséget.
Most már üzemel a villogó. Igaz az integrált A1-változóval megszenvedtem amire elfogadta. const A1 = 30; // idözitési változó Én ezt még úgy ismertem hogy ( integer : ; ) Most már tudok tovább haladni. ![]() Üzemképes példaprogram a ZIP-ben Hali
Valóban! A % karaktert kihagytam a bináris szám elől.
Tehát helyesen: trisa := %11111111; De megadhatod 16-os számrendszerben is: trisa := $FF; A hozzászólás módosítva: Jan 30, 2014
A TXT-ben vannak a declaration.
Gondolom én ebből kéne dolgozni. (CTRL+D gomb.)
Üdv.
A példaprogit beillesztettem a MikroPascal6.0-ba Hibaüzenetet kaptam. Argument is out of range "11111111"to'byte" A többi a jpg-fájlban látszik. Pálda progi, igen sok van benne ,de nem teljesen jók, Hiányosak illetve nem műnködnek. Küldjetek légyszives zip-ben, kompletten leforditott fájlokat amik üzemképesek. PIC16F84A-hoz. Hali
Igen, így kezdtem, mint minden eddigi PIC-nél, amivel foglalkoztam.
A teszt program 1 másodpercig felvillant egy ledet, majd 1 másodpercig elalszik. Így kellene működnie. De ha HS vagy HS+PLL osc-t használok, és a Freq 25 MHz, kb. fél percig ég és fél percig elalszik. Nem mértem, de hosszú idő. Ha a frekvencia 0.316..... akkor működik jól, másodperces ciklussal. Innen gondolom, hogy 31 kHz-cel megy. A hozzászólás módosítva: Jan 29, 2014
A "Project\Edit project" menüre felbukkanó ablakban állítsd az "Oscillator Selection"-t "HS oscillator"-ra, az "Oscillator Frequency"-t pedig 25.0 értékre.
A hozzászólás módosítva: Jan 29, 2014
Sziasztok!
Tud abban valaki segíteni, hogy hogyan kell egy 18F67j60 Pic-et rávenni hogy a külső (OSC1/OSC2) lábakra kötött 25MHz - es osc.körről vegye a belső órajelet? Átolvastam a doksit, de nekem mindig (függetlenül attól hogy mit állítok) 31 kHz-en működik: Így próbáltam: T1CON.T1RUN_bit:=0; OSCCON.3:=0; OSCCON.1:=1; OSCCON.0:=0; OSCTUNE:=$40; Köszi!
Tele a net példákkal, használati útmutatókkal, szakdolgozatokkal, és ahogyan gthomas mondta, a pascal könyvtárában is vannak demok.
Szia!
A mikropascal-ban van néhány példaprogram, azokból el tudsz indulni. pl: MikroPascal\Examples\Development Systems\BIGPIC5\Led Blinking
Sziasztok.
Segítséget szeretnék kérni PIC16F84A programozásában. Lépésről lépésre. ASM-ben azért megyeget a dolog. Most MIKROPASCAL-ban szeretnék programot írni. MIKROPASCAL-BAN ctrl+d és ez jön ki. Lásd TXT gondolom ezekkel tudok majd dolgozni. Borland delphi7-ben már kreáltam pár szoftvert, de ez nem az . ![]() Ebben kérném a segítségeteket. PIC RA PIN -bemenet PIC RB PIN -kimenet Ide hogyan kell helyesen megadni a paramétereket. { Declarations section } begin RB0-pin bekapcsol TIMER-késleltetésnek RB0-pin kikapcsol stb end. Példaprogramok is jöhetnek, minden mennyiségben. Köszönöm. Hali A hozzászólás módosítva: Jan 27, 2014
Köszönöm a segítséget, én is gondoltam, hogy valami ilyesmi miatt figyelmeztetett a rendszer.
Az eeprom 41. byte-jába akartál tizedes törtet írni.
Vagy kerekítsd a kapott eredményt 0 és 255 közötti kerek egész számra (floor - lefelé kerekít; ceil - felfelé kerekít), vagy 2 byte-ba írd be a mentendő adatot (modf - szétbontja az egész és a tizedes részére a törtet). Természetesen utóbbi esetben is mindkét byte 0..255 közötti szám lehet. Súgóban találsz részletes leírást a kapcsolódó függvényekről. A hozzászólás módosítva: Dec 21, 2013
|
Bejelentkezés
Hirdetés |





