A kérdésedre a válasz az hogy ez egy diszkfénynek lenne a vezérlése.
A lényege az hogy 4 db tükröt motorok mozgatnak, megadott szögekben.
A „leddek” helyére relék vannak kapcsolva, ezek egy digitális ic bemenetére 2 jelet adnak
egy kisebb és egy nagyobb feszültséget. Ez azt eredményezi hogy egy motort egy PWM elektronikán keresztül, adott szögbe tudja fordítani.
A „nyomógomb” helyére egy másik digitális ic csatlakozik amit egy analóg erősítő léptetget,és így máris hangra kapcsolgatja az elektronikát.
Igazából azért van rá szükségem mert ki szeretném váltani egy meglévő elektronikából az
epromot mivel nagyon nehéz manapság beszerezni és mert véletlenül lejött az egyik alakjáról a takarópapír és így elvesztette a tartalmát!
Szia!
Az csak virtuális nyomógomb. Ez egy futófény, ami a teljes csíkból összemegy, majd szét. "Knight Rider"
Itt megnézheted működés közben: Knight Rider
Üdv! Kalex
A véleményetekre lennék kíváncsi a következőt illetően.
Írtam egy egyszerű kis pic programot, ami egy pwm jelalakot lekövetve, minden felfutó élnél váltja, két kimenet magas szintjét. Elvileg a program szerint úgy kellene viselkednie, hogy amikor a periódusidő lejár, akkor váltja a kimenetet, de a Proteus-ban történő szimuláció azt mutatja, hogy a jelváltás a pwm impulzus lefutóélénél következik be.
Ha az mplab alól tesztelem a programot, akkor úgy viselkedik, ahogy szeretném.
Kérdésem az lenne, hogy programtechnikai hibát vétettem-e vagy a Proteus nem kezeli jól a programomat, ill. találkozott-e már valaki hasonló problémával Proteus-os szimuláció során?
A pic programot és a Proteus-os szkóp adta jelalakokat csatoltam.
A programod jónak tűnik, bár ezt a megoldást direkte nem írja PWM üzemmódban az adatlap, de a TIMR2-nél olvasható. Minden valószínűség szerint találtál egy Proteus hibát!
Köszönöm válaszod. Esetleg nem ismersz más grafikus szimulációs programot, amiben tesztelni tudnák PIC programot?
Azért nem vagyok még teljesen biztos abban, hogy nem vétettem programtechnikai hibát, mert ha a portc 2-es bitjét, azaz a PWM kimenetet figyelem és nem a PIR1 1-es bitjét, akkor jó jelalakokat rajzol a Proteus. :(
Igen sokkal helyesebb, a portot figyelni, mert az adatlap nem említi PWM üzemmódban, a bit változását, de nem biztos, hogy nem működik a dolog. Az elgondolás jó, a bit akkor 1 ha TMR2 = PR2 és ez minden pwm periódus végén történik meg. Ki kell próbálni a hardware-n! Attól hogy nem dokumentált még működhet! Erről az öreg Z80 programozók sokat tudnának mesélni!
Sajnos nem tudok jó szimulátort, ami ennyiféle mikrovezérlőt ismer, de lehet, hogy érdemes lenne egy új témát nyitni a kérdésről. Több szem többet lát alapon!
Azért választottam ezt a megoldást, mert sokkal szebbnek és egyszerűbbnek találom. Itt nem kell egy külön változó, ami úgymond a pwm kimenet impulzusának felfutóélét figyeli. A PWM-es fejezet, azért nem tárgyalja ill. említi meg ezt a dolgot, mert ez nem tartozik oda szorosan. Ez csak az én véleményem.
Üdv, Zsolti
Ui.: Talán majd más PIC szakértő is hozzászól és tud valami okosat mondani. :)
Hali
Igy hirtelen nincs a tarsolyomban F73-hoz projekt, de ha segit, talalsz sok PIC-es (es mas) konyvet, es mintapeldakat is. A Microchip oldalarol le tudod tolteni a MPLAB IDE programot, ami tartalmaz egy ingyenes fejlesztoi kornyezetet, es ASM forditot. A fenti linken talasz Demo panel doksikat is, igaz 28 labashoz pont nem. Valamiert a link nem mukodik. Itt van siman: http://www.4shared.com/account/dir/tqHvM7p5/sharing.html?rnd=94
Sziasztok tudna nekem segíteni valaki?
Olyan gondom van hogy van 1 pic tartalmam és az istenek sem tudom beégetni.
Mivel sajna ez a tartalom 16c711-re van írva, ez pedig sajna tudtommal újraírhatatlan ezért csak dobálom kifele egyet már sikerült beégetnem. És működik csak sajna 4-et nem,és az sajna kuka.
16f627-re gondoltam mert még könnyen beszerezhető. És dataséban megegyezőnek tűnnek.
Egy próbát megér, nagy kárt nem lehet vele okozni. Ha nem használja az AD átalakítót a program akkor működhet. De 16F627-ben csak 1k program memória van, még a 16C711-ben 2k nem biztos, hogy belefér a program (nem néztem)! 16F628 inkább szóba jöhet a 2k memóriával.
Egyébként ha a sikertelenül programozott 16c711-ből kiolvasod a programot és csak nem programozta végig vagy 0 helyett 1 bit szerepel nyugodtan újraprogramozhatod, ugyanazzal a programmal, mert sikerülhet a programozás, de ha CP bit be lett állítva akkor vége a dalnak!
Szia köszi a választ!
Sajna be!
Nem nagyon vagyok még otthon égetésben sajna! Még csak most ismerkedünk!
Egy-épként ezt a CP bitet a hex file automatikusan kipipálja,esetleg ha kiveszem a pipát akkor lehetséges hogy ugyanúgy fog működni minden?
628-at már próbáltam égetés végén hibát hozott,vissza olvasva a tartalmat megegyezet pedig. De sajna a szerkezet sem müködött vele.
Ha szerencséd van még programozásra nyitva maradtak a az IC-k a CP bit ellenére (típusfüggő), viszont olvasni már nem lehet csak a teljes törlés segítene ami az EPROM-os memória miatt nem lehetséges.
A 628-as problémát sejtetem! Amiatt, hogy más perifériák vannak benne kissé máshogy kell inicializálni a portokat, és (vagy) használatban van valamelyik ad bemenet, ami a 628-ban nincs!
A program csak hexben van meg? A program módosításával vagy csak 628-ra fordításával talán életre lehetne kelteni!
Szia!
Megvan másképp is! (csatolmány)
Hátha valakinek többet mond mint nekem.
Egy-épként akkor a CP jelzés valamilyen kódolás lenne?
Mert mikor benyitom a mappát IC-progban akkor ki van pipálva.
Ha megszüntetem a pipát akkor mindenre "felírja" 628,627.f84,c711.
Viszont a panel nem mükszik sajna vele! Ezért is gondolom le van kódolva hogy ne lehessen ellopni. Amivel nem is lenne semmi gond,mert én sem szeretném,hogy ha én kínlódtam vele napokat más ellopja.
De akkor legalább biztosítanám hogy meg lehessen venni.
Nem lehet esetleg ezek ellenére valahogyan mégis csak kinyerni belőle valahogyan?
Előre is nagyon szépen köszönöm!
Üdv. frigo Szép napot mindenkinek!!!
Jól látod a dolgot, a CP bit valóban arra való, hogy a beprogramozott vezérlőből ne lehessen "kilopni" a programot! Ha bekapcsolták nem lehet olvasni a programmemóriát. Adatlap szerint CP0 bit 1: kódvédelem kikapcsolva ha 0: a teljes memóriaterület védett de 00 - 3F területen írható marad.
Belenéztem a programba, nem tudom honnan van, de elég zagyva, se füle se farka. A uC 0 címtől kezdi végrehajtani a programot, négy számot összead a W regiszter tartalmával, ami akármi lehet, majd elugrik. 1-be állítja az egyik portot, ami nem működik mert nem inicializálta azt, majd beolvassa a b portról az adatot (amit szintén nem inicializált), aztán mullává tesz az 1-be állított portot, beállítja a megszakítást, vár 3 ciklust, és visszatér a szubrutin hívásból, ami nem történt meg, ezért a program eltéved tök kiszámíthatatlan mi fog történni, ettől a pontól fogva. Olyan az egész mintha kivágták volna program közepét és csak annyi lenne meg belőle!
A védett memóriából nehéz visszanyerni a programot! Van az interneten pár cég amelyik foglalkozik vele, de nem olcsó mulatság!
list P=16F73,F=INHX8M,R=DEC ; Intel hexa formátum, 10-es számrendszer
#include P16F73.inc ; A szukséges INC fajl
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC&_BODEN_OFF ; Konfiguracios bitek
; van/nincs code protection ( ALL / OFF )
; van/nincs power up timer ( ON / OFF )
; van/nincs watchdog timer ( ON / OFF )
; kvarcoszcillátor (4 MHz) ( XT / LP / HS / RC )
; van/nincs Brown-Out Reset ( ON / OFF )
Sziasztok!
Köszönet istvan-lab nak a rám áldozott órákért. Segítségével sikerült elindítani az első
PIC áramkörömet , egy Knight-Rider Futófényt. :king:
„ két éjszaka de villog!!!” :yes:
Árpi
Nagyon szivesen, orommel hallom,
hogy mostmar eletre keltek az elektronok a PIC-edben :smiley:
Idovel meg tobbet meg fogsz tudni, pl, hogy lehet ezeket a
csunya DELAY rutinokat lecserelni elegansabb TIMER-es megoldasra,
ahol mar a program megirasakor fogod tudni hogy mennyi lesz az idozitesed.
Sok sikert !
Szia!
Azért nem működött mert nekem itthon csak 8 Mhz vagy nagyobb kvarckristályom van.
Én azt hittem menni fog max gyorsabban de nem!
Át kellett állítani a pic ben lévő oszcillátort „vagyis a programban XT röl HS re
Átírtam az eredetit és kezdtem mindent elölről.
Így azonnal indult…. A képen nem látszik de villog.
Itt Egy Knight-Rider Futofeny progija:
Az Osszes PORT kimenet !
MPLAB-ban kompillald le es a kapott HEX filet ird a PIC-be !
PIC16F73-ra optimalizalva !
Sziasztok!
Szia Szoke!
A kérdésedre a válasz az hogy ez egy diszkfénynek lenne a vezérlése.
A lényege az hogy 4 db tükröt motorok mozgatnak, megadott szögekben.
A „leddek” helyére relék vannak kapcsolva, ezek egy digitális ic bemenetére 2 jelet adnak
egy kisebb és egy nagyobb feszültséget. Ez azt eredményezi hogy egy motort egy PWM elektronikán keresztül, adott szögbe tudja fordítani.
A „nyomógomb” helyére egy másik digitális ic csatlakozik amit egy analóg erősítő léptetget,és így máris hangra kapcsolgatja az elektronikát.
Igazából azért van rá szükségem mert ki szeretném váltani egy meglévő elektronikából az
epromot mivel nagyon nehéz manapság beszerezni és mert véletlenül lejött az egyik alakjáról a takarópapír és így elvesztette a tartalmát!
Üdv Frigo
0
Szia!
Az csak virtuális nyomógomb. Ez egy futófény, ami a teljes csíkból összemegy, majd szét. "Knight Rider"
Itt megnézheted működés közben: Knight Rider
Üdv! Kalex
0
Sziasztok!
A véleményetekre lennék kíváncsi a következőt illetően.
Írtam egy egyszerű kis pic programot, ami egy pwm jelalakot lekövetve, minden felfutó élnél váltja, két kimenet magas szintjét. Elvileg a program szerint úgy kellene viselkednie, hogy amikor a periódusidő lejár, akkor váltja a kimenetet, de a Proteus-ban történő szimuláció azt mutatja, hogy a jelváltás a pwm impulzus lefutóélénél következik be.
Ha az mplab alól tesztelem a programot, akkor úgy viselkedik, ahogy szeretném.
Kérdésem az lenne, hogy programtechnikai hibát vétettem-e vagy a Proteus nem kezeli jól a programomat, ill. találkozott-e már valaki hasonló problémával Proteus-os szimuláció során?
A pic programot és a Proteus-os szkóp adta jelalakokat csatoltam.
Kíváncsian várom a megfejtést. :)
Üdv, Zsolti
0
Szia Zsolti,
A programod jónak tűnik, bár ezt a megoldást direkte nem írja PWM üzemmódban az adatlap, de a TIMR2-nél olvasható. Minden valószínűség szerint találtál egy Proteus hibát!
Üdv,
Oszi
0
Szia Oszi!
Köszönöm válaszod. Esetleg nem ismersz más grafikus szimulációs programot, amiben tesztelni tudnák PIC programot?
Azért nem vagyok még teljesen biztos abban, hogy nem vétettem programtechnikai hibát, mert ha a portc 2-es bitjét, azaz a PWM kimenetet figyelem és nem a PIR1 1-es bitjét, akkor jó jelalakokat rajzol a Proteus. :(
Üdv, Zsolti
0
Szia,
Igen sokkal helyesebb, a portot figyelni, mert az adatlap nem említi PWM üzemmódban, a bit változását, de nem biztos, hogy nem működik a dolog. Az elgondolás jó, a bit akkor 1 ha TMR2 = PR2 és ez minden pwm periódus végén történik meg. Ki kell próbálni a hardware-n! Attól hogy nem dokumentált még működhet! Erről az öreg Z80 programozók sokat tudnának mesélni!
Sajnos nem tudok jó szimulátort, ami ennyiféle mikrovezérlőt ismer, de lehet, hogy érdemes lenne egy új témát nyitni a kérdésről. Több szem többet lát alapon!
Üdv,
Oszi
0
Szia Oszi!
Azért választottam ezt a megoldást, mert sokkal szebbnek és egyszerűbbnek találom. Itt nem kell egy külön változó, ami úgymond a pwm kimenet impulzusának felfutóélét figyeli. A PWM-es fejezet, azért nem tárgyalja ill. említi meg ezt a dolgot, mert ez nem tartozik oda szorosan. Ez csak az én véleményem.
Üdv, Zsolti
Ui.: Talán majd más PIC szakértő is hozzászól és tud valami okosat mondani. :)
0
Szia Zsolti,
No azért én nem tartom magam szakértőnek! :fun: Legfeljebb lelkes amatőr!!!
Üdv,
Oszi
0
Szia!
Itt http://www.topshareware.com/free-asm-file-to-hex-file-converter/download... egy fordító.
Üdv.:Ckó
0
Hali
Igy hirtelen nincs a tarsolyomban F73-hoz projekt, de ha segit, talalsz sok PIC-es (es mas) konyvet, es mintapeldakat is. A Microchip oldalarol le tudod tolteni a MPLAB IDE programot, ami tartalmaz egy ingyenes fejlesztoi kornyezetet, es ASM forditot. A fenti linken talasz Demo panel doksikat is, igaz 28 labashoz pont nem. Valamiert a link nem mukodik. Itt van siman: http://www.4shared.com/account/dir/tqHvM7p5/sharing.html?rnd=94
0
Sziasztok tudna nekem segíteni valaki?
Olyan gondom van hogy van 1 pic tartalmam és az istenek sem tudom beégetni.
Mivel sajna ez a tartalom 16c711-re van írva, ez pedig sajna tudtommal újraírhatatlan ezért csak dobálom kifele egyet már sikerült beégetnem. És működik csak sajna 4-et nem,és az sajna kuka.
16f627-re gondoltam mert még könnyen beszerezhető. És dataséban megegyezőnek tűnnek.
0
Szia,
Egy próbát megér, nagy kárt nem lehet vele okozni. Ha nem használja az AD átalakítót a program akkor működhet. De 16F627-ben csak 1k program memória van, még a 16C711-ben 2k nem biztos, hogy belefér a program (nem néztem)! 16F628 inkább szóba jöhet a 2k memóriával.
Egyébként ha a sikertelenül programozott 16c711-ből kiolvasod a programot és csak nem programozta végig vagy 0 helyett 1 bit szerepel nyugodtan újraprogramozhatod, ugyanazzal a programmal, mert sikerülhet a programozás, de ha CP bit be lett állítva akkor vége a dalnak!
Üdv,
Oszi
0
Szia köszi a választ!
Sajna be!
Nem nagyon vagyok még otthon égetésben sajna! Még csak most ismerkedünk!
Egy-épként ezt a CP bitet a hex file automatikusan kipipálja,esetleg ha kiveszem a pipát akkor lehetséges hogy ugyanúgy fog működni minden?
628-at már próbáltam égetés végén hibát hozott,vissza olvasva a tartalmat megegyezet pedig. De sajna a szerkezet sem müködött vele.
Üdv Frigo
0
Szia,
Ha szerencséd van még programozásra nyitva maradtak a az IC-k a CP bit ellenére (típusfüggő), viszont olvasni már nem lehet csak a teljes törlés segítene ami az EPROM-os memória miatt nem lehetséges.
A 628-as problémát sejtetem! Amiatt, hogy más perifériák vannak benne kissé máshogy kell inicializálni a portokat, és (vagy) használatban van valamelyik ad bemenet, ami a 628-ban nincs!
A program csak hexben van meg? A program módosításával vagy csak 628-ra fordításával talán életre lehetne kelteni!
Üdv,
Oszi
0
Szia!
Megvan másképp is! (csatolmány)
Hátha valakinek többet mond mint nekem.
Egy-épként akkor a CP jelzés valamilyen kódolás lenne?
Mert mikor benyitom a mappát IC-progban akkor ki van pipálva.
Ha megszüntetem a pipát akkor mindenre "felírja" 628,627.f84,c711.
Viszont a panel nem mükszik sajna vele! Ezért is gondolom le van kódolva hogy ne lehessen ellopni. Amivel nem is lenne semmi gond,mert én sem szeretném,hogy ha én kínlódtam vele napokat más ellopja.
De akkor legalább biztosítanám hogy meg lehessen venni.
Nem lehet esetleg ezek ellenére valahogyan mégis csak kinyerni belőle valahogyan?
Előre is nagyon szépen köszönöm!
Üdv. frigo Szép napot mindenkinek!!!
0
Szia,
Jól látod a dolgot, a CP bit valóban arra való, hogy a beprogramozott vezérlőből ne lehessen "kilopni" a programot! Ha bekapcsolták nem lehet olvasni a programmemóriát. Adatlap szerint CP0 bit 1: kódvédelem kikapcsolva ha 0: a teljes memóriaterület védett de 00 - 3F területen írható marad.
Belenéztem a programba, nem tudom honnan van, de elég zagyva, se füle se farka. A uC 0 címtől kezdi végrehajtani a programot, négy számot összead a W regiszter tartalmával, ami akármi lehet, majd elugrik. 1-be állítja az egyik portot, ami nem működik mert nem inicializálta azt, majd beolvassa a b portról az adatot (amit szintén nem inicializált), aztán mullává tesz az 1-be állított portot, beállítja a megszakítást, vár 3 ciklust, és visszatér a szubrutin hívásból, ami nem történt meg, ezért a program eltéved tök kiszámíthatatlan mi fog történni, ettől a pontól fogva. Olyan az egész mintha kivágták volna program közepét és csak annyi lenne meg belőle!
A védett memóriából nehéz visszanyerni a programot! Van az interneten pár cég amelyik foglalkozik vele, de nem olcsó mulatság!
Üdv,
Oszi
0
Ha LCD modult akarsz ratenni itt van egy pelda:
;
; Labbekotesek:
;
; LCD: EN RS RW D7 D6 D5 D4
; pin: 06 04 05 14 13 12 11
;
; PIC: D6 D5 D4 D3 D2 D1 D0 (PORTC)
; pin: 17 16 15 14 13 12 11
A tapot az LCD 1,2,3-as labaira teszed... ezt barhol megkapod.
A Progi:
list P=16F73,F=INHX8M,R=DEC ; Intel hexa formátum, 10-es számrendszer
#include P16F73.inc ; A szukséges INC fajl
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC&_BODEN_OFF ; Konfiguracios bitek
; van/nincs code protection ( ALL / OFF )
; van/nincs power up timer ( ON / OFF )
; van/nincs watchdog timer ( ON / OFF )
; kvarcoszcillátor (4 MHz) ( XT / LP / HS / RC )
; van/nincs Brown-Out Reset ( ON / OFF )
ERRORLEVEL 1,-302 ; 302-es hibauzenet kikapcs.
CBLOCK 0x20
w1 ;Timer 1. valtozo
w2 ;Timer 2. valtozo
w3 ;Timer 3. valtozo
w4 ;Timer 4. valtozo
w5 ;CLK
ENDC
org 0
clrf PORTA ; minden kimenet alacsony (0 V)
clrf PORTB
clrf PORTC
bsf STATUS, RP0 ; váltás az 1. bankra
MOVLW B'110' ; all pins is digital I/O
MOVWF ADCON1
MOVLW B'000000'
MOVWF TRISA ; 1 bemenet
MOVLW B'00000000' ;
MOVWF TRISB ; 0 kimenet
MOVLW B'00000000'
MOVWF TRISC
movlw b'00000110' ;'10000110'
movwf OPTION_REG
bcf STATUS, RP0 ; visszaváltás a 0. bankra
clrf INTCON
clrf PORTA
clrf PORTB
clrf PORTC
; ************ DISPLAY INIT *********************
CALL DELAY3
MOVLW B'00000011' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'01000011' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00000011' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'01000011' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00000011' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'01000011' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00000011' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
CLRF PORTC ; FUNCTION SET
CALL DELAY2
MOVLW B'00000010' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'01000010' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00000010' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'01000010' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00000010' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00001000' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'01001000' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00001000' ; FUNCTION SET
MOVWF PORTC
CALL DELAY2
CLRF PORTC ; DISPLAY CONTROL
CALL DELAY2
MOVLW B'01000000' ; DISPLAY CONTROL
MOVWF PORTC
CALL DELAY2
CLRF PORTC ; DISPLAY CONTROL
CALL DELAY2
MOVLW B'00001100' ; DISPLAY CONTROL
MOVWF PORTC
CALL DELAY2
MOVLW B'01001100' ; DISPLAY CONTROL
MOVWF PORTC
CALL DELAY2
MOVLW B'00001100' ; DISPLAY CONTROL
MOVWF PORTC
CALL DELAY2
CLRF PORTC ; ENTRY MODE SET
CALL DELAY2
MOVLW B'01000000' ; ENTRY MODE SET
MOVWF PORTC
CALL DELAY2
CLRF PORTC ; ENTRY MODE SET
CALL DELAY2
MOVLW B'00000110' ; ENTRY MODE SET
MOVWF PORTC
CALL DELAY2
MOVLW B'01000110' ; ENTRY MODE SET
MOVWF PORTC
CALL DELAY2
MOVLW B'00000110' ; ENTRY MODE SET
MOVWF PORTC
CALL DELAY2
CLRF PORTC ; ENTRY MODE SET
CALL DELAY2
; HOME
CLRF PORTC ; SET FIRST LINE 1 POS
CALL DELAY2
MOVLW B'01000000'
MOVWF PORTC
CALL DELAY2
CLRF PORTC
CALL DELAY2
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY2
MOVLW B'01000010'
MOVWF PORTC
CALL DELAY2
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY2
CLRF PORTC
MOVLW B'00100100' ; P
MOVWF PORTC
CALL DELAY2
MOVLW B'01100101'
MOVWF PORTC
CALL DELAY2
MOVLW B'00100101'
MOVWF PORTC
CALL DELAY2
MOVLW B'00100000'
MOVWF PORTC
CALL DELAY2
MOVLW B'01100000'
MOVWF PORTC
CALL DELAY2
MOVLW B'00000000'
MOVWF PORTC
CALL DELAY2
MOVLW B'00100100' ; I
MOVWF PORTC
CALL DELAY2
MOVLW B'01100100'
MOVWF PORTC
CALL DELAY2
MOVLW B'00100100'
MOVWF PORTC
CALL DELAY2
MOVLW B'00101001'
MOVWF PORTC
CALL DELAY2
MOVLW B'01101001'
MOVWF PORTC
CALL DELAY2
MOVLW B'00000000'
MOVWF PORTC
CALL DELAY2
MOVLW B'00100100' ; C
MOVWF PORTC
CALL DELAY2
MOVLW B'01100100'
MOVWF PORTC
CALL DELAY2
MOVLW B'00100100'
MOVWF PORTC
CALL DELAY2
MOVLW B'00100011'
MOVWF PORTC
CALL DELAY2
MOVLW B'01100011'
MOVWF PORTC
CALL DELAY2
MOVLW B'00000000'
MOVWF PORTC
CALL DELAY2
DELAY2
movlw 120
movwf w1
wx1 nop
decfsz w1
goto wx1
clrw
return
DELAY3
movlw 4
movwf w3
wy3 movlw 128
movwf w2
wy2 movlw 255
movwf w1
wy1 nop
decfsz w1
goto wy1
decfsz w2
goto wy2
decfsz w3
goto wy3
clrw
return
END
Ki fogja neked irni az LCD-re hogy: PIC
Ha ez sikerult, akkor a tobbi mar menni fog.
Sok sikert!
0
Sziasztok!
Köszönet istvan-lab nak a rám áldozott órákért. Segítségével sikerült elindítani az első
PIC áramkörömet , egy Knight-Rider Futófényt. :king:
„ két éjszaka de villog!!!” :yes:
Árpi
0
Nagyon szivesen, orommel hallom,
hogy mostmar eletre keltek az elektronok a PIC-edben :smiley:
Idovel meg tobbet meg fogsz tudni, pl, hogy lehet ezeket a
csunya DELAY rutinokat lecserelni elegansabb TIMER-es megoldasra,
ahol mar a program megirasakor fogod tudni hogy mennyi lesz az idozitesed.
Sok sikert !
0
Szia!
Az órajellel voltak a problémák, nem rezgett a kvarc.
0
Szia!
Azért nem működött mert nekem itthon csak 8 Mhz vagy nagyobb kvarckristályom van.
Én azt hittem menni fog max gyorsabban de nem!
Át kellett állítani a pic ben lévő oszcillátort „vagyis a programban XT röl HS re
Átírtam az eredetit és kezdtem mindent elölről.
Így azonnal indult…. A képen nem látszik de villog.
Árpi
0
Hat, igen, en sem - te sem mondtad, hogy milyen a Kvarc...
pedig kezenfekvo volt a dolog.
Mindig vannak kihivasok es ezert szep az elektronika !
0
Egy egyszerubb bevitelkezeles... itt mar van input-od...
Jo szorakozast...
list P=16F73,F=INHX8M,R=DEC
; Intel hexa formátum, 10-es számrendszer
#include P16F73.inc ; A szukséges INC fajl
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC&_BODEN_OFF ; Konfiguracios bitek
ERRORLEVEL 1,-302 ; 302-es hibauzenet kikapcs.
;
;
; Az In bemenetre erkezo pozitiv impulzus hatasara 5 mp utan
; az OUT kimeneten megjelenik egy 15 mp-ig tarto impulzus.
;
; PORTB 0 = IN
;
;
; PORTC 0 = OUT
;
;
CBLOCK 0x20
w1, w2, w3
ENDC
org 0
START
bsf STATUS, RP0 ; switch to bank 1.
MOVLW B'110' ; all pins is digital I/O
MOVWF ADCON1
MOVLW B'000000'
MOVWF TRISA ; 1 input
MOVLW B'00000001'
MOVWF TRISB ; 0 output
MOVLW B'00000000'
MOVWF TRISC
movlw b'11000000'
movwf OPTION_REG
bcf STATUS, RP0 ; switch to bank 0.
BSF INTCON,RBIE
clrf PORTA
clrf PORTB
clrf PORTC
;************ A FOPROGRAM *****************
LOOP
CALL DELAY2
BTFSS PORTB,0
GOTO EX
CALL DELAY2
BTFSS PORTB,0
GOTO EX
CALL DELAY2
BTFSS PORTB,0
GOTO EX
CALL DELAY1
BSF PORTC,0
CALL DELAY3
BCF PORTC,0
EX
BCF PORTC,0
BCF PORTC,1
SLEEP
GOTO LOOP
DELAY1
movlw 35
movwf w3
wl3 movlw 128
movwf w2
wl2 movlw 255
movwf w1
wl1 nop
decfsz w1
goto wl1
decfsz w2
goto wl2
decfsz w3
goto wl3
return
DELAY2
movlw 79
movwf w1
wx1 nop
decfsz w1
goto wx1
clrw
return
DELAY3
movlw 128
movwf w3
ww3 movlw 128
movwf w2
ww2 movlw 255
movwf w1
ww1 nop
decfsz w1
goto ww1
decfsz w2
goto ww2
decfsz w3
goto ww3
return
END
0
Itt Egy Knight-Rider Futofeny progija:
Az Osszes PORT kimenet !
MPLAB-ban kompillald le es a kapott HEX filet ird a PIC-be !
PIC16F73-ra optimalizalva !
list P=16F73,F=INHX8M,R=DEC
; Processzor 16F73A, Intel hexa formátum, 10-es számrendszer
#include P16F73.inc ; A szukséges INC fajl
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC ; Konfiguracios bitek
;Nincs code protection, van power up timer, nincs watchdog timer, kvarcoszcillátor (4 MHz)
ERRORLEVEL 1,-302 ; 302-es hibauzenet kikapcs.
cblock 0x0c
w1 ;Timer 1. valtozo
w2 ;Timer 2. valtozo
w3 ;Timer 3. valtozo
w4 ;Timer 4. valtozo
endc
org 0
bsf STATUS, RP0 ; váltás az 1. bankra
MOVLW 0x06
MOVWF ADCON1
MOVLW B'000000' ; 1 = bemenet
MOVWF TRISA
MOVLW B'00000000' ; 0 = kimenet
MOVWF TRISB
MOVLW B'00000000' ;
MOVWF TRISC
MOVLW B'10000111'
MOVWF OPTION_REG
bcf STATUS, RP0 ; visszaváltás a 0. bankra
clrf INTCON ; nincsenek megszakítások
clrf PORTA
clrf PORTB
clrf PORTC
SCAN
BSF PORTC,0 ; 1-re allitja az x-edik bitet
CALL DELAY
BSF PORTC,1 ; 1-re allitja az x-edik bitet
BCF PORTC,0 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,2 ; 1-re allitja az x-edik bitet
BCF PORTC,1 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,3 ; 1-re allitja az x-edik bitet
BCF PORTC,2 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,4 ; 1-re allitja az x-edik bitet
BCF PORTC,3 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,5 ; 1-re allitja az x-edik bitet
BCF PORTC,4 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,6 ; 1-re allitja az x-edik bitet
BCF PORTC,5 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,7 ; 1-re allitja az x-edik bitet
BCF PORTC,6 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,0 ; 1-re allitja az x-edik bitet
BCF PORTC,7 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,1 ; 1-re allitja az x-edik bitet
BCF PORTB,0 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,2 ; 1-re allitja az x-edik bitet
BCF PORTB,1 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,3 ; 1-re allitja az x-edik bitet
BCF PORTB,2 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,4 ; 1-re allitja az x-edik bitet
BCF PORTB,3 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,5 ; 1-re allitja az x-edik bitet
BCF PORTB,4 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,6 ; 1-re allitja az x-edik bitet
BCF PORTB,5 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,7 ; 1-re allitja az x-edik bitet
BCF PORTB,6 ; 0-ra allitja az x-edik bitet
CALL DELAY ; IRANYVALTAS
BSF PORTB,6 ; 1-re allitja az x-edik bitet
BCF PORTB,7 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,5 ; 1-re allitja az x-edik bitet
BCF PORTB,6 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,4 ; 1-re allitja az x-edik bitet
BCF PORTB,5 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,3 ; 1-re allitja az x-edik bitet
BCF PORTB,4 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,2 ; 1-re allitja az x-edik bitet
BCF PORTB,3 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,1 ; 1-re allitja az x-edik bitet
BCF PORTB,2 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTB,0 ; 1-re allitja az x-edik bitet
BCF PORTB,1 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,7 ; 1-re allitja az x-edik bitet
BCF PORTB,0 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,6 ; 1-re allitja az x-edik bitet
BCF PORTC,7 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,5 ; 1-re allitja az x-edik bitet
BCF PORTC,6 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,4 ; 1-re allitja az x-edik bitet
BCF PORTC,5 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,3 ; 1-re allitja az x-edik bitet
BCF PORTC,4 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,2 ; 1-re allitja az x-edik bitet
BCF PORTC,3 ; 0-ra allitja az x-edik bitet
CALL DELAY
BSF PORTC,1 ; 1-re allitja az x-edik bitet
BCF PORTC,2 ; 0-ra allitja az x-edik bitet
CALL DELAY
BCF PORTC,1 ; 0-ra allitja az x-edik bitet
GOTO SCAN
DELAY
movlw 1
movwf w4
wx4 movlw 128
movwf w3
wx3 movlw 255
movwf w2
wx2 movlw 255
movwf w1
wx1 nop
decfsz w1
goto wx1
decfsz w2
goto wx2
decfsz w3
goto wx3
decfsz w4
goto wx4
clrw
return
0
Köszönöm! Na asszem ma se alszok :rohog:
0
Irhattal volna egy PM-et, hogy mivel kinlodsz... van peldaaramkorom dogivel :P
0
Szia!
Köszönöm , írok .
Árpi
0
Pages