<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <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 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>
  </body>
</html>