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   8 / 32
(#) bbalazs_ válasza sonajkniz hozzászólására (») Nov 10, 2015 / 1
 
Az adatlap leirja, hogy az ANSEL regiszterek nem erhetok el access rambol. Tehat az adatlapban nezd meg, melyek azok a regiszterek, amik 05f alatt vannak es azoknal a BSR-t 0f-re kell allitani es BANKED modon kell rajuk hivatkozni.
szoval szurd be ezeket:
movlb 0f
clrf ANSELD, BANKED
movlb 0
(#) sonajkniz válasza bbalazs_ hozzászólására (») Nov 11, 2015 /
 
Óriási köszönet! MŰKÖDIK!!!
(#) nemgyuri hozzászólása Nov 12, 2015 /
 
Tisztelt fórumtársak!
Talán 1 hónapja láttam itt valamelyik topic-ban 1 csatolmányt?
PIC-es *.asm volt amiben az LCD lábait (2x16 kar) az elején definiálta a szerző, majd úgy használta fel. Arra még emlékszem, hogy 4 bites módban volt. Tudna valaki segíteni?
(#) sonajkniz válasza nemgyuri hozzászólására (») Nov 12, 2015 /
 
Szia!
Ilyesmire gondoltál?
  1. ;*-----------------------------------------------------------------------------*
  2. ;*             Szöveg kiírása LCD kijelz?re 4 bites adatúttal                  *
  3. ;*                          PIC18F14K22-vel                                    *
  4. ;*  Létrehozva:2014.11.22.                                                     *
  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  WDTPS = 1024        ; watchdog beállítása (kb 2 sec)
  14.         CONFIG  LVP = OFF                       ; alacsony feszültség? programozás kikapcsolva
  15.     CONFIG  MCLRE = OFF         ; RA3 bemenetkénti használatra állítása
  16.  
  17. MI1     EQU     0xA          
  18. MI2     EQU     0xB
  19.  
  20. #define         UTASITAS        BCF     LATA,2
  21. #define         ADAT            BSF     LATA,2
  22. #define         ENABLE          LATA,1
  23.  
  24.  
  25. DELAY   MACRO   SZAMLALO_INDUL
  26.         MOVLW   SZAMLALO_INDUL
  27.         MOVWF   MI1
  28.         DECFSZ  MI1
  29.         GOTO    $-2
  30.         ENDM
  31.  
  32.  
  33.  
  34.         org             0x0000                                          ; program memória kezd? címe
  35.         nop                                                                     ; ICD miatt
  36.  
  37.         org             0x0028                                          ; kezd? cím
  38.  ;--------------------------INICIALIZALAS----------------------------------
  39.         CLRF    LATA                                            ; kimeneti portok törlése
  40.         CLRF    LATB                                            ;
  41.         CLRF    LATC                                            ;
  42.         MOVLW   B'00000000'                                     ; bemenetek 1=analóg  0=digitális
  43.         MOVWF   ANSEL                                           ;
  44.         MOVLW   B'00001000'                                     ; A port
  45.         MOVWF   TRISA
  46.         MOVLW   B'00000000'                                     ; B port kimenet
  47.         MOVWF   TRISB
  48.         MOVLW   B'01100000'                                     ; C port kimenet
  49.         MOVWF   TRISC
  50.         MOVLW   B'01010010'                                     ; oszcillátor frekvenciája <4:6>
  51.         MOVWF   OSCCON                                          ; 111 = 16, 110 = 8, 101 = 4, 100 = 2 MHz
  52.     MOVLW       B'10000101'                                     ; timer 0 beállítása, el?osztó <2:0>
  53.         MOVWF   T0CON
  54. ;---------------------------------------------------------------------------*
  55.     ;LCD kijelz? inicializálása
  56.     BCF     ENABLE              ;Beírás tiltása
  57.     DELAY   D'250'
  58.     DELAY   D'250'
  59.     DELAY   D'250'
  60.     DELAY   D'250'
  61.     DELAY   D'250'
  62.     DELAY   D'250'
  63.     UTASITAS             ;Beállítjuk a kijelz? R/S bemenetét utasítás fogadására
  64.         MOVLW   B'00110000'        ;Ez az utasítás 4x végrehajtva reseteli az LCD-t
  65.     CALL    KIIRAS0
  66.     CALL    KIIRAS0
  67.     CALL    KIIRAS0
  68.     CALL    KIIRAS0
  69.     DELAY   D'250'
  70.     DELAY   D'250'
  71.     DELAY   D'250'             ;Némi kivárás után be kell állítani a kijelz?t.
  72.     DELAY   D'250'
  73.     DELAY   D'250'
  74.     DELAY   D'250'
  75.         MOVLW   B'00100000'
  76.     CALL    KIIRAS0            ;Itt kapcsolunk át 4 bites üzemmódra
  77.         MOVLW   B'00101000'       ;Már 4 bites módban beállítjuk a
  78.     CALL    KIIRAS            ; kijelz?t kétsorsa
  79.         MOVLW   B'00001100'       ;Kijelz? engedélyezése
  80.     CALL    KIIRAS
  81.  
  82. ;-------------------------------------------------------------------------------
  83. MAIN
  84.         MOVLW   B'00000001'       ;Kijelz? törlése
  85.     CALL    KIIRAS
  86.     DELAY   D'250'
  87.     DELAY   D'250'
  88.     ;MEGJEGYZÉS: Kijelz? törlése után mindig kell 2x "DELAY   D'250'"
  89.         MOVLW   B'10000000'       ;Fels? sor kezd?címének meghatározása
  90.     CALL    KIIRAS            ;Ez  a bal els? karakter.
  91.     ; Szöveg kiírása
  92.     ADAT                 ;Beállítjuk a kijelz? R/S bemenetét adat fogadására
  93.     MOVLW   H''               ;
  94.     CALL    KIIRAS
  95.     MOVLW   H''               ;40 db írható be. Egyszerre 16 jelenik meg
  96.     CALL    KIIRAS
  97.     MOVLW   H''               ;
  98.     CALL    KIIRAS
  99.     MOVLW   H''               ;
  100.     CALL    KIIRAS
  101.     MOVLW   H''               ;
  102.     CALL    KIIRAS
  103.  
  104.     UTASITAS             ;Beállítjuk a kijelz? R/S bemenetét utasítás fogadására
  105.     DELAY   D'250'
  106.     DELAY   D'250'
  107.         MOVLW   B'11000000'       ;Alsó sor kezd?címének meghatározása
  108.     CALL    KIIRAS            ;Ez  a bal els? karakter.
  109.     ; Szöveg kiírása
  110.     ADAT                 ;Beállítjuk a kijelz? R/S bemenetét adat fogadására
  111.     MOVLW   H''               ;
  112.     CALL    KIIRAS
  113.     MOVLW   H''               ;
  114.     CALL    KIIRAS
  115.     MOVLW   H''               ;40 db írható be. Egyszerre 16 jelenik meg
  116.     CALL    KIIRAS
  117.     MOVLW   H''               ;
  118.     CALL    KIIRAS
  119.     MOVLW   H''               ;
  120.     CALL    KIIRAS
  121.  
  122.     GOTO    $-0
  123. ;-------------------------------------------------------------------------------
  124. KIIRAS
  125.  
  126.     MOVWF   MI2                ;Wreg áttöltése MI2-be
  127.     MOVFF   MI2,LATB           ;MI2 LATB-be töltése(Csak a fels? 4 bit)
  128.     DELAY   D'16'              ;El? várakozás
  129.     BSF     ENABLE             ;Beírás indul
  130.     DELAY   D'96'              ;Kivárás
  131.     BCF     ENABLE             ;Beírás vége
  132.     DELAY   D'5'               ;Utó várakozás
  133.     RLNCF   MI2                ;MI2 bitjeit 1-el balra léptetjük
  134.     RLNCF   MI2                ;MI2 bitjeit 1-el balra léptetjük
  135.     RLNCF   MI2                ;MI2 bitjeit 1-el balra léptetjük
  136.     RLNCF   MI2                ;MI2 bitjeit 1-el balra léptetjük
  137.     MOVFF   MI2,LATB           ;MI2 LATB-be töltése(Csak a fels? 4 bit)
  138.     DELAY   D'16'              ;El? várakozás
  139.     BSF     ENABLE             ;Beírás indul
  140.     DELAY   D'96'              ;Kivárás
  141.     BCF     ENABLE             ;Beírás vége
  142.     DELAY   D'6'               ;Utó várakozás
  143.     RETURN
  144. KIIRAS0                        ;Kijelz? reszetelésekor  használatos
  145.     MOVWF   LATB               ;Karakter b-be töltése
  146.     DELAY   D'16'              ;El? várakozás
  147.     BSF     ENABLE             ;Beírás indul
  148.     DELAY   D'96'              ;Kivárás
  149.     BCF     ENABLE             ;Beírás vége
  150.     DELAY   D'6'               ;Utó várakozás
  151.     RETURN
  152.                        ;Ezek az id?zítések 4 Mhz-es órajelhez vannak igazítva!
  153. ;-------------------------------------------------------------------------------
  154.     END
A hozzászólás módosítva: Nov 12, 2015
(#) nemgyuri válasza sonajkniz hozzászólására (») Nov 12, 2015 /
 
Nem, az volt a lényege, hogy minden LCD lábat oda lehet kötni bármelyik PIC lábra csak az elején ezt definiálni kell. Azért köszönöm, bár nekem is van néhány változatom, csak mindig adjusztálni kell valamit. Ha más nincs nekiállok....
(#) sonajkniz válasza nemgyuri hozzászólására (») Nov 12, 2015 /
 
Az elején ott a definíció, csak folytatni kell.
Ámbár az adatvonalat nem árt olyan portra tenni, ami eleve csak 4 bites.
  1. #define         UTASITAS        BCF     LATA,2
  2. #define         ADAT            BSF     LATA,2
  3. #define         ENABLE          LATA,1
  4. #define         ADATOK          LATB
(#) nemgyuri válasza sonajkniz hozzászólására (») Nov 12, 2015 /
 
Ez oké, de ha jól láttam ebben a bitek és a portlábak sorban vannak.
(egyébként összefuthatnánk valamikor, ha már ilyen messze vagyunk egymástól)
A hozzászólás módosítva: Nov 12, 2015
(#) sonajkniz válasza nemgyuri hozzászólására (») Nov 12, 2015 /
 
Bitenként akarod meghatározni az adatlábakat? Nem macerás úgy egy kissé? Persze azt is lehet.
  1. #define         UTASITAS        BCF     LATA,2
  2. #define         ADAT            BSF     LATA,2
  3. #define         ENABLE          LATA,1
  4. #define         BIT_4                   LATB,2
  5. #define         BIT_5           LATB,5
  6. #define         BIT_6           LATC,3
  7. #define         BIT_7                   LATA,4

Bár szerintem ez így morbid.
(#) nemgyuri válasza sonajkniz hozzászólására (») Nov 12, 2015 /
 
Éppen az volt a lényeg, és mégsem nem volt hosszabb a progi emlékeim szerint. Bár akkor csak átfutottam, de most éppen jól volna.
(#) bbalazs_ válasza nemgyuri hozzászólására (») Nov 13, 2015 /
 
A dolog elegge egyszeru, de szerintem sincs semmi ertelme.
Mar ugy ertem, a negy adatbit kulon-kulon valo irasanak. De persze meg lehet oldani.
Mielott kikuldod az adatot, beallitod a labakat a negy adatbit szerint.

Az adat-ban van az also negy biten a beirando szam 0-15
adat0-3 tetszoleges portlabak

bcf adat0 ;toroljuk oket
bcf adat1
bcf adat2
bcf adat3

btfsc adat,0 ;az eredeti adatbitek szerint beallitjuk, ha magas
bsf adat0
btfsc adat,1
bsf adat,1
btfsc adat,2
bsf adat2
btfsc adat,3
bsf adat3
es mehet a beiras

Egyszer kellet ilyesmit hasznalnom, amikor elpukkantottam az egyik labat a PIC-nek, ami valami 8bites kijelzot hajtott meg es atvezettem az egyik szabad labat adatbitnek.
(#) Pali79 válasza bbalazs_ hozzászólására (») Nov 13, 2015 /
 
Ezt én nem nagyon értem... Pedig szeretném, mert tök jó lenne ha nem kéne egy port alsó vagy felső bitjeit lefoglalni a kijelzővel. Szóval, ezzel a megoldással, hogy tudod megvalósítani, hogy BÁRHOVÁ kötheted az adatvonalat?
(#) bbalazs_ válasza Pali79 hozzászólására (») Nov 13, 2015 /
 
Akkor inkabb a PIC programozas kezdoknek topicban kellene kerdezned.

De ha jobban megnezed (bar ez NAGYON alap....) akkor az adat nevu valtozonak a bitjeit (amiben a tenyleges, kiirando 4 bites szam van) feleltetem meg az adat0,adat1,adat2,adat3 labaknak, amik BARMIK lehetnek.

De az csak egy pelda volt, a valosagban ezek lehetnenek mondjuk:

bcf LATA,4
bcf LATB,3
bcf LATC,6
bcf LATD,0

btfsc adat,0 ;az eredeti adatbitek szerint beallitjuk, ha magas
bsf LATA,4
btfsc adat,1
bsf LATB,3
btfsc adat,2
bsf LATC,6
btfsc adat,3
bsf LATD,0
es mehet a beiras, ez azt jelenti, hogy a megfelelo lab (strobe, write, de ;mittudomen hogy hivjak) megfelelo szintre huzasaval ervenyesited a labakon kint levo adatot. Amig ez nem tortenik meg, a kijelzo mikroprocija nem foglalkozik azzal, hogy az adatlabakon mikor milyen szint van. Azt kijelzoje valogatja, hogy a strobe magasra allitasa vagy eppen lehuzasa ervenyesiti az adatot, ez a kijelzo adatlapjaban benne van.

Tehat a lenyeg, hogy a torles az elejen es a beallitas a felteteleknel ugyanarra a labra hivatkozzon. Ennel egyszerubben sajnos nem tudom elmagyarazni.
(Termeszetesen a hivatkozott labakat outputra kell allitani a megfelelo TRIS bitekkel.)
Az adat, amit tenylegesen be szeretnel irni, az adat nevu valtozoban van.
A hozzászólás módosítva: Nov 13, 2015
(#) Pali79 válasza bbalazs_ hozzászólására (») Nov 13, 2015 /
 
Azért annyira nem vagyok kezdő már... Az előző példád szintaktikailag nem volt teljesen rendben és ez egy picit megzavart, vagyis nem láttam a légyeget benne, így már tisztább, már csak a bitcserét kell megírni hozzá és okés lesz. Ki is próbálom mindjárt.
(#) kissi válasza Pali79 hozzászólására (») Nov 13, 2015 /
 
Idézet:
„Az előző példád szintaktikailag nem volt teljesen rendben”

Mire gondolsz ?!
(#) Pali79 válasza kissi hozzászólására (») Nov 13, 2015 /
 
Hiányoztak a vesszők.
(#) kissi válasza Pali79 hozzászólására (») Nov 13, 2015 /
 
Már honnan ?! Ha megnézed külön néven hivatkozik a bitre (adat0) valamint ha byte-ból akarja adat,0 ! De ezt írta is !
(#) Pali79 válasza kissi hozzászólására (») Nov 13, 2015 /
 
Én nem tudok róla, hogy a gyakorlatban lehet így egy bitet törölni: bcf adat0, csak így: bcf adat,0
(#) kissi válasza Pali79 hozzászólására (») Nov 13, 2015 /
 
#define adat0 adat,0
ezután már lehet !
(#) Pali79 válasza kissi hozzászólására (») Nov 13, 2015 /
 
Persze, de ez nem volt benne...
(#) kissi válasza Pali79 hozzászólására (») Nov 13, 2015 /
 
Csak ez
Idézet:
„adat0-3 tetszoleges portlabak”
(#) Pali79 válasza kissi hozzászólására (») Nov 13, 2015 /
 
Jóvanna! Én ilyen egyszerűen összezavarható vagyok.
(#) kissi válasza Pali79 hozzászólására (») Nov 13, 2015 /
 
(#) bbalazs_ hozzászólása Nov 13, 2015 /
 
Az assembly nem trefadolog.
(#) Pali79 hozzászólása Nov 13, 2015 /
 
Lehetne még finomítani, de működik!
  1. LCD_Char
  2.         movwf   templcd
  3.         bcf             PORTD,2                 ;töröljük az adatlábakat
  4.         bcf             PORTD,3
  5.         bcf             PORTC,4
  6.         bcf             PORTC,5
  7.         swapf   templcd,W
  8.         movwf   templcd2
  9.         btfsc   templcd2,0
  10.         bsf             PORTD,2
  11.         btfsc   templcd2,1
  12.         bsf             PORTD,3
  13.         btfsc   templcd2,2
  14.         bsf             PORTC,4
  15.         btfsc   templcd2,3
  16.         bsf             PORTC,5
  17.         bsf     LCD_PORT,LCD_RS
  18.         call    Pulse_e                 ; Magas impulzust küld az Enable lábra.
  19.         movf    templcd,w
  20.         movwf   templcd2
  21.         bcf             PORTD,2                 ;töröljük az adatlábakat
  22.         bcf             PORTD,3
  23.         bcf             PORTC,4
  24.         bcf             PORTC,5
  25.         btfsc   templcd2,0
  26.         bsf             PORTD,2
  27.         btfsc   templcd2,1
  28.         bsf             PORTD,3
  29.         btfsc   templcd2,2
  30.         bsf             PORTC,4
  31.         btfsc   templcd2,3
  32.         bsf             PORTC,5
  33.         bsf     LCD_PORT,LCD_RS
  34.         call    Pulse_e          ; Magas impulzust küld az Enable lábra.
  35.         call    Kesleltet5
  36.         retlw   0x00
(#) nemgyuri válasza bbalazs_ hozzászólására (») Nov 13, 2015 /
 
Sziasztok!
Közben én is nekiláttam, és úgy tűnik működik. Még finomítok rajta. "bbalázs" bár csak most olvastam a javaslatodat, de eléggé hasonló amit összehoztam.
  1. LCDBYTE:        ;1 byte az LCD-re,  4 bites interface
  2.                 ; Be: LCDByte  - nibble ki: HiByte, LoByte
  3.                 ;RS-t át kell engedni'''
  4.         movwf   LCDByte
  5.         call    LCD_nibleH
  6.         call    LCD_nibleL
  7.         RETURN
  8. LCD_nibleH:
  9.         bsf     PORTLCD,LCDEnable
  10.         call    vár_10u
  11.         bsf     PORTADAT7
  12.         btfss   LCDByte,7
  13.         bcf     PORTADAT7
  14.         bsf     PORTADAT6
  15.         btfss   LCDByte,6
  16.         bcf     PORTADAT6
  17.         bsf     PORTADAT5
  18.         btfss   LCDByte,5
  19.         bcf     PORTADAT5
  20.         bsf     PORTADAT4
  21.         btfss   LCDByte,4
  22.         bcf     PORTADAT4
  23.         call    vár_10u
  24.         bcf     PORTLCD,LCDEnable
  25.         call    vár_10u
  26.         return
  27. LCD_nibleL:
  28.         bsf     PORTLCD,LCDEnable
  29.         call    vár_10u
  30.         bsf     PORTADAT7
  31.         btfss   LCDByte,3
  32.         bcf     PORTADAT7
  33.         bsf     PORTADAT6
  34.         btfss   LCDByte,2
  35.         bcf     PORTADAT6
  36.         bsf     PORTADAT5
  37.         btfss   LCDByte,1
  38.         bcf     PORTADAT5
  39.         bsf     PORTADAT4
  40.         btfss   LCDByte,0
  41.         bcf     PORTADAT4
  42.         call    vár_10u
  43.         bcf     PORTLCD,LCDEnable
  44.         call    vár_10u
  45.         return

Az LCD init még nagyon nem tetszik, de a mostani projeknél egyenlőre így marad..
(#) sonajkniz hozzászólása Nov 14, 2015 /
 
Sziasztok!

Ismét a segítsségeteket szeretném kérni.
Egy PIC18F46K22-es nem azt csinálja, amit kellene.
2db analóg bemenetet használok. Teljesen mindegy, milyen jelet adok a bemenetekre, ADRESH értéke folyamatos 192.
A bemenetek RA3 és RA5.
Valamint szeretném használni az analóg kimenetet, de mindegy, hogy 0-tól 31-ig mit írok VREFCON2-be, RA2-őn nem jön semmi.
Igy van inicializálva:
  1. INICIALIZALAS
  2.         CLRF    LATA                                            ; kimeneti portok törlése
  3.         CLRF    LATB                                            ;
  4.         CLRF    LATC                                            ;
  5.     CLRF    LATD
  6.     CLRF    LATE
  7.         MOVLW   B'00111011'                                     ; A port
  8.         MOVWF   TRISA
  9.         MOVLW   B'00101000'
  10.     MOVWF   ANSELA
  11.     CLRF    ADCON2
  12.     MOVLW   B'10100000'
  13.     MOVWF   VREFCON1
  14.         MOVLW   B'00111100'                                     ; B port kimenet
  15.         MOVWF   TRISB
  16.     CLRF    WPUB
  17.         MOVLW   B'00000000'                                     ; C port kimenet
  18.         MOVWF   TRISC
  19.         MOVLW   B'00011111'                                     ; D port kimenet
  20.         MOVWF   TRISD
  21.         MOVLB   0F
  22.     CLRF    ANSELD,BANKED
  23.     MOVLB   0
  24.         MOVLW   B'00001000'                                     ; E port kimenet
  25.         MOVWF   TRISE
  26.         MOVLW   B'01010010'                                     ; oszcillátor frekvenciája <4:6>
  27.         MOVWF   OSCCON
  28.         MOVLW   B'10000111'                                     ; timer 0 beállítása, el?osztó <2:0>
  29.         MOVWF   T0CON

Ez pedig az analóg beolvasás:
  1. MOVLW   B'00000011'  ;\
  2.     MOVWF   ADCON0       ; \
  3.     NOP                  ;  \
  4.     BSF     ADCON0,1     ;   \
  5.     BTFSC   ADCON0,1     ;    \
  6.     GOTO    $-2          ;     \
  7.     MOVFF   ADRESH,POTI  ;      A/D converziók
  8.     MOVLW   B'00000100'  ;      /
  9.     MOVWF   ADCON0       ;     /
  10.     NOP                  ;    /
  11.     BSF     ADCON0,1     ;   /
  12.     BTFSC   ADCON0,1     ;  /
  13.     GOTO    $-2          ; /
  14.     MOVFF   ADRESH,PEDAL ;/

Kérlek,segítssetek, hol rontottam el.
(#) Hp41C válasza sonajkniz hozzászólására (») Nov 14, 2015 / 1
 
Ha jól emlékszem, Neked írták, hogy a 0xF60 alatti címen levő SFR -eket BANKED móddal lehet elérni.
Az inicializálás elejére egy movlb 0x0F utasítás kell a movwf ANSELA, BANKED elé.
(#) sonajkniz válasza Hp41C hozzászólására (») Nov 14, 2015 / 1
 
Ezt már végképp nem értem.
Átírtam így:
  1. MOVLW   B'00111011'                                     ; A port
  2.         MOVWF   TRISA
  3.     CLRF    ADCON2
  4.         MOVLW   B'00101000'
  5.         MOVLB   0F
  6.     MOVWF   ANSELA,BANKED
  7.     CLRF    ANSELD,BANKED
  8.     CLRF    VREFCON0,BANKED
  9.     MOVLW   B'10100000'
  10.     MOVWF   VREFCON1,BANKED
  11.     MOVLB   0
  12.         MOVLW   B'00111100'                                     ; B port kimenet
  13.         MOVWF   TRISB

Az analóg kimenet most már működik, annak ellenére, hogy VREFCON2-be bankváltás és BANKED nélkül írom be az adatot, pedig fizikailag VREFCON1 alatt van. Viszont az AD converzió eredménye még mindíg 192, bármi legyen is a bemeneten.
(#) Hp41C válasza sonajkniz hozzászólására (») Nov 14, 2015 /
 
  1. MOVLW   B'00000011'  ;\
  2.     MOVWF   ADCON0       ; \
  3.     NOP                  ;  \
  4.     BSF     ADCON0,1     ;   \
  5.     BTFSC   ADCON0,1     ;    \
  6.     GOTO    $-2          ;     \

Melyik csatornát is méri? Az AN0 -t.
Az első utasítás bekapcsolja az A/D modult (1) és el is indítja(2). A BSF ADCON0,1 -nek már nem is marad feladat....
Az AN3 (RA3) méséréhez:
  1. movlw (0x03 << ADCHS0) | (1 << ADON)
  2. movwf ADCON0

utasítások kellenek.
  1. MOVLW   B'00000100'  ;      /
  2.     MOVWF   ADCON0       ;     /
  3.     NOP                  ;    /
  4.     BSF     ADCON0,1     ;   /
  5.     BTFSC   ADCON0,1     ;  /

Ez az utasítássor azzal kezdi, hogy kikapcsolja az A/D -t...
Az AN4 (RA5) méséréhez:
  1. movlw (0x04 << ADCHS0) | (1 << ADON)
  2. movwf ADCON0

utasítások kellenek.


Milyen utasítással írod a VREFCON1 regisztert?
  1. movff WREG, VREFCON1

A movff utasítás kódja (2 szó) mindkét regiszter teljes 12 bites címét tartalmazza.
A hozzászólás módosítva: Nov 14, 2015
(#) sonajkniz válasza Hp41C hozzászólására (») Nov 14, 2015 /
 
Oké!

Pedig esküszöm,hogy se részeg, se narkós nem vagyok, ráadásul rengetegszer csináltam már A/D konfigolást. Nem az a szégyen, hogy elb...tam, hanem az, hogy több óra alatt sem jöttem rá!

Köszi!
Következő: »»   8 / 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