www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Assembler, C ali kaj je to?

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Legada
Član
Član



Pridružen-a: Čet 18 Sep 2008 12:04
Prispevkov: 39
Aktiv.: 0.21
Kraj: Obala

PrispevekObjavljeno: Pet Jul 30, 2010 9:23 am    Naslov sporočila:  Assembler, C ali kaj je to? Odgovori s citatom

Spodaj sem priložil program. Zanima me v čem je ta pisan (assembler, C, drugo).
Uporabljen je pa PIC 16F628. Vem da ta PIC uporablja 35 assemlerjevih ukazov, pa mi program ne zgleda čisto assembler... Izkušenj pa nimam veliko...

Koda:


LIST    P=16F628, C=132, R=DEC, W=0   ; P= tipo di PIC
                                             
#include <p16f628.inc>
#include "..\..\umacros.inc"


                                ; Configuration Bits:
                                ; XT, (HS se 10Mhz)
                                ; WatchDog Enabled
                                ; Code Protection Disabled <--- **
                                ; Power Up timer Enabled
                                ; Brown Out detection Enabled

        __CONFIG    _HS_OSC & _WDT_ON & _CP_ALL & _PWRTE_ON & _LVP_OFF


#define bit_CARRY       STATUS,0
#define bit_ZERO        STATUS,2
#define bit_RP0         STATUS,5

#define Port_A          PORTA
#define Port_B          PORTB

#define      FIRMWARE_VER   11   ; Firmware version 1.1
#define      REMLIB_VER   1   ; Remote Library version

#define      RxTIMEOUT   100

; 1  = 25.6uS PWM PERIODA @ 10Mhz
; MAX= 25.6x255 -> 6.528mS
;

#define TIMEBITONE1_HIT      16;
#define TIMEBITONE0_HIT      50;
#define TIMEBITZERO1_HIT   16;
#define TIMEBITZERO0_HIT   16;
#define TIMEBITSTART1_HIT   131;
#define TIMEBITSTART0_HIT   66;
#define TIMEBITSTOP_HIT      16;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 13.29
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pet Jul 30, 2010 9:40 am    Naslov sporočila:   Odgovori s citatom

Tole kar si priložil sploh ni program, ampak samo definiranje konstant in CONFIG direktiva. Verjetno je pa to čisto klasičen asembler.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Pet Jul 30, 2010 9:52 am    Naslov sporočila:   Odgovori s citatom

Ali prevajalnik ukaze #define razume je njegova stvar, kako se jih uporablja pa stvar programerja. To pomeni, da je resnični program lahko pisan v asm ali v C.

Ampak, ker programa dejansko nisi prilepil, je nemogoče reči v katerem jeziku je pisan. Morda bo kdo sklepal iz *.inc in __CONFIG makroja, a njegov sklep bo lahko napačen.

Prilepi celoten program, polovico, četrtino ali samo eno rutino in se bo takoj videlo.
Če v programu zaslediš mnemonike if, for, do, while, switch je to potem C, aneda?
Če v programu zaslediš mnemonike, ki so enaki tistim 35 asemblerskim ukazom pa je to asm, aneda?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Legada
Član
Član



Pridružen-a: Čet 18 Sep 2008 12:04
Prispevkov: 39
Aktiv.: 0.21
Kraj: Obala

PrispevekObjavljeno: Pet Jul 30, 2010 10:27 am    Naslov sporočila:   Odgovori s citatom

Tu je še en del programa...
Begajo me tisti ukazi, ki se začnejo s "__".



Koda:

;-----------------------------------------------------------------------------
; Loop main
;-----------------------------------------------------------------------------
MainLoop:
        CLRWDT

        _INITP                  ; In/Out port

        CALL    GesTimers               ; elapsed_sec & elapsed_dsec

   CLRF   RxTimeout
   CALL   RxFromPicMaster

   MOVLW   0         ; Comand = true (RxTimeout==0)
        XORWF   RxTimeout,W      ; If yes then
        BNZ     MainLoop      ; else


   _CLJE   ProtocolSet, 1, CodHi1
   _CLJE   ProtocolSet, 2, CodDa1
   _CLJE   ProtocolSet, 3, CodDa2
   _CLJE   ProtocolSet, 4, CodSa1
        GOTO    MainLoop



CodHi1:
; ----------------------------------------------------------------------------------------
;   0 = n. transmision IR to send
; ----------------------------------------------------------------------------------------
   _CLJNE   IrTxAddr, 0, _skip_wrIRTX_hit
   MOVFW   IrTxCode
   MOVWF   nIRTxRepeat
txmainloop_hit
   CALL   TxIR_Hi1      ; IR send

   MOVLW   250
        CALL    wait_ms2     

        DECFSZ  nIRTxRepeat, F      ; IrTxCode repeat
        GOTO    txmainloop_hit
   GOTO    MainLoop      ; IrTxCode == 0
_skip_wrIRTX_hit
; ----------------------------------------------------------------------------------------


........


; ----------------------------------------------------------------------------------------
;   2 = Temperaura in °C (°C x 4)    Range 16..32
; ----------------------------------------------------------------------------------------
   _CLJNE   IrTxAddr, 2, _skip_wrTemp_hit

        _CKFJNR  IrTxCode, 16, 32, MainLoop   
        MOVLW   9;6         ;
   MOVWF   IrTxAddr      ;

   BCF     STATUS,C      ; Clear Carry
        RLF     IrTxCode,F      ;
        RLF     IrTxCode,F      ;
   CALL   UpdateE2Data   
   CALL   ResetBasculante
        GOTO    MainLoop
_skip_wrTemp_hit
; ----------------------------------------------------------------------------------------
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Alex17
Član
Član



Pridružen-a: Ned 28 Feb 2010 21:46
Prispevkov: 476
Aktiv.: 2.78
Kraj: Ljutomer

PrispevekObjavljeno: Pet Jul 30, 2010 10:48 am    Naslov sporočila:   Odgovori s citatom

To je asmbler, vendar ne za PIC16F628, saj le-ta ne pozna ukaza BNZ, tisti ukazi, ki se začnejo z _ so pa verjetno ukazi prevajalniku, nevem namreč katerega uporabljaš.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 13.29
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pet Jul 30, 2010 11:16 am    Naslov sporočila:   Odgovori s citatom

Tisti z "_" so makroji. PIC18 serija ASM.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Legada
Član
Član



Pridružen-a: Čet 18 Sep 2008 12:04
Prispevkov: 39
Aktiv.: 0.21
Kraj: Obala

PrispevekObjavljeno: Pet Jul 30, 2010 11:51 am    Naslov sporočila:   Odgovori s citatom

Ampak uporabljen je PIC16?

Je možno, da je uporabljen ASM za PIC18, kot pravi "mucek4"?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Legada
Član
Član



Pridružen-a: Čet 18 Sep 2008 12:04
Prispevkov: 39
Aktiv.: 0.21
Kraj: Obala

PrispevekObjavljeno: Pet Jul 30, 2010 11:52 am    Naslov sporočila:   Odgovori s citatom

"Alex17", program je pisan za PIC 16F628, in tudi v njem teče... Če je to možno, pa nebi dal roke v ogenj...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group