Fórum témák

» Több friss téma
Fórum » PIC programozás assemblyben
 
Témaindító: sonajkniz, idő: Máj 30, 2015
Témakörök:
Lapozás: OK   6 / 32
(#) foxi63 válasza sonajkniz hozzászólására (») Okt 10, 2015 /
 
Hát nem is gondoltam én más nyelvre...
(#) Hp41C válasza Hp41C hozzászólására (») Okt 11, 2015 /
 
Úgy látom, teljesen hiába írom le már sokadszor...
Egy pillantást kell vetni a forrásra.
(#) sonajkniz válasza Hp41C hozzászólására (») Okt 11, 2015 /
 
Ezt most nem értettem!
Ez most kinek szólt és mire vonatkozott?
(#) ktamas66 válasza sonajkniz hozzászólására (») Okt 11, 2015 /
 
Szerintem a IT rutinon belüli GIE bit piszkálása és a stack összefüggéseire. Mikor elugrik a pic az IT rutinra letiltja az azonos szintű megszakításokat, a RETFIE pedig újra engedélyezi, ezzel neked nem kellene törődni.
(#) sonajkniz válasza ktamas66 hozzászólására (») Okt 11, 2015 /
 
Értem, és köszönöm.
Amúgy ezt a cikket több nappal azelőtt zártam le, minthogy erre Hp41C felhívta volna a figyelmemet.
(#) Hp41C válasza sonajkniz hozzászólására (») Okt 11, 2015 /
 
Írtam én erről már régebben is:
PIC16F kontroller: Mit tegyek, ha betelt a 2K? cikkben.
A hozzászólás módosítva: Okt 11, 2015
(#) sonajkniz hozzászólása Okt 14, 2015 / 1
 
Sziasztok!
Legutóbi cikkem programjával kapcsolatban jött néhány észrevétel.
Úgy gondoltam, feltöltöm ide a programot, hogy a fórumon többen hozzászolhassanak.
  1. ;*-----------------------------------------------------------------------------*
  2. ;*                   Fordulatszámmér? 4 digites kijelz?vel                     *
  3. ;*                          PIC18F14K22-vel                                    *
  4. ;*  Létrehozva:2015.09.18.                                                     *
  5. ;*-----------------------------------------------------------------------------*
  6.  
  7.         LIST    P=PIC18F14K22                           ; lista megadása
  8.         INCLUDE <P18F14K22.INC>                         ; includde fájlok megadása
  9.         RADIX   hex                                                     ; alapértelmezet számrendszer megadása
  10.  
  11.         CONFIG  FOSC = IRC              ; bels? oszcillátor
  12.         CONFIG  WDTEN = OFF             ; watchdog bekapcsolása
  13.         CONFIG  LVP = OFF                       ; alacsony feszültség? programozás kikapcsolva
  14.     CONFIG  MCLRE = OFF         ; RA3 bemenetkénti használatra állítása
  15.  
  16.     CBLOCK  0x20
  17.     SZJ         :   5              ;Számjegyek
  18.     LSZ         :   2              ;Lebontandó szám
  19.     KC                     ;Kijelz? kikapcsolása
  20.     CIKLUS
  21.     OSZTANDO    :   4
  22.     OSZTO       :   4
  23.     MARADEK     :   4
  24.     MEROIDO
  25.     MB                             ;Memoriabit
  26.     ENDC
  27.  
  28.  
  29.         org             0x0000                                          ; program memória kezd? címe
  30.         nop                                                                     ; ICD miatt
  31.     GOTO    START
  32.     org     0x0008
  33.     GOTO    MEGSZAKITAS
  34.         org             0x0028                                          ; kezd? cím
  35.     nop
  36. START
  37.     CALL    INICIALIZALAS
  38. ;--------------------------Kijelzés 1000-es szegmens----------------------------
  39. MAIN
  40.     MOVFF   KC,LATB
  41.     MOVF    SZJ+3, W
  42.         MOVFF   PLUSW0, LATC
  43.     BCF     LATB,6
  44.         CLRF    TMR2                                            ; timer törlése
  45.         BCF             PIR1,TMR2IF                             ; túlcsordulás jelz? fleg törlése
  46.         BTFSS   PIR1,TMR2IF                             ; flegbit figyelése, ugrik ha "1"
  47.         GOTO    $-2
  48. ;--------------------------Kijelzés 100-As szegmens-----------------------------
  49.     MOVFF   KC,LATB
  50.     MOVF    SZJ+2, W
  51.         MOVFF   PLUSW0, LATC
  52.     BCF     LATB,4
  53.         CLRF    TMR2                                            ; timer törlése
  54.         BCF             PIR1,TMR2IF                             ; túlcsordulás jelz? fleg törlése
  55.         BTFSS   PIR1,TMR2IF                             ; flegbit figyelése, ugrik ha "1"
  56.         GOTO    $-2                                                     ; ugrás a feltételhez
  57. ;--------------------------Kijelzés 10-es szegmens------------------------------
  58.     MOVFF   KC,LATB
  59.     MOVF    SZJ+1, W
  60.         MOVFF   PLUSW0, LATC
  61.     BCF     LATB,5
  62.         CLRF    TMR2                                            ; timer törlése
  63.         BCF             PIR1,TMR2IF                             ; túlcsordulás jelz? fleg törlése
  64.     BTFSC   MB,7
  65.     CALL    OSZTAS_32_BIT
  66.         BTFSS   PIR1,TMR2IF                             ; flegbit figyelése, ugrik ha "1"
  67.         GOTO    $-2                                                     ; ugrás a feltételhez
  68. ;--------------------------Kijelzés 1-es szegmens-------------------------------
  69.     MOVFF   KC,LATB
  70.     MOVF    SZJ, W
  71.         MOVFF   PLUSW0, LATC
  72.     BCF     LATB,7
  73.         CLRF    TMR2                                            ; timer törlése
  74.         BCF             PIR1,TMR2IF                             ; túlcsordulás jelz? fleg törlése
  75.     CALL    SZAMJEGYBONTAS
  76.         BTFSS   PIR1,TMR2IF                             ; flegbit figyelése, ugrik ha "1"
  77.         GOTO    $-2                                                     ; ugrás a feltételhez
  78.     GOTO    MAIN
  79. ;------------------------------INICIALIZALAS------------------------------------
  80. INICIALIZALAS
  81.         CLRF    LATA                                            ; kimeneti portok törlése
  82.         CLRF    LATB                                            ;
  83.         CLRF    LATC                                            ;
  84.         MOVLW   B'00000000'                                     ; analóg / digitális bemenetek
  85.         MOVWF   ANSEL                                           ;
  86.         MOVLW   B'00011000'                                     ; A port
  87.         MOVWF   TRISA
  88.         MOVLW   B'00000000'                                     ; B port kimenet
  89.         MOVWF   TRISB
  90.         MOVLW   B'00000000'                                     ; C port kimenet
  91.         MOVWF   TRISC
  92.         MOVLW   B'01010010'                                     ; oszcillátor frekvenciája 4Mhz
  93.         MOVWF   OSCCON                                         
  94.     MOVLW   B'00111100'                 ;Multiplex id?zítése 2ms
  95.     MOVWF   T2CON
  96.     ;----------------------Megszakítás beállítása
  97.         MOVLW   B'00000001'                                     ; timer 1 beállítása, el?osztó <5:4>
  98.         MOVWF   T1CON
  99.         MOVLW   B'1001000'                                      ; megszakítás bekapcsolása
  100.         MOVWF   INTCON                                          ;
  101.     BSF     PIE1,TMR1IE                                 ; TMR1IE 1-be állítása   (PIE1 regiszter
  102.         BSF     IPR1,TMR1IP                             ; TMR1IP 1-be állítása  (IPR1 regiszter
  103.     BSF     INTCON2,0
  104.     MOVLW   B'00001000'
  105.     MOVWF   IOCA
  106.     BSF     LATA,2
  107.     MOVLW   D'192'     ;(0)     kijelzö bitjeinek megadása
  108.     MOVWF   0x1
  109.     MOVLW   D'249'
  110.     MOVWF   0x2
  111.     MOVLW   D'164'
  112.     MOVWF   0x3
  113.     MOVLW   D'176'
  114.     MOVWF   0x4
  115.     MOVLW   D'153'
  116.     MOVWF   0x5
  117.     MOVLW   D'146'
  118.     MOVWF   0x6
  119.     MOVLW   D'130'
  120.     MOVWF   0x7
  121.     MOVLW   D'248'
  122.     MOVWF   0x8
  123.     MOVLW   D'128'
  124.     MOVWF   0x9
  125.     MOVLW   D'144'     ;(9)
  126.     MOVWF   0xA
  127.     MOVLW   D'255'
  128.     MOVWF   KC
  129. ;-------------------------------------------------------------------------------        
  130. MEGSZAKITAS
  131.     BTFSS   PIR1,TMR1IF             ;Kiváltó ok ellen?rzése
  132.     GOTO    BEJOVO
  133.         BCF             PIR1,TMR1IF                             ; kiváltó ok törlése
  134.     INCF    MEROIDO
  135.     BTFSS   MEROIDO,4
  136.     GOTO    KILEPES
  137.     CLRF    MEROIDO
  138.     CLRF    OSZTANDO
  139.     CLRF    OSZTANDO+1
  140.     GOTO    KILEPES
  141. BEJOVO
  142.     MOVFF   PORTA,W
  143.     BCF     INTCON,0                ;RABIF bit törlése
  144.     BTFSC   PORTA,3
  145.     GOTO    KILEPES
  146.     BTG     MB,1
  147.     BTFSC   MB,1
  148.     GOTO    NINCS_ATTOLTES
  149.     BTFSC   MB,7
  150.     GOTO    NINCS_ATTOLTES
  151.     MOVFF   TMR1H,OSZTO+1
  152.     MOVFF   TMR1L,OSZTO
  153.     MOVFF   MEROIDO,OSZTO+2
  154.     CLRF    TMR1L
  155.     CLRF    TMR1H
  156.     CLRF    MEROIDO
  157.     BSF     MB,7
  158.     GOTO    KILEPES
  159. NINCS_ATTOLTES
  160.     CLRF    TMR1L
  161.     CLRF    TMR1H
  162.     CLRF    MEROIDO
  163.     GOTO    KILEPES  
  164. KILEPES
  165.     RETFIE
  166. ;------------------------------Osztás 32 biten----------------------------------
  167. OSZTAS_32_BIT
  168.  
  169.         MOVLW   D'32'                   ;32 lépésben végezzük el az osztást
  170.         MOVWF   CIKLUS
  171.         CLRF    MARADEK                 ;a maradék kezdetben nulla legyen
  172.         CLRF    MARADEK+1
  173.         CLRF    MARADEK+2
  174.     CLRF        MARADEK+3
  175.     CLRF    OSZTO+3
  176.     MOVLW   H'0'
  177.     MOVWF   OSZTANDO
  178.     MOVLW   H'87'
  179.     MOVWF   OSZTANDO+1
  180.     MOVLW   H'93'
  181.     MOVWF   OSZTANDO+2
  182.     MOVLW   H'03'
  183.     MOVWF   OSZTANDO+3
  184.         BCF     STATUS,C                ; a Carry bitet töröljük
  185. VIZSGALAT
  186.         RLCF    OSZTANDO                ;ezen a ponto C mindig nulla!
  187.         RLCF    OSZTANDO+1              ; az osztandóból egy bitet
  188.         RLCF    OSZTANDO+2              ; átléptetünk a maradékba  
  189.         RLCF    OSZTANDO+3
  190.         RLCF    MARADEK                  
  191.         RLCF    MARADEK+1
  192.         RLCF    MARADEK+2
  193.         RLCF    MARADEK+3
  194.         MOVF    OSZTO,W         ;az osztó és a maradék
  195.         SUBWF   MARADEK,W                       ;összahasonlítása
  196.         MOVF    OSZTO+1,W
  197.         SUBWFB  MARADEK+1,W
  198.         MOVF    OSZTO+2,W
  199.         SUBWFB  MARADEK+2,W
  200.         MOVF    OSZTO+3,W
  201.         SUBWFB  MARADEK+3,W
  202.         BNC     NINCS_KIVONAS           ;átlépjük, ha az osztó a nagyobb
  203.         MOVF    OSZTO,W         ;az osztóval csökkentjük a maradékot
  204.         SUBWF   MARADEK
  205.         MOVF    OSZTO+1,W
  206.         SUBWFB  MARADEK+1
  207.         MOVF    OSZTO+2,W
  208.         SUBWFB  MARADEK+2
  209.         MOVF    OSZTO+3,W
  210.         SUBWFB  MARADEK+3
  211.         INCF    OSZTANDO                ;a hányados következ? bitje 1 lesz!
  212. NINCS_KIVONAS
  213.         DECFSZ  CIKLUS                  ;ciklus számlálása
  214.         BRA     VIZSGALAT
  215.     BCF     MB,7
  216.     RETURN
  217. ;-----------------Ötjegy? szám lebontása 5 különálló karakterre-----------------
  218. SZAMJEGYBONTAS
  219.     CLRF    SZJ
  220.     CLRF    SZJ+1
  221.     CLRF    SZJ+2
  222.     CLRF    SZJ+3
  223.     CLRF    SZJ+4
  224.     MOVFF   OSZTANDO,LSZ
  225.     MOVFF   OSZTANDO+1,LSZ+1    
  226. TIZEZRESEK
  227.     INCF    SZJ+4
  228.     MOVLW   H'10'
  229.     SUBWF   LSZ,F
  230.     MOVLW   H'27'
  231.     SUBWFB  LSZ+1,F
  232.     BC      TIZEZRESEK
  233.     MOVLW   H'10'
  234.     ADDWF   LSZ,F
  235.     MOVLW   H'27'
  236.     ADDWFC  LSZ+1
  237. EZRESEK
  238.     INCF    SZJ+3
  239.     MOVLW   H'E8'
  240.     SUBWF   LSZ,F
  241.     MOVLW   H'03'
  242.     SUBWFB  LSZ+1,F
  243.     BC      EZRESEK
  244.     MOVLW   H'E8'
  245.     ADDWF   LSZ,F
  246.     MOVLW   H'03'
  247.     ADDWFC  LSZ+1    
  248. SZAZASOK
  249.     INCF    SZJ+2
  250.     MOVLW   H'64'
  251.     SUBWF   LSZ,F
  252.     MOVLW   H'0'
  253.     SUBWFB  LSZ+1,F
  254.     BC      SZAZASOK
  255.     MOVLW   H'64'
  256.     ADDWF   LSZ,F
  257. TIZESEK
  258.     INCF    SZJ+1
  259.     MOVLW   H'0A'
  260.     SUBWF   LSZ,F
  261.     BC      TIZESEK
  262.     MOVLW   H'0A'
  263.     ADDWF   LSZ,W
  264.     MOVWF   SZJ
  265.     INCF    SZJ
  266.     RETURN
  267. ;-------------------------------------------------------------------------------
  268.     END
(#) Pali79 válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
Azt láttad az adatlapban, hogy a belső oszcinak mekkora a hőmérséklet függése? Nem valami pontos. Lehet nem kellene megspórolni az a 200 Ft-ot egy normális külső kvarcra.
(#) ktamas66 válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
Először is hozzátennék néhány gondolatot a timer kezelésről. A 151-es sorban először mented a TMR1H-t, majd az L-et. A timer folyamatosan számol, ezért előfordulhat olyan olyan eset, hogy a számláló pl. 0x01FF-en áll, ilyenkor lemented a H-t -> 0x01, mivel a movff 2 utasításig tart közben a számláló túlcsordul mondjuk 0x0201- re, ha ekkor lemented az L-et -> 0x01-et kapsz, az eredmény ( 0x0101) hibás lesz. Ez ellen megteheted például, hogy megállítod a timert mentés előtt, és csak a regiszterek törlése után indítod újra. A másik lehetőség, hogy mivel ez a pic támogatja a 16 bites timer műveleteket, ha engedélyezed, a TMR1L olvasásakor elmenti a H értékét is, így nem tud túlcsordulni, íráskor pedig a H értékét csak az L írásakor menti be a timer regiszterekbe. Tehát ilyenkor mindíg az L-et kell először olvasni és utoljára írni.
(#) sonajkniz válasza ktamas66 hozzászólására (») Okt 14, 2015 /
 
Nos rátapintottál a lényegre. Ezen igen sokat gondolkodtam, de végül nem tudtam megoldani. A timer megállításával próbálkoztam, csakhogy magasabb fordulaton az a 4-5 órajel is számít.
Erről a 16 bites timer mentésről még nem hallottam. Ha részleteznéd, főleg, ha egy pár soros példát készítenél, megköszönném.
(#) ktamas66 válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
Nincs példaprogram, csak a TxCON 7 bitjét (RD16) kell 1-be állítani .
(#) Hp41C válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
Ha a megszakítás végén a retfie FAST utasítást írnád, mindenkinek eszébe jutna, hogy az árnyékregiszterekbe mentett értékeket visszateszi a fő regiszterekbe (WREG, STATUS, BSR...)
(#) ktamas66 válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
Az interrupt kezelésről is néhány szó. Először is kijelenthetjük, hogy semmi nem történik egyszerre és azonnal . A IT rutinra ugrásnak van egy késleltetése (interrupt latency), ami 3-4 utasítás. Ez akkor kerül előtérbe, ha konkurens IT-k kezelése zajlik. Ebben az esetben előfordulhat, hogy ha bejön a mérendő jel, bebillenti a RABIF-et, eltelik két ciklus, közben a timer számlálója is túlcsordul és ő is bebillenti a TMR1IF bitet. Mire az IT rutinra érek nem tudom pontosan mi váltotta ki az IT-t először. Mivel Te csak egy IT kezelsz le egyszerre, ilyenkor mindig a számláló növelése történik először (holott lehet a mérőjel jött előbb), majd ha ez végzett a pic újra belép az IT rutinba és végrehajtja a mentéseket. Ez a késleltetés (mivel ilyenkor a számláló számol tovább) magasabb fordulaton hibát okozhat.
A jelenlegi esetben ez a hiba lehet belefér a kijelzés kerekítésébe, ráadásul magas fordulaton hamar új eredmény születik, így legfeljebb csak felvillan egy hibás eredmény, de a szemünk észre sem veszi.
(#) sonajkniz válasza ktamas66 hozzászólására (») Okt 14, 2015 /
 
Idézet:
„így legfeljebb csak felvillan egy hibás eredmény, de a szemünk észre sem veszi.”


Ezt már többször tapasztaltam, de azt hittem, az infra jibázik.
(#) Hp41C válasza ktamas66 hozzászólására (») Okt 14, 2015 /
 
Ebben a PIC -ben van CCP modul is. A Timer1 eredményét el lehet tárolni a segítségével. Sőt még azt is meg lehet mondeni, mi történt előbb. Ha a betárolt minta felső bitjei egyesek, akkor a jel váltott előbb, ha 0 -k, akkor a túlcsordulás volt előbb.
(#) sonajkniz válasza Hp41C hozzászólására (») Okt 14, 2015 /
 
Ez jól hangzik, és szivesen alkalmaznám, csak fogalmam sincs róla, hogy ezt hogyan kell.
(#) ktamas66 válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
Igen, a pontos időmérést a CCP modul capture üzemmódjával lehet megvalósítani, de így is működhet, csak ki kell számolni, hogy a timer mentése, törlése és az IT rutin hibája mennyire befolyásolja a pontosságot (mondjuk a belső órajel pontosságát is figyelembe véve), és egyáltalán mekkora pontosságra van szükségem. Szerintem a felvillanásokat a timer mentés hibája okozhatta inkább. Az IT-nél egyszerűen nem kell kiugrani a rutinból, ha végzett a számláló növelésével, hanem továbbengedni, és megvizsgálni közben jött-e RABIF megszakítás (hiszen az is lehetséges, hogy akkor jön mikor már a benn vagyok az IT rutinban és a mérőidőt növelgetem).
(#) ktamas66 válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
És még egy javaslat. Úgy látom ügyesen megoldottad, hogy amíg a számítás és kijelzés zajlik ne változhasson a kijelezendő érték a megszakítás miatt. Én ezt megfordítanám, hogy a mérések folyamatosak legyenek, legfeljebb nem kerül mind kijelzésre (lassú fordulaton úgyis ritkán jön mérés, minek dobáljuk el őket). A 32 bites számolás előtt egy segédváltozóba mentem az értékeket, amivel számolok:
  1. PWM_UJRA
  2.         BSF             KTSTATUS,4              ;a mentés idejére figyeljük az IT-t
  3.                                                         ;ha közben jön IT az törli ezt a bitet
  4.         MOVFW   KT_TMR1_FEL
  5.         MOVWF   REGB0
  6.         MOVFW   KT_TMR1_FEL1
  7.         MOVWF   REGB1
  8.         MOVFW   KT_TMR1_FEL2
  9.         MOVWF   REGB2
  10.         MOVFW   KT_TMR1_FEL3
  11.         MOVWF   REGB3
  12.  
  13.         BTFSS   KTSTATUS,4              ;most már mehet
  14.         BRA             PWM_UJRA
(#) sonajkniz válasza ktamas66 hozzászólására (») Okt 14, 2015 /
 
Elég sok infót zúdítottatok rám Hp41C-vel.
Eltartott egy darabig, míg feldolgoztam. Ezek, az álltalatok jelzett hibák mind javításra fognak kerülni. Az is lehet, Hogy Pali79 tanácsa szerint rárakok egy kvarcot, csak nem úgy, ahogy ő gondolja. Arra gondoltam, hogy egy 1MHz-s kvarccal hajtanám Timer1-et, a proci frekijét meg fellőném 16MHz-re. Így a futási sebesség 4x gyorsabb lenne, így csökkenne az elcsúszás a számlálásban, ráadásul az időmérés pontossabbá válna.
Vélemény?
(#) foxi63 válasza sonajkniz hozzászólására (») Okt 14, 2015 /
 
Szia!
Felesleges a timer1-be másik kvarc, a rendszerórajel ottvan és pontos.Csak előosztót kell 4-re állítani. A timer2-őt pedig pofon egyszerű bármilyen frekin másodperc alapú megszakításra állítani.

esetleg t2-t beállítod 1/10 vagy 1/100 másodpercre a ccp1 capture üzemmódjával ott a pontos freki, és nem függ semmilyen programcsúszástól, vagy megszakítás késleltetéstől sem.

üdv.:Foxi
A hozzászólás módosítva: Okt 14, 2015
(#) bbalazs_ hozzászólása Okt 15, 2015 /
 
Az lenne a kerdesem, hogy 32 bites adatot hogyan tudnek definialni? Az eeprom-ban szeretnem a program sorai koze. Mint a db es a dw, csak nincs tovabb. A data nem mukodik (nem jelez hibat, de csak wordot fordit) es a dd-re is hibat ad. MPASM-al forditom le.
Elore is koszi.
(#) Bell válasza bbalazs_ hozzászólására (») Okt 15, 2015 /
 
Próbáld de -vel.
(#) bbalazs_ válasza Bell hozzászólására (») Okt 15, 2015 /
 
Sajnos nem jo, csak egyetlen byteot rak le.

Bocsanat, azt meg elfelejtettem, hogy 18F-es sorozatrol van szo, tehat 8 bites mikroproci.
A hozzászólás módosítva: Okt 15, 2015
(#) Pali79 válasza bbalazs_ hozzászólására (») Okt 15, 2015 /
 
Változó értékről van szó vagy konstansról?
(#) nemgyuri válasza sonajkniz hozzászólására (») Okt 15, 2015 /
 
Szia! Ha van kedved böngészni! Mellékletbe betettem egy programrészletemet, ez egy fordulat után már kiírja az eredményt. A progi kb 2/3-át kitöröltem, de a maradékból kihámozható a lényeg.
(Én így csináltam..)
(#) bbalazs_ válasza Pali79 hozzászólására (») Okt 15, 2015 /
 
Konstansrol. De sok decimalisrol, szoval ha egy kellene csak, fognam a szamologep HEX-DEC forditojat es beirnam.
Meg tudom oldani igy is trukkosen, csak erdekelne, hogy van-e ilyen az MPLABon belul.
(#) Pali79 válasza bbalazs_ hozzászólására (») Okt 15, 2015 /
 
Hát... Mivel 8 bites PIC-et használsz, nem hinném, hogy a fordító támogatná a 32 bites számokat. A 16 bites Timer1 is TMR1L-ből és TMR1H-ból áll és nem egy 16 bitesből.
(#) foxi63 válasza bbalazs_ hozzászólására (») Okt 15, 2015 /
 
Szia!
Nincs, de szervezheted úgy az adatokat, hogy 4byte-ot olvas ki egymás után, és leteszi a megfelelő változóba.A mutatót néggyel növeled. Igy mégis tudsz 32 bitet tárolni.Hiszen a 32 bit nem más mint 4byte. Az első helyen a legkisebb helyiértékű byte van és követi a többi.
A hozzászólás módosítva: Okt 16, 2015
(#) Bell válasza bbalazs_ hozzászólására (») Okt 16, 2015 /
 
Az MPLAB elfogadja az 1 Byte-os decimális számokat, nem kell átszámolni hexába.
(#) Hp41C válasza Bell hozzászólására (») Okt 16, 2015 /
 
Ismeri a több bittel rendelkező decimális számokat is: pl .1000 az ezer.
A byte -ra osztását így lehet megoldani:
low(.1000) az alacsony helyiértékű (bit 7..0) byte: 0xE8
high(.1000) az magas helyiértékű (bit 15..8) byte: 0x03
upper(.1000) az felső helyiértékű (bit 23..16) byte: 0x00
Következő: »»   6 / 32
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