|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Pet Jul 30, 2010 9:23 am Naslov sporočila: Assembler, C ali kaj je to? |
|
|
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 |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.25 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Jul 30, 2010 9:40 am Naslov sporočila: |
|
|
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 |
|
|
Umnik Član
Pridružen-a: Čet 16 Sep 2004 17:52 Prispevkov: 958 Aktiv.: 4.30 Kraj: Novo mesto
|
Objavljeno: Pet Jul 30, 2010 9:52 am Naslov sporočila: |
|
|
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 |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Pet Jul 30, 2010 10:27 am Naslov sporočila: |
|
|
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 |
|
|
Alex17 Član
Pridružen-a: Ned 28 Feb 2010 21:46 Prispevkov: 476 Aktiv.: 2.77 Kraj: Ljutomer
|
Objavljeno: Pet Jul 30, 2010 10:48 am Naslov sporočila: |
|
|
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 |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.25 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Jul 30, 2010 11:16 am Naslov sporočila: |
|
|
Tisti z "_" so makroji. PIC18 serija ASM. |
|
Nazaj na vrh |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Pet Jul 30, 2010 11:51 am Naslov sporočila: |
|
|
Ampak uporabljen je PIC16?
Je možno, da je uporabljen ASM za PIC18, kot pravi "mucek4"? |
|
Nazaj na vrh |
|
|
Legada Član
Pridružen-a: Čet 18 Sep 2008 12:04 Prispevkov: 39 Aktiv.: 0.21 Kraj: Obala
|
Objavljeno: Pet Jul 30, 2010 11:52 am Naslov sporočila: |
|
|
"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 |
|
|
|
|
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: 69 dni
Powered by phpBB © 2001, 2005 phpBB Group
|