Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   787 / 1320
(#) icserny válasza lidi hozzászólására (») Aug 13, 2010 /
 
Idézet:
„Eléggé elszomorító hogy pl az ember vált egy nagyobb picre, és olyannal szembesül fejlesztés közben hogy ennek meg az ADC -je defektes.”
Az ADC-nél sokkal cifrább ügy, hogy telenyomták PWM csatornákkal, de véletlenül négynek összekötötték belül az órajelét.

Tanulság: nem érdemes túl friss mikrovezérlőkre alapozni, mert:
- Az adatlap hibás lehet (egy régebbiből másolták, s lehet, hogy pl. olyan regiszterről írnak, ami az új vezérlőben nincs is!)
- A szilícium chip is hibás,nem úgy működik, mint ahogy tervezték.
- A fordító "ismert hibáinak" jegyzéke is aggasztóan hosszú lista (lehet, hogy hibás kódot generál).
- Mire összejön a program, kiderül, hogy az új mikrovezérlőt nem támogatják a bevált fejlesztő eszközök (nem lehet szimulálni, programozni, debug-olni).
- Ha támogatják, akkor még mindig megeshet, hogy hibás az eszközleíró állomány, vagy a könyvtári modul.

S akkor még a felhasználó által elkövethető hibákról nem is szóltunk...
(#) lidi válasza icserny hozzászólására (») Aug 13, 2010 /
 
Amúgy ha csak az órajel van összekötve az nem olyan nagy baj, ha lehet a kitöltést külön állítani. Nekem most csak a sok RAM, és a 887 -hez hasonlóan portb -n is levő AD csatornák miatt esett erre a választásom. Úgy tűnik nekem, hogy a régebbi kontrollerekben nem volt ennyi hiba. Hibába, azokba még vót' anyag Fene tudja, biztos kapkodnak, meg az is benne van, hogy pénzügyi okokból eladják még a selejtet is, ahelyett hogy kijavítva a hibát, új sorozatot gyártanának.
(#) szilva válasza lidi hozzászólására (») Aug 13, 2010 /
 
Hát, valóban lehet, hogy a MC háza táján is érezteti a hatását a válság. Tegnap voltam a Chipcad-ben, mert venni kellett pár 18F2550-et PK2 klónokba. Teljesen ledöbbentem, mikor az eladó közölte, hogy nincs F-es csak LF-es, és az F-est ugyan már két hete megrendelték, de a gyártó novemberre (!) igazolta vissza a szállítást. Pedig a 2550 egy igencsak pörgő típus, és ezzel is ilyen akadozó az ellátás.

Igazából valamikor kora tavasszal is sejthető volt már, hogy számíthatunk ilyesmire, akkor a 16F946-ra kérdeztem rá, ami ugyan egy viszonylag ritkán használt PIC, de korábban volt, hogy rendeltem belőle. A korábbi szokásos 4-6 hetes szállítási határidő helyett már akkor is 3-4 hónapot mondtak, ezt még egy lassan forgó típusnál is elképesztőnek tartom.
(#) chaos89 hozzászólása Aug 13, 2010 /
 
Most kísérletezek először PIC-kekkel, azért először assemblyben akarok megírni egykét dolgot, hogy fölfogjam hogyan is megy. Kerestem a fórumban, de nem találtam olyan hozzászólást ami nekem egyértelműen segített volna, vagy megoldotta volna a problémán.

PIC 12f629

GPIO 5-re akarok egy megszakítást küldeni, ami felépreszti sleepből a picet, hogy fusson tovább a program. Nem akarok szubrutint. Felhúzó ellenállás van rajta és egy földelő kapcsoló.

  1. ...
  2.  __CONFIG (_CP_OFF&_WDT_OFF & _INTRC_OSC_NOCLKOUT & _PWRTE_OFF & _MCLRE_OFF )
  3. ....
  4.  
  5.  
  6. BCF STATUS,RP0        ; BANK0
  7.         CLRF GPIO                 ;PORT TÖRLÉSE
  8.        
  9.  
  10.         MOVLW B'00000111'           ;
  11.         MOVWF CMCON                  ; digitális lábak
  12.        
  13.         BCF OPTION_REG,INTEDG      ;földeléskor, lefutó élnél legyen megszakítás
  14.  
  15.         BSF STATUS,RP0                     ;BANK1
  16.         CLRF TRISIO                          
  17.         BSF TRISIO,5                          ;GP5 bemenet
  18.        
  19.         CLRF IOC
  20.         BSF IOC,IOC5                       ;GP5re engedélyezem a megszakítást
  21.        
  22.         BCF INTCON,GPIF              
  23.         BCF INTCON,GIE          ;GLOBAL INTERRUPT kikapcsolása, mert csak ébreszteni akarok
  24.         BSF INTCON,GPIE         ; PIN INTERruptok engedélyezése
  25.         MOVF GPIO,0                    ;beolvasom a portot
  26.  
  27.         SLEEP


Mivel épp most nem tudom beégetni a programot, csak oshon szimulátorral kisérletezek, ami nem ébred fel. A kérdés hogy a kód a rossz, vagy a szimulátor.

Előre is köszi
(#) potyo válasza chaos89 hozzászólására (») Aug 13, 2010 /
 
A GPIO beolvasását a GPIF törlése előtt csináld, tehát tedd át a BCF INTCON, GPIF sort a MOVF GPIO, 0 alá. Valamint a 0 helyett W-t írj ezekhez az utasításokhoz, mert úgy jobban követhető a kód, hogy mit csinál.

Egyébként én jónak nézem, a kódodat. Mi következik a SLEEP után? Csatold az egész programot. Illetve nézd meg az MPSIM szimulátorban is, lehetséges, hogy az Oshon szimulátora hibás.
(#) kissi válasza potyo hozzászólására (») Aug 13, 2010 /
 
Nem tudom, mit akar a GPIO-val ( illetve gondolom a változás érzékeléséhez kell! ), de nem váltotta vissza a BANK-ot, így azt nem éri el!

Steve
(#) chaos89 hozzászólása Aug 14, 2010 /
 
A bank0 jogos. GPIO a változás értékeléséhez akartam használni, biztos ami biztos alapon.

Itt az egész program, csatolva, nem akartam a fél fórumot elfoglalni vele.

Ez egy elektronikus dobókocka, olyan mint, ami a kapcsolásoknál van. Meg akarom ismerni a pic-eket, ezért írom magam a programját. Ha megy az interrupt, majd belecsempészek timer-t meg wdt-t. Ha javaslatototok van akár a programozással kapcsolatban, akár egyéb dolgokkal várom szívesen.

Kipróbáltam MPSIM el is, ami meg átugorja a sleepet, holott GPIF 0. Akármit csinálok. Biztos velem van a baj, mert nem nagyon értek ehhez még.


gpio 0,1,2,4 kimenetek, a felvillanó szám függvényében.
gpio 5 meg egy nyomógomb.

Most így a specifikációt olvasva aszsem értelmesebb lenne a gombot a gp2-re raknom.


Jah meg egy kis kérdés, szoftveresen nem lehet kikapcsolni a wdt-t, ugye? Van amikor rossz, hogy megy, de van amikor meg resetelni akarok. Van valami módja akkor annak, hogy reseteljek szofveresen?(gondoltam az mclr-t rákötni egy kimenetre,de nincs elég lábam)

Köszi a segítséget

main.asm
    
(#) El_Pinyo válasza chaos89 hozzászólására (») Aug 14, 2010 /
 
A WDT optimálisan futó program esetén sosem okoz resetet. Arra használják, ha bármilyen oknál fogva valahogyan "beragad" a program futása és onnan csak a reset tudja kihozni. Fejlesztés alatt általában nem szoktuk engedélyezni, mert zavaró lehet és a hibák felderítését nehezíti meg. A végleges firmwareben szokás engedélyezni, miután a szoftver már jónak tűnik.
Szoftveresen is lehet resetelni, programból elugrasz a reset vektor címére (előtte IT tiltása). Ekkor viszont minden felhasznált regisztert alaphelyzetbe kell állítani, hogy valóban reset emulálásról legyen szó.
(#) kissi válasza chaos89 hozzászólására (») Aug 14, 2010 /
 
Mikor okoz problémát? Szimulációnál vagy a végleges működésnél? Úgy gondolom, hogy a szimuláció során --> Configure --> Configure Bits -eknél tiltsd le a WatchDog-ot ( ez a végleges programozásnál is letiltja! ), akkor nem fog ilyen üzenettel leállni!

Steve
(#) kissi válasza chaos89 hozzászólására (») Aug 14, 2010 /
 
Nem nézegettem sokáig, de szerintem működik: a SLEEP utáni első NOP-nál megáll és a GPIO5 változása felébreszti!
Nézd meg a konfigurációs bitjeimet is!

Steve
(#) Hp41C válasza chaos89 hozzászólására (») Aug 14, 2010 /
 
Sziasztok!

Az OPTION_REG a Bank1-ben van, a 32. és a 33. sort fel kellene cserélni - az írás így a TMR0-ba megy...
(#) chaos89 válasza Hp41C hozzászólására (») Aug 14, 2010 /
 
Amikor még írtam sokszor ellenőriztem a bankokat, de úgynézni időközben annyiszor nyúltam bele, hogy elrontottam.

Sikerült beszereznem egy működő égetőt is(enyém furcsa hibákat generál olykor), és beégettem a programot a picbe, a hibák javítása után már úgynézki működik is. Az időzítésekkel szórakozok még egy kicsit.

Úgylátszik az oshon szimulátor nem jó, a mpsimet meg még nem tudom jól használni.


Még egy kérdésem lenne(egyenlőre)
Természetesen én is mikor kézhez kaptam először a picemet, hogy kipróbáljam jó-e, teleírtam, majd töröltem, és hát elveszett a belső oscillátor kallibrációs bitjei. A kérdés, hogy ez mit jelent. A 4mhz nem egészen 4 mhz, vagy maga az órajel sem egyenletes.

Bizonyára kérdezek olyanokat is, amit leírtak már a fórumba. De csak most kezdtem el foglalkozni a témával, és még folyamatban van a fórum és egyéb szakirodalom párhuzamos olvasása.

Köszi a segítséget.
(#) Hp41C válasza chaos89 hozzászólására (») Aug 14, 2010 /
 
Szia!

A frekvencia nem pontos, de egyenletes az órajel. A PicKit2 -ben van lehetőség az OSCCAL újragenerálására. Ha most Nálad van egy használható programozó, érdemes lenne egy 18F2550 -et felprogramozni a PicKit2 firmware -jével... Aztán építeni egy klónt. (SMD verzió esetén fordítva).
(#) brato hozzászólása Aug 14, 2010 /
 
Üdv!

A PICeknél az egyfajta tokozású típusoknál mindég ugyan az a láb a tápfesz?
(#) Hp41C válasza brato hozzászólására (») Aug 14, 2010 /
 
Szia!

Általában - családon belül - iden, de mindig érdemes megnézni az adatlapot...
Az újabbaknál van eltésés: pl 24Fxxx I/SP (28 lábú keskeny dip tok) tápbekötése eltér a többitől... Egyes típusoknál (újabb fejlesztés - 1.8 .. 3.3 V belső táp) Vcap lábra kondenzátort kell kötni, de a Vcap funkciót több láb közül lehet kiválasztani a konfigurációs regiszterek egyikében.
(#) Lozsa hozzászólása Aug 14, 2010 /
 
Sziasztok!

Napok óta szívok egy 4x16-os LCD panellel... Nem bírok semmit kicsikarni belőle. Displaytech 164A KS0070b meghajtóval.

Már mindenképp próbáltam az inicializálást megírni, de semmi eredmény.
A lábakat ellenőriztem, tehát az RW, RS, E lábak jó helyre vannak kötve, ill a DB0-DB7 is. Mindegyik szintje tökéletesen állítódik programból.
8 bitsesen kezelem.
Már a ks0070b adatlap alapján írtam meg az inicializálást aminek a végén kéne egy villogó kurzort kapnom, de semmi.
Mi lehet a gond?

  1. LIST P=18F4685, F=INHX32                                ;directive to define processor
  2.     #include <P18F4685.INC>                             ;processor specific variable definitions
  3.         radix   dec
  4.        
  5. ;Configuration bits    
  6.     CONFIG  OSC = HS                                            ;40Mhz kristály oszcillátor
  7.         CONFIG  FCMEN = ON                              ;Fail-Safe Clock Monitor enabled
  8.         CONFIG  IESO = OFF                              ;Oscillator Switchover mode disabled
  9.         CONFIG  PWRT = ON                               ;PWRT enabled
  10.         CONFIG  BOREN = OFF                             ;Brown-out Reset disabled in hardware and software
  11.         CONFIG  WDT = OFF                               ;WDT disabled (control is placed on the SWDTEN bit)
  12.         CONFIG  STVREN = OFF                            ;Stack full/underflow will not cause Reset
  13.         CONFIG  PBADEN = OFF                                    ;PORTB<4> and PORTB<1:0> Configured as Digital I/O Pins on Reset
  14.         CONFIG  MCLRE = ON                              ;MCLR pin enabled, RE3 input pin disabled
  15.         CONFIG  DEBUG = ON                              ;Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit Debug
  16.         CONFIG  LVP = OFF                               ;Low voltage programming disabled
  17.        
  18.  
  19. #define RW              LATC, 1
  20. #define EN              LATC, 6
  21. #define RS              LATC, 7
  22. #define LCDPORT LATD
  23. #define LED1    LATA, 0
  24. #define LED2    LATA, 1
  25. #define LED3    LATA, 2
  26. #define LED4    LATA, 3
  27.  
  28.         UDATA_ACS
  29. Temp            RES     1
  30. Temp2           RES     1
  31. Counter         RES     1
  32. Char1           RES     1
  33. Char2           RES     1
  34. Timer1          RES     1
  35. Timer2          RES     1
  36. Timer3          RES     1
  37. Timer4          RES     1
  38.         GLOBAL  Temp, Temp2, Counter
  39.                
  40. ;******************************************************************************
  41. ;Reset vector
  42. RESET_VECTOR    CODE    0x0000
  43.                 nop
  44.                 bra    Init                                     ;Ugrás az inicializálásra
  45. ;******************************************************************************
  46. ;High priority interrupt vector
  47. HI_INT_VECTOR   CODE    0x0008
  48.                 bra     HighInt                                
  49. ;******************************************************************************
  50. ;Low priority interrupt vector and routine
  51. LOW_INT_VECTOR  CODE    0x0018
  52.                 retfie      
  53. ;******************************************************************************
  54. ;High priority interrupt routine
  55.                         CODE
  56. HighInt:        retfie  FAST
  57. ;******************************************************************************
  58. ;Inicializálás
  59. Init:          
  60.                         movlw   B'11110000'                             ; Külső oszcillátor 40Mhz
  61.                         movwf   OSCCON
  62.                         clrf    PORTE
  63.                
  64.         ;       PORTA (RA0-RA3) LEDEK  
  65.                         clrf    PORTA
  66.                         movlw   B'00001111'                             ;xxxx1111=minden AN láb digitális
  67.                         movwf   ADCON1
  68.                         movlw   B'00000111'                             ;komparátorok kikapcsolása
  69.                         movwf   CMCON                                  
  70.                         clrf    TRISA                                   ;PORTA lábak kimenetek (PORTA 0-3=ledek)
  71.        
  72.         ;       PORTB (RB4-RB7) Gombok
  73.                         clrf    PORTB
  74.                         movlw   B'00001111'                             ;PORTB 4-7 Gombok bemenetek
  75.                         movwf   TRISB
  76.  
  77.         ;       PORTC (RC1, RC6, RC7) LCD vezérlőlábak
  78.                         clrf    PORTC
  79.                         movlw   B'00111101'                             ;PORTC 1,6,7 LCD vezérlő kimenetek
  80.                         movwf   TRISC
  81.                         clrf    LATC
  82.                        
  83.         ;       PORTD (RD0-RD7) LCD DB0-DB7
  84.                         clrf    TRISD                                   ;PORTD lábak kimenetek (LCD adatlábak)
  85.                         clrf    PORTD
  86.                        
  87.         ;LCD Inicializálás
  88. LcdInit:        call    Delay50ms
  89.                         bcf             RS
  90.                         bcf             RW
  91.                         nop
  92.                         bsf             EN
  93.                         movlw   B'00111000'                             ;2 line mode, 5x7 dot characters               
  94.                         movwf   LCDPORT
  95.                         call    Delay
  96.                         bcf             EN
  97.                         call    Delay50ms
  98.                                                        
  99.                         bsf             EN
  100.                         movlw   B'00001111'                             ;Display on, cursor on, blink on
  101.                         movwf   LCDPORT
  102.                         call    Delay
  103.                         bcf             EN
  104.                         call    Delay50ms
  105.                        
  106.                         bsf             EN
  107.                         movlw   B'00000001'                              ;Clear display
  108.                         movwf   LCDPORT
  109.                         call    Delay
  110.                         bcf             EN
  111.                         call    Delay50ms
  112.  
  113.                         bsf             EN
  114.                         movlw   B'00000110'                             ;increment mode, shift off
  115.                         movwf   LCDPORT
  116.                         call    Delay  
  117.                         bcf             EN
  118.                         call    Delay50ms
  119.                                
  120.                         bsf             LED1
  121.                         bra             EndLoop
  122.  
  123. ;*********************************************************
  124. Delay:          movlw   D'10'
  125.                         movwf   Timer1
  126. Dly2:           decfsz  Timer1,1
  127.                         bra             Dly2
  128.                         return
  129.  
  130. ;*********************************************************
  131. Delay50ms:      movlw   D'3'
  132.                         movwf   Timer3
  133.                         movlw   D'138'
  134.                         movwf   Timer2
  135.                         movlw   D'85'
  136.                         movwf   Timer1
  137. Dly50ms_0:      decfsz  Timer1,1
  138.                         bra             Dly50ms_0
  139.                         decfsz  Timer2,1
  140.                         bra             Dly50ms_0
  141.                         decfsz  Timer3,1
  142.                         bra             Dly50ms_0
  143.                         return
  144.  
  145. ;*********************************************************
  146. EndLoop:        bra             EndLoop
  147.        
  148.        
  149.                 END
(#) pixels válasza Lozsa hozzászólására (») Aug 15, 2010 /
 
Üdv! Szerintem csak az enable láb van rosszul kezelve, ugyanis normál állapotban ez logikai alacsony szinten van, és íráskor/olvasáskor kell logikai magas szintre rakni.
Egyszerűen cseréld ki a bsf EN utasítást bcf EN utasíásra, és viszont. Akkor jónak kell lenni

Az írás menete úgy van, hogy kimegy az adat, az RS-t be kell állítani, az RW = 0, majd ezek után kis időt kell várni, (elég pár mikroszekundum) és utána az EN = 1, megint várakozni kicsit, utána EN = 0, aztán annyit kell várni, míg az utasítást elvégzi a modul (adatlapban le szokták írni, melyik parancs menny időt igényel)
(#) Lozsa válasza pixels hozzászólására (») Aug 15, 2010 /
 
Az időzítést az adatlap alapján csináltam.
Ellenben ha lenne valakinek egy működő inicializáló rutin akkor azt kipróbálnám.

Már arra is gondoltam, hogy szar a display.
(#) Hp41C válasza Lozsa hozzászólására (») Aug 15, 2010 /
 
Szia!

- Előbb tedd ki a PORTD-re a küldendő kódot, aztán várj egy kicsit (200-400ns a kábel és a bemenetek kapacitásainak feltöltődésére), aztán állítsd magasra az EN-t, aztán várj 1-2 uS-ost, állítsd alacsonyra az EN-t. Várd ki a végrehajtási időt. Az EN magas szintje alatt nem változhat sem az adat sem az R/S.
- Az inicializáló B'00111000' -t háromszor küld el.
- A kontraszt állító potenciómérrel talán elő lehet hozni valamit...
(#) Lozsa válasza Hp41C hozzászólására (») Aug 15, 2010 /
 
Nem jött be ez sem

Viszont turkáltam kicsit és találtam egy régi displaytech 204A 4x20-as displayt amivel viszont kiválóan működik!

Ebből az következne, hogy szar a 4x16-os kijelzőm. Amit mondjuk nehezen hiszek hiszen már volt már többször használva.

Nem lehet, hogy másképp kell vezérelni a két panelt???
Más ugyanis bennük a driver ic az egyikben ks0070b a másikban pedig st7066u (ezzel jó).

Sajna mindenképp a 4x16-osat kell használnom a hely miatt, csak nem tudom merjek-e újat venni?

Hogyan tudnám a legegyszerűbben kipróbálni?
(#) Hp41C válasza Lozsa hozzászólására (») Aug 15, 2010 /
 
Szia!

- Itt az alkalmazott vezérlő adatlapja, van benne 8051 assembly program az inicializálásra...
- A megadott idők a 270kHz belső órajelhez valók. A frekvenciát egy (91kohm -+ 2%) ellenállás állítja be a OSC1 és OSC2 lábaknál. Volt már szerencsém olyan modulhoz, amelyiken az ellenállás törött volt. Az is lehetséges, hogy az órajel eltér egy kicsit, növeld meg az időket.
- Vizsgáld meg az összekötéseket - egy modulnál a D6 kábelen szakadásom volt, nem inicializált a modul...
(#) Lozsa válasza Hp41C hozzászólására (») Aug 15, 2010 /
 
köszi megnézem
(#) Lozsa válasza Hp41C hozzászólására (») Aug 15, 2010 /
 
Nem találtam hibát a nyákon, ellenben gyanús folt van az IC-n.

Talán meg pirult egy kissé a drága Ha így van akkor nem tudom mitöl sülhetett meg...
Tápfesz 5V 7805-ről, a Háttérvilágítás pedig 12-15V-ról megy (autó akku) 50ohm áramkorláttal.
(#) nl hozzászólása Aug 15, 2010 /
 
Sziasztok!

mikroC-ben hogyan lehet külön hivatkozni a lábakra? Máshol láttam már olyat, hogy pl.: PORTB.4 , de itt ez nem működik.
(#) icserny hozzászólása Aug 15, 2010 /
 
A C18 támogatói programkönyvtár forrásában találtam egy egyszerű fixpontos osztási algoritmust az fxd3232u.c állományban (a kiterjesztés ellenére assembly kódról van szó!). Enne lényege az, hogy az osztandót bitenként kiléptetjük a maradékot tároló változóba, s amikor a maradék nagyobb, mint az osztó, akkor levonjuk, s ilyenkor a hányados soron következő bitjét is 1-be állítjuk.

A Daniel R. Madill, Quanser Consulting Inc. nevével fémjelzett, jól áttekinthető algoritmusnak köszönhetően az eljárás könnyen skálázható, csupán a rotáló, összehasonlító és kivonó műveleteket kell a megfelelő bitszámra kiterjeszteni vagy zsugorítani. Természetesen az algoritmus előjeles számokra is adaptálható a
PICCOLO projektben négy pontban leírt módszerrel.

A mellékelt mintaprogramban az eredetileg 32/32 bites osztást 32/8 bites (előjel nélküli) számokra egyszerűsítve mutatom be. Ha mind a 8 bitet ki akarjuk használni, akkor óvatosnak kell lenni: figyelni kell a hányados Carry-be kiforgatott bitjére is (lásd: bc nagyobb utasítás). Ha 8-nál kevesebb bites az osztó, akkor ez elhagyható.

div32_8_a.asm
    
(#) kisszee válasza nl hozzászólására (») Aug 15, 2010 /
 
Hello,

ha egy kicsit keresgélsz - akár ebben a topicban is, például úgy, hogy beírod keresőbe: "mikroC" -, akkor rátalálhatsz. Úgy tűnik, hogy a megoldás az, ha a regiszter neve után teszel egy pontot, az után pedig a lábakra "F0...F7" azonosítóval hivatkozhatsz.

De még nézzél szét itt is, biztos, ami biztos: Bővebben: Link
(#) vilmosd válasza nl hozzászólására (») Aug 15, 2010 /
 
Hali
Probald meg igy : PORTB.f4 .
Udv Vili
(#) Hp41C válasza icserny hozzászólására (») Aug 15, 2010 /
 
Szia!

Ezen az elven működő rutinok itt is fenn vannak, már többször ajánlottam sokatoknak...
(#) kiskacsa2009 hozzászólása Aug 15, 2010 /
 
Sziasztok!
Rászántam magam egy égető építésére, de megakadtam az induktivitás kiválasztásánál...
A kiszemelt áldozat: Bővebben: Link.
Namost L1-nél van egy kis választék, és ezek közül melyiket érdemes/kell venni?
Valamint az L2 melletti felirat (100mA max), az a tekercsre vonatkozik, vagy csak tájékoztató jellegű?
Ha elhagyom a fenti részt, ahol a 12 V "születik" akkor elég az L2 helyége bekötni a 12 V-ot?

Üdv.: Litldákk.
(#) icserny válasza Hp41C hozzászólására (») Aug 15, 2010 /
 
Jó, de azok PIC16-hoz készültek. Ez a feltételvizsgálat enyhén szólva zavaros:
  1. skpnc         ; Check for overflow
  2.        goto subd
  3.        movfw divisH  ; Compare partial remainder and divisor
  4.        subwf remdrH,w
  5.        skpz
  6.        goto testgt   ; Not equal so test if remdrH is greater
  7.        movfw divisL  ; High bytes are equal, compare low bytes
  8.        subwf remdrL,w
  9. testgt skpc          ; Carry set if remdr >= divis
  10.        goto remrlt


PIC18-nál ez ennyi:
  1. bc    subd
  2.     movf  divisH,W
  3.     subwf remdrH,W
  4.     movf  divisL,W
  5.     subwfb remdrL,W
  6.     bnc   remrlt

Ezért örültem meg, hogyPIC18-ra optimalizált és jól áttekinthető kódot találtam.
Következő: »»   787 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem