<html>
<head>
<meta content="text/html; charset=iso-8859-2"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">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.<br>
<br>
Co jsem ještě našel na stránce Silabsu:<br>
<a class="moz-txt-link-freetext" href="http://community.silabs.com/t5/Simplicity-Studio-and-Software/requires-src-control-to-be-active/td-p/47583">http://community.silabs.com/t5/Simplicity-Studio-and-Software/requires-src-control-to-be-active/td-p/47583</a><br>
Keil údajně dobře nezvládá in line asm, zapnout <span
style="font-style:" italic="">active src-control je taky problém
a když jsem to podle tohoto návodu změnil, taky to nešlo.<br>
Propojení samostatného asm souboru s céčkem je taky asi
duchařina :-( <br>
<a class="moz-txt-link-freetext" href="http://www.keil.com/support/docs/1671.htm">http://www.keil.com/support/docs/1671.htm</a><br>
Doporučují nejdřív vytvořit src a ten si pak přepsat něčím svým.
<br>
<br>
Vzal jsem dva hotové příklady na mixed c + asm a in-line asm a
nepovedlo se ani jedno přeložit. <br>
<a class="moz-txt-link-freetext" href="http://community.silabs.com/t5/8-bit-MCU-Knowledge-Base/Mixing-C-and-Assembly-Code/ta-p/110793">http://community.silabs.com/t5/8-bit-MCU-Knowledge-Base/Mixing-C-and-Assembly-Code/ta-p/110793</a><br>
Ve starém dosovském Keilu jsem běžně kombinaci c + asm používal
:-( </span> <br>
<br>
Anděl<br>
<br>
Dne 1.5.2015 v 17:44 Vláďa Anděl napsal(a):<br>
</div>
<blockquote cite="mid:55439F53.4030900@vaelektronik.cz" type="cite">
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-2">
<font face="Times New Roman">Dobrý den,<br>
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:<br>
..............................................................................<br>
začátek C<br>
<br>
#pragma DB OE<br>
#pragma code<br>
#pragma print<br>
<br>
#include <reg51.h> <br>
extern void ZOBR(void);<br>
...............................................................................<br>
začátek asm<br>
<br>
NAME ROT<br>
PUBLIC ZOBR<br>
USING 0<br>
<br>
DISPLEJ SEGMENT CODE<br>
RSEG DISPLEJ<br>
EXTRN DATA (Bufdisp)<br>
<br>
clk7s EQU P3.3 ; displej 7 segm<br>
datad EQU P3.1 ; data<br>
<br>
ZOBR: MOV R6, #6 ;pocet pozic displeje<br>
MOV R0, #Bufdisp ;pocatecni adresa
dat<br>
ZOB1: MOV R7, #8 ;pocet bitu v bajtu<br>
MOV A, @R0 ;zobrazena data<br>
...............................................................................................<br>
</font><font face="Times New Roman">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<br>
WARNING L1 UNRESOLVED EXTERNAL SYMBOL<br>
SYMBOL: ZOBR<br>
MODULE: C:\ ...... regdrn.obj<br>
<br>
</font><font face="Times New Roman"><font face="Times New Roman">WARNING
L2 REFERENCE MADE TO UNRESOLVED EXTERNAL</font><br>
</font><font face="Times New Roman"><font face="Times New Roman">SYMBOL:
ZOBR<br>
ADRESS: 04A7H<br>
</font><br>
Něco jsem o tom našel tady<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://www.keil.com/support/docs/1671.htm">http://www.keil.com/support/docs/1671.htm</a><br>
<br>
a do hlavičky asm jsem doplnil<br>
EXTRN CODE (Dispint) <br>
což je název funkce, odkud se ZOBR volá z céčka. Dělá to stále
to samé.<br>
Není mi jasné, jak v tom příkladu mají název funkce <br>
?PR?a_func?A_FUNC<br>
jestli jim to jen takhle vygeneroval překladač, nebo je potřeba
dodržet nějakou konstrukci názvu?<br>
<br>
Také jsem jsem našel, že lze použít i inline asm. Vložil jsem
tedy asm takhle<br>
<br>
//ZOBR(); // puvodni zobrazeni buferu na displej<br>
#pragma asm<br>
MOV R6, #6 ;pocet pozic displeje<br>
MOV R0, #Bufdisp ;pocatecni adresa dat<br>
<br>
ZOB1: MOV R7, #8 ;pocet bitu v bajtu<br>
MOV A, @R0 ;zobrazena data<br>
INC R0 ;dalsi pozice<br>
ZOB2: RRC A <br>
MOV datad,C ;CARRY DO DATA <br>
CLR clkd ;UKONCENI CLK
<br>
SETB clkd ;ZACATEK CLK IMPULZU
<br>
DJNZ R7, ZOB2 <br>
DJNZ R6, ZOB1 <br>
#pragma endasm<br>
}<br>
<br>
Tam mi to zase píše<br>
ERROR C272 IN LINE 371 OF regdrn2.c 'asm/endasm requires
src-control to be active<br>
</font><font face="Times New Roman"><font face="Times New Roman">ERROR
C272 IN LINE 388 OF regdrn2.c 'asm/endasm requires
src-control to be active<br>
<br>
a marně hledám, kde src-control zapnout. <br>
<br>
Dokáže mi někdo poradit co s tím?<br>
</font><br>
<br>
</font> <br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
<br>
</body>
</html>