c + asm pro 8051 nevim proc to nejde

Vláďa Anděl vaelektronik na vaelektronik.cz
Sobota Květen 2 00:05:04 CEST 2015


No koukám že tady se Silabsama asi nikdo nedělá :-( nakonec jsem to 
ovládání displeje přepsal do céčka. Je to sice proti mému přesvědčení, 
dělá to pár instrukcí navíc, ale dál to už neřeším. Problém s kterým 
jsem nepočítal, C8051F860 nemá u sériového kanálu režim 0. Má jen 1 a 3.

Co jsem ještě našel na stránce Silabsu:
http://community.silabs.com/t5/Simplicity-Studio-and-Software/requires-src-control-to-be-active/td-p/47583
Keil údajně dobře nezvládá in line asm, zapnout active src-control je 
taky problém a když jsem to podle tohoto návodu změnil, taky to nešlo.
Propojení samostatného asm souboru s céčkem je taky asi duchařina :-(
http://www.keil.com/support/docs/1671.htm
Doporučují nejdřív vytvořit src a ten si pak přepsat něčím svým.

Vzal jsem dva hotové příklady na mixed c + asm a in-line asm a nepovedlo 
se ani jedno přeložit.
http://community.silabs.com/t5/8-bit-MCU-Knowledge-Base/Mixing-C-and-Assembly-Code/ta-p/110793
Ve starém dosovském Keilu jsem běžně kombinaci c + asm používal :-(

Anděl

Dne 1.5.2015 v 17:44 Vláďa Anděl napsal(a):
> Dobrý den,
> půl dne vymýšlím co s tím, aby mi fungovalo propojení c a asm v IDE od 
> Silabsu. Nevím, co dělám špatně. V dobách kdy jsem používal starý 
> dosovský Keil, kombinoval jsem c + asm takhle:
> ..............................................................................
> začátek C
>
> #pragma DB OE
> #pragma code
> #pragma print
>
> #include <reg51.h>
> extern void ZOBR(void);
> ...............................................................................
> začátek asm
>
> NAME    ROT
> PUBLIC    ZOBR
> USING    0
>
> DISPLEJ   SEGMENT    CODE
> RSEG    DISPLEJ
> EXTRN DATA    (Bufdisp)
>
> clk7s       EQU    P3.3    ; displej 7 segm
> datad       EQU    P3.1    ; data
>
> ZOBR:    MOV     R6,     #6               ;pocet pozic displeje
>                 MOV     R0,     #Bufdisp    ;pocatecni adresa dat
> ZOB1:    MOV     R7, #8                   ;pocet bitu v bajtu
>                 MOV     A, @R0                 ;zobrazena data
> ...............................................................................................
> Jenže v IDE od Silabsu (v tom jejich starším 4.90.00) to nefunguje. 
> Samotný c a asm se přeloží správně, ale když spustím build all, napíše to
> WARNING L1  UNRESOLVED EXTERNAL SYMBOL
> SYMBOL: ZOBR
> MODULE: C:\ ...... regdrn.obj
>
> WARNING L2  REFERENCE MADE TO UNRESOLVED EXTERNAL
> SYMBOL: ZOBR
> ADRESS: 04A7H
>
> Něco jsem o tom našel tady
> http://www.keil.com/support/docs/1671.htm
>
> a do hlavičky asm jsem doplnil
> EXTRN   CODE (Dispint)
> což je název funkce, odkud se ZOBR volá z céčka. Dělá to stále to samé.
> Není mi jasné, jak v tom příkladu mají název funkce
> ?PR?a_func?A_FUNC
> jestli jim to jen takhle vygeneroval překladač, nebo je potřeba 
> dodržet nějakou konstrukci názvu?
>
> Také jsem jsem našel, že lze použít i inline asm. Vložil jsem tedy asm 
> takhle
>
> //ZOBR();   // puvodni zobrazeni buferu na displej
> #pragma asm
>         MOV        R6,    #6          ;pocet pozic displeje
>         MOV        R0,    #Bufdisp    ;pocatecni adresa dat
>
> ZOB1: MOV    R7, #8             ;pocet bitu v bajtu
>         MOV        A,    @R0         ;zobrazena data
>         INC          R0                     ;dalsi pozice
> ZOB2:   RRC        A
>         MOV    datad,C                ;CARRY DO  DATA
>         CLR      clkd                     ;UKONCENI CLK
>         SETB    clkd                     ;ZACATEK CLK IMPULZU
>         DJNZ     R7, ZOB2
>         DJNZ    R6, ZOB1
> #pragma endasm
> }
>
> Tam mi to zase píše
> ERROR C272 IN LINE 371 OF regdrn2.c   'asm/endasm requires src-control 
> to be active
> ERROR C272 IN LINE 388 OF regdrn2.c   'asm/endasm requires src-control 
> to be active
>
> a marně hledám, kde src-control zapnout.
>
> Dokáže mi někdo poradit co s tím?
>
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150502/e461e075/attachment.html>


Další informace o konferenci Hw-list