Fórum témák
- • Retro számítógépek
- BEKO Mosó/Szárító gép
- • Audiofil, High End Audio
- • Muzeális készülékek-alkatrészek restaurálása
- • Házilag építhető fémkereső
- • Mobiltelefon hiba
- • Elektromos kerékpár akkumulátorának helyettesítése
- • Li-Ion saját akkucsomag készítése
- • Inverteres hegesztőtrafó
- • FOK-GYEM TR9178 tápegység
- • Háromfázisú aggregátor
- • Autós erősítős kérdések, problémák
- • Tranzisztorok helyettesítése
- • Elektronikai témájú könyvek újságok
- • Távirányító javítás
- • Vezeték nélküli hangátvitel
- • Biciklilámpa / bringalámpa
- • Eredményjelző
- • RC távirányítás modellekhez
- • VF3 - 6 végerősítő
- • Lemezjátszó beállítása, javítása
- • LCD TV probléma
- • Sütő javítás
- • Arduino
- • Padlófűtés vezérlés
- • Tranzisztor teszter
- • Számítógépes áramkörszimuláló programok
- • Akkumulátoros fúró
- • Videoton EA-7386-s erösítő
- • Mosogatógép hiba
- • Kombikazán működési hiba
- • Felajánlás, azaz ingyen elvihető
- • Suzuki Swift elektronika
- • Páraérzékelő szenzor
- • VIDEOTON RT (RA) 6380S
- • Vásárlás, hol kapható?
- • Számítógép hiba, de mi a probléma?
- • Nextion érintőképernyős HMI, UART kommunikációval
- • Ultrahangos párásító
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Alternativ HE találkozó(k)
- • Erősítő mindig és mindig
- • GPS GSM modulok programozása
- • Digitális kapcsoló
- • Porszívó javítás
- • Szintetizátor javítás
- • Orsós magnók
- • Dobozolási technikák, műszerdobozok
- • USB bekötése
- • Elfogadnám, ha ingyen elvihető
- • Időzítő
- • Kemencevezérlés
- • Mosógép vezérlők és általános problémáik
- • LED-es világítás
- • Keverőpult építése, javítása
» Több friss téma
|
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Ha program forrást teszel fel, használd a [Kód] gombot!
; Igy olvashatobb lesz a program
; ez csak a vege
MainLoop:
movf Display,w ; Copy the display to the LEDs
movwf PORTC
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
bcf STATUS,C ; ensure the carry bit is clear
rrf Display,f
btfsc STATUS,C ; Did the bit rotate into the carry?
bsf Display,3 ; yes, put it into bit 3.
goto MainLoop
kesleltetes
OndelayLoop:
decfsz Delay1,f ; Waste time.
goto OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768
decfsz Delay2,f ; The outer loop takes additional 3 instructions per lap * 256
goto OndelayLoop ; (768+3) * 256 = 197376 instructions = 0.197 sec.
; call it a two-tenths of a second.
retlw 0
end
;
Ha a késleltetést a fő programciklusból egy szubrutinba helyezed át, egyből érthetőbb lesz a program. Egy újabb változót használhatva számolod, hányszor hívtad meg a késleltetést, akkor kevesebbet kell írni.
Köszönöm a segítséget nagyjából világos minden csak ez a szubrutinba helyezéses téma hogy zajlik az nem egészen, valamint mit kell átírnom , hogy tudjam megfelelőre állítani a sebességet?!?!
(#) |
Hilo hozzászólása |
Júl 21, 2013 |
|
/ |
|
|
Sziasztok, a kérdésem a következő lenne: van két 16f886-os PIC amiket egy adó/vevő modul párossal szeretnék össze kötni. Első körben még csak ez lenne a későbbiekben viszont több vevő-PIC is lenne ugyan ahhoz az adóhoz. Ha jól szűrtem le akkor itt az aszinkron adatátvitel jöhet szóba. Ha az átvinni kívánt adat 2x8 bit lenne (8 bit azonosító hogy melyik vevőnek szól az adat / 8 bit "hasznos" adat.) Manchester kódolással ez már 32 bit. Van e erre valami portja/akármije a 886-osnak, vagy nekem kell lekezelnem programból? Illetve a maximális adatátviteli sebességet nézve tulajdonképpen a bittek "hosszára" kell figyelnem? Azaz ha adott egy 9600 bps maximális bit ráta akkor egy bit ideje nem lehet rövidebb mint 1/9600 másodperc, de e legjobb ha ez alatt maradok (~felénél) hogy minél kevesebb hibás adat legyen? Előre is köszönöm.
Szia!
Ha ajánlhatnám az rfm12B adó/vevő modulpárt ez kielégít minden igényt.
Egyébként tényleg aszinkron adatátvitellel megy át az adat, nem kell Manchester kódolás sem.
átviteli sebesség állítható, adó és vevő egyben,eleve van egy kódszám, ami beérkezése után kezdi feltölteni az adatpufferét, ezért nem érzékeny a zavarjelekre sem.
Ha rászánod magad akkor segítek az RFM12BS topicban, inkább odatartozó probléma.
Nem kínlódnék Manchester kódolással és előbb alacsonyabb sebességgel, pl. 300-1200bd -al próbálkoznék. De van róla infó ( Bővebben: Link)
Szia!
Az egyszerű modulokban nincs kódolás, így neked kell csinálnod (pl. Bővebben: Link és adópárja). De amiken már kommunikációs interfész van (SPI, UART ..stb), azok már komolyabb modulok, raknak bele kódolást, tehát neked azzal nem kell foglalkoznod. Csak küldöd neki az adatot és kész (illetve ezeket lehet konfigurálni is, amit be lehet állítani pl. egy jumperral).
A lényeg lemaradt. Az RC6 a TX, RC7 az RX láb. Ezeket értelemszerűen ki-, illetve bementetként kell konfigurálni.
Ha összekötöd a TX kimenetet az RX bemenettel, vissza is tudod olvasni a kiküldött byte-ot.
(#) |
Hilo hozzászólása |
Júl 21, 2013 |
|
/ |
|
|
Köszönöm mindenkinek a hozzászólást. Itthon jelenleg HM-T868 / HM-R868 adó/vevő párosom van, ezekkel szeretném megoldani a kérdést.
Egyrészről hogy megértsem a működését, ha nekem kell megcsinálnom a kódolást akkor azzal tanulom meg a legjobban. Másrészt így csak 1 lábát köti le a PIC-nek.
Későbbiekben lehet hogy rfm12B modul párt is kipróbálom, akkor mindenképpen benézek a RFM12BS topicba. Köszönöm a felajánlást.
PIC-ezni azért kezdtem hogy tanuljak, megértsem a dolgokat. Ha megépítek valami, 99% próba panelon teszem, ha működik ahogy elképzeltem, szétszedem és bele vágok valami másba.
Jól értettem amúgy hogy a bittek "hossza" tulajdonképpen amire figyelnem kell az adó maximum sebességénél? A hozzászólás módosítva: Júl 21, 2013
Az EUSART sebessége (baud) kisebb legyen, mint a modul átviteli sebessége.
(#) |
Hilo hozzászólása |
Júl 21, 2013 |
|
/ |
|
|
Ismételten köszönöm, USART leírás akad esetleg magyarul vagy marad az angol?
Ha a PIC EUSART modulját használom, kell-e a küldendő biteket kódolnom, vagy csak küldöm, fogadom és örülök hogy megjött? (értem ezalatt hogy mondjuk 00000000 -at vagy 11111111 -et szeretnék küldeni azt is átküldi így?)
Ha 8 bit azonosító + 8 bit adat kombinációt szeretnék használni, akkor EUSART al küldöm byte-onként, majd a fogadó oldalon programból lekezelem hogy mit szeretnék kezdeni vele, jól értem?
Hp41C a linket nagyon köszönöm!
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x20
Delay1 ; Assign an address to label Delay1
Delay2
Display ; define a variable to hold the diplay
endc
org 0
Start:
bsf STATUS,RP0 ; select Register Page 1
clrf TRISC ; make IO PortC all output
bcf STATUS,RP0 ; back to Register Page 0
movlw 0x08
movwf Display
MainLoop:
movf Display,w ; Copy the display to the LEDs
movwf PORTC
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
call kesleltetes ; 0,197 masodperc
call kesleltetes ; megegyszer
bcf STATUS,C ; ensure the carry bit is clear
rrf Display,f
btfsc STATUS,C ; Did the bit rotate into the carry?
bsf Display,3 ; yes, put it into bit 3.
goto MainLoop
kesleltetes
OndelayLoop:
decfsz Delay1,f ; Waste time.
goto OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768
decfsz Delay2,f ; The outer loop takes additional 3 instructions per lap * 256
goto OndelayLoop ; (768+3) * 256 = 197376 instructions = 0.197 sec.
; call it a two-tenths of a second.
retlw 0
end
kesleltetes
OndelayLoop:
decfsz Delay1,f ; Waste time.
goto OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768
decfsz Delay2,f ; The outer loop takes additional 3 instructions per lap * 256
goto OndelayLoop ; (768+3) * 256 = 197376 instructions = 0.197 sec.
; call it a two-tenths of a second.
retlw 0
end
Sziasztok!
tudna valaki segíteni? van egy futófényes (rotate) programom aminek a gyorsaságán tudtam állítani nedudgi segítségének köszönhetően a call paranccsal... Hogy lehetne azt megoldani , hogy ne kelljen ennyiszer leírni a call parancsot ???? valamint van négy led a probapanelen és mindegyik ledet különböző ideig szeretném kivilágítani pl 1 led kapcsol 10 -15 másodpercig világít ezután kikapcsol bekapcsol a második led 20-25 másodpercig világít majd kikapcsol következik a harmadik led 30-35 másodpercig világít majd kikapcsol aztán a negyedik 40-45 másodperc aztán kikapcsol...
Nem tudom van e valami szabvány megoldás erre, én a következő képen csinálnám:
Elején deklarálsz 3 változót az időzítéshez.
Megírod az időzítő rész, majd ezt meghívod különböző paraméterekkel attól függően mennyi késleltetést szeretnél.
cblock
t1
t2
t3
endc
Delay
movlw 0x11
movwf t1
movlw 0x66
movwf t2
movlw 0x42
movwf t3
Delay_0
decfsz t1, f
goto $+2
decfsz t2, f
goto $+2
decfsz t3, f
goto Delay_0
return
A fenti kód 15 másodperces késleltetés 8MHz sebességen. Bizonyos késleltetési idő felett szükség van t4 re is.
t1, t2, t3, t4 értéke határozza meg a késleltetés idejét, és függ a PIC órajelétől.
Felhasználás a te esetedben pl.:
led 1 be
call Delay (15 mp)
led 1 ki
led 2 be ......
Szia! nehéz elmagyarázni, ezért összeütötten neked egy progit.
A főprogramban van egy 0,1sec és egy 1sec időnközönként ismétlődő rész, oda tedd be a kódodat. A portok (a b c ) nincsenek beállítva. #include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
list p=16f690
errorlevel 2
RADIX DEC ; 10-ES SZÁMRENDSZER AZ ALAP
cblock 0x20
W_TEMP,STATUS_TEMP
T2_01 ;T2 ÁLLÍTJA 0.1SEC SZÁMLÁLÓ
T2_1 ;T2 ÁLLÍTJA 1SEC SZÁMLÁLÓ
LED_HOLDREG;
FLAG ;ELZŐBITEK
;0. BIT 0,1 SEC JELZÉSE
;1.BIT 1 SEC JELZÉSE
ENDC
ORG0X00
CALL INIT
GOTO PRG
;////////////////////////////////////////
ORG 0X04 ;MEGSZAKÍTÁSOK JÖNNEK IDE
MOVWF W_TEMP
SWAPF STATUS,W
MOVWF STATUS_TEMP
BTFSS PIR1,TMR2IF ;IRQ-T TMR2 OKOZTA?
GOTO M00 ;NEM TOVÁBB
BCF PIR1,TMR2IF
DECFSZ T2_01
GOTO M00 ;HA MÉG NEM JÁRT LE
MOVLW 10 ;IDŐZÍTŐ VISSZAÁLLÍTÁSA
MOVWF T2_01
BSF FLAG,0 ;FŐPROGRAMBA JELZÉS
DECFSZ T2_1
GOTO M00
MOVLW 10
MOVWF T2_1
BSF FLAG,1 ; 1SEC LEJÁRT JELZÉS A FŐPROGRAMNAK
M00: SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
;/////////////////////////
INIT
BANKSEL OSCCON
MOVLW B'01100001' ;4MHZ BELSŐ OSC.
MOVWF OSCCON ;BEÁLLÍTÁSA
MOVLW 249
MOVWF PR2 ;TIMER2 250 UTÁN NULLÁZÓDIK
MOVLW B'01001101' ;T2 ON 10POST 4 PRE
BANKSEL T2CON
MOVWF T2CON
BSF INTCON,GIE
BSF INTCON,PEIE ;TMR2 MEGSZAK ENG.
BANKSEL PIE1
BSF PIE1,TMR2IE ;
BANKSEL 0
MOVLW 10
MOVWF T2_01 ;0,1 SEC BEÁLLÍTÁSA
MOVWF T2_1 ;1 SEC BEÁLLÍTÁSA
;PORTBEÁLLÍTÁSOK HIÁNYOZNAK
RETURN
PRG:
BTFSS FLAG,0 ;LEJÁRT 0.1 SEC ??
GOTO P00 ;NEM TOVÁBB
BCF FLAG,0
NOP ;IDEJÖN AMIT 0,1 SEC IDŐKÖZÖNKÉNT KELL CSINÁLNI
P00: BTFSS FLAG,1 ;LEJÁRT AZ 1 SEC ??
GOTO P01 ;NEM TOVÁBB
BCF FLAG,1 ;JELZŐ TÖRLÉSE
NOP ;IDE JÖNNEK AZ 1 MÁSODPERCESEK
P01: GOTO PRG
END
Ezzel nincs feleslegesen elpazarolva a PIC ideje a ciklusszámolgatással, mást is tud csinálni. A hozzászólás módosítva: Júl 22, 2013
Sziasztok! Segítséget szeretnék kérni PIC16F628A-20 program beégetésre. A program HEX-ban meg van de nincs programozóm. Egy PIC-ben cserélni kellene és 4 PIC-be beletenni.
Tudna nekem valaki segíteni? Budapesten belül szívesen elmegyek a kollégához. Igazán fontos volna!
Köszönöm előre is! Ha tudok én is szívesen segítek amire szüksége van.
Üdv!
Én a 0.2s késleltetés rutinja után betennék egy következő változót csökkentő utasítást. Ha a változó nem 0 akkor vissza a késleltetés elejére.
Amikor a késleltető rutint meghívom, ebbe a változóba eltárolnám hányszor kell a 0.2 s.
Így egy egyszerű szám módosítással tudsz állítani 50s ig 0.2s felbontással.
Ha a programodnak más dolga is akad akkor tényleg a timmerek felprogramozása marad.(mellékesen pontosabb, és szebb is.)
(#) |
Hilo hozzászólása |
Júl 22, 2013 |
|
/ |
|
|
Sziasztok, PIC16f886-os EUSART-al kapcsolatban lenne kérdésem.
Első nekifutásra egy tesztet szerettem volna csak szimulátorral. Adatlapja szerint mindent beállítottam amit kell, de mégsem látok kimeneti jelet a szimulátoron.
MPLAB SIM en a "Logic Analyser" ablakocska nem mutat semmi aktivitást a kimenő lábon.
Ha jól tudom alap állapotban logikai 1-en kéne állnia, nekem végig logikai nullát mutat.
Mit rontottam el/hagytam ki? Előre is köszönök minden választ!
LIST P=16f886
#include <p16f886.inc>
__CONFIG 2007, H'20D4'
__CONFIG 2008, H'3EFF'
CBLOCK 0x20 ;Szabad memória hely
T1 ;
T2 ;
T3 ;
ENDC
org 0
;***** PortB digitálsi bemenetté állítás (joystick) *****
;**********************************************************
banksel TRISB ;
movlw b'11111111' ;PortB bemenetre
movwf TRISB ;
banksel ANSELH ;
clrf ANSELH ;bemenet digitálissá állítása (AN8-13)
;**********************************************************
;**********************************************************
;***** Baud Rate beállítása *****
movf SPBRGH,w ;Init
banksel SPBRG ;
movlw d'12' ;d'12' -> 4800bps 4Mhz-en (hiba ~0,16%)
movwf SPBRG ;
;***** EUSART beállítása *****
banksel TXSTA ;CSRC/TX9/TXEN/SYNC/SENDB/BRGH/TRMT/TX9D
movlw b'00100000' ;
movwf TXSTA ;
banksel RCSTA ;SPEN/RX9/SREN/CREN/ADDEN/FERR/OERR/RX9D
movlw b'10000000' ;
movwf RCSTA ;
;**********************************************************
banksel TXREG
movlw h'F8' ;
movwf TXREG ;
IDE
banksel PORTB
movf PORTB,f ;PortB beolvasása
goto IDE
end; Teljes program lezáró
Logikai analizátor helyett: Debugger / Settings / Uart1 I/0: "Enable Uart1 IO" és az "Output to file" kipipálása. Újrafordítás, szimuláció indítása.
Köszönöm! Így megy tökéletesen.
Helosztok.
Ha használom egy 12f683 nál a megszakítás bemenetet, akkor trisiot gp2 re bemenetnek kell állítani? Vagy akkor már a láb nem is gpio?
Amikor be akartam égetni a processzorba a programot, akkor ezt a hibaüzenetet kaptam:
"PKWarn0003: Unexpected device ID: Please verify that a PIC16F884 is correctly installed in the application."
- PICkit 2-vel égetnék PIC16F884-et,
MPlab verzióm: v8.84
nem tudom, hogy mi okozhatja a hibát. Mellékletben küldök egy képet a bekötésről, lehet, hogy azzal van a gond.
Próbáld meg a PICKit2 saját szoftverével felismertetni. Ha nem ismeri fel automatikusan, akkor a "Device family" menüből válaszd a "Midrange, Standard"-ot és akkor fel kell ismernie.
Ha úgy sem, akkor kézzel add meg a tipusát. Nem tudom, van-e ebben a vezérlőben DeviceID...
Gyári Pickit2-ed van, vagy klón?
Sziasztok! Olyan kérdésem lenne, hogy egy asm-ben megírt projektbe be lehet-e szúrni c kódot? Akár egy include fájlként.
Ha lefordítasz valamit C-ről asm-re, ismered az eredmény ki/be címeit, adatait, az adatok és program szerkezetét, a működés minden részletét, illeszteni tudod a meglévő programodhoz, akkor igen.
Ezek nélkül egy olyan előadáshoz hasonlítana, ahol a fontos részeknél az előadó átvált kínaira.
C nyelvű programba beszúrni asm-et sokkal egyszerűbb. A fordító doksijában vannak részletek.
A programot ismerem, én írtam, csak kellene egy olyan bonyolult számolást végrehajtani, amit asm-ben nem tudok megcsinálni, c-ben viszont már van erre példaprogram. A BMP085 szenzor szamítása lenne az. 4 bájt hosszú változókkal dolgozik, ami nekem még kicsit nehéz.
Amit írtál, az egyértelmű. A C program fordításakor kapsz egy másik programot, azt kell értelmezned és átírni, a saját programodhoz illeszteni.
Szerintem egyszerűbb megtanulni a C-t.
A kollégák eggyel továbbgondolták már a választ
Asm-be közvetlenül c-t nem szúrhatsz be, csak egy asm-re lefordított c kódot, de az meg ugye a c környezet beállításait is használja. Szóval, ha nem akarsz c-t tanulni, akkor kénytelen leszel a 4 bájtos változókat te magad kezelni (viszont erre biztos vannak a neten példák).
Próbaképpen annyit megtehetsz, hogy a C program Main részébe, (tehát az inicializálás után) beteszel egy ugrást az assembly programra, és onnan már meg tudod hívni a C szubrutint. Biztos módszer nincs, de így van némi esély a probléma megoldására.
Így már értem, hogy miért nem lehet beszúrni. Körülnézek neten megoldás után. Köszi mindenkinek.
|
|