7 votos

Presentación de texto de un byte

He visto en muchos proyectos una presentación genial de byte como :

      Fuse high byte:  
      0xc9 = 1 1 0 0   1 0 0 1 -- BOOTRST (boot reset vector at 0x0000)  
             ^ ^ ^ ^   ^ ^ ^------ BOOTSZ0  
             | | | |   | +-------- BOOTSZ1  
             | | | |   + --------- EESAVE (don't preserve EEPROM over chip erase)  
             | | | +-------------- CKOPT (full output swing)  
             | | +---------------- SPIEN (allow serial programming)  
             | +------------------ WDTON (WDT not always on)  
            +-------------------- RSTDISBL (reset pin is enabled)  

o

    Fuse low byte:
     0x9f = 1 0 0 1   1 1 1 1
            ^ ^ \\ /   \\--+--/
            | |  |       +------- CKSEL 3..0 (external >8M crystal)
            | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
            | +------------------ BODEN (BrownOut Detector enabled)
            +-------------------- BODLEVEL (2.7V)

Me pregunto si alguien puede decirme cómo o dónde puedo hacer algunos de estos.

editar : Quiero decir, a menudo veo ese tipo de presentación en formato de texto, así que supongo que no está hecha a mano. Estaba esperando encontrar el software/url para generar el samme.

5voto

jwalkerjr Puntos 828

Puedes jugar con algo con graphviz y punto. Esas son las herramientas que doxygen utiliza para crear los diagramas. No es exactamente lo que estás buscando, pero es rápido y fácil de script y el resultado es bastante bonito (aunque es un poco difícil seguir algunas líneas...)


Este ejemplo generará algo así

alt text

Para ello, primero hay que crear un archivo llamado byte.dot

digraph structs { 
node [shape=plaintext] 

struct1 [label=< 
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" ALIGN="left">  
    <TR>
        <TD>0xc9</TD>
        <TD PORT="f0"> 1 </TD>
        <TD PORT="f1"> 1 </TD>
        <TD PORT="f2"> 0 </TD>
        <TD PORT="f3"> 0 </TD>

        <TD PORT="f4"> 1 </TD>
        <TD PORT="f5"> 0 </TD>
        <TD PORT="f6"> 0 </TD>
        <TD PORT="f7"> 1 </TD>
    </TR> 
</TABLE>>]; 

struct2 [label=< 
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" >  
    <TR> <TD ALIGN="left" PORT="f0"> RSTDISBL (reset pin is enabled) </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f1"> WDTON (WDT not always on) </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f2"> SPIEN (allow serial programming)  </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f3"> CKOPT (full output swing) </TD> </TR>

    <TR> <TD ALIGN="left" PORT="f4"> EESAVE (don't preserve EEPROM over chip erase)  </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f5"> BOOTSZ1 </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f6"> BOOTSZ0 </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f7"> BOOTRST (boot reset vector at 0x0000) </TD> </TR>
</TABLE>>]; 

struct1:f0:s -> struct2:f0:w;
struct1:f1:s -> struct2:f1:w;
struct1:f2:s -> struct2:f2:w; 
struct1:f3:s -> struct2:f3:w;

struct1:f4:s -> struct2:f4:w;
struct1:f5:s -> struct2:f5:w;
struct1:f6:s -> struct2:f6:w; 
struct1:f7:s -> struct2:f7:w;
} 

A continuación, ejecute uno de esos comandos.

dot -Tpng byte.dot -o byte.png 
dot -Tps  byte.dot -o byte.ps

¿Quizás sea más bonito si no cruzamos todas las líneas del medio?

alt text

Acabo de cambiar el nombre de la segunda tabla de f0..f7 a f7..f0.

<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" >
    <TR> <TD ALIGN="left" PORT="f7"> RSTDISBL (reset pin is enabled) </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f6"> WDTON (WDT not always on) </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f5"> SPIEN (allow serial programming)  </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f4"> CKOPT (full output swing) </TD> </TR>

    <TR> <TD ALIGN="left" PORT="f3"> EESAVE (don't preserve EEPROM over chip erase)  </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f2"> BOOTSZ1 </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f1"> BOOTSZ0 </TD> </TR>
    <TR> <TD ALIGN="left" PORT="f0"> BOOTRST (boot reset vector at 0x0000) </TD> </TR>
</TABLE>>];

5voto

RelaXNow Puntos 1164

Es una forma bastante tediosa de mostrar los campos de un número binario. Aquí hay un fragmento de código fuente real que muestra cómo lo hago:

         setreg  b'00010000', eccp1as
                 ; 0-------  clear any existing shutdown event
                 ; -001----  shut down PWM on comparator 1 high
                 ; ----00--  P1A and P1C shutdown state is low
                 ; ------00  P1B and P1D shutdown state is low

         setreg  b'10000000', pwm1con
                 ; 1-------  auto restart once shutdown condition goes away
                 ; -0000000  no restart delay

         setreg  b'00000001', pstrcon
                 ; XXX-----  unused
                 ; ---0----  output pin steering takes effect immediately
                 ; ----0---  P1D pin not driven, has normal port function
                 ; -----0--  P1C pin not driven, has normal port function
                 ; ------0-  P1B pin not driven, has normal port function
                 ; -------1  P1A pin drive from PWM signal

Creo que esto es más fácil que tu elaborado ejemplo, pero sigue mostrando la misma información. Sí, realmente escribo el código así.

4voto

letronje Puntos 128

En su editor de texto favorito. Puedo recomendar vim .

2voto

merriam Puntos 67

Puede utilizar Gliffy un paquete en línea similar a Visio. Hice parte de su diagrama en unos dos minutos: http://www.gliffy.com/pubdoc/2237997/L.png

2voto

Arjun Attam Puntos 82

http://docs.codehaus.org/display/GEOTDOC/Closest+Punto+en+una+línea parece discutir la solución a su problema.

--- actualización por el autor de esa página --

Esta página ha sido adaptada a la documentación basada en sphinx:

Esa página sólo repasa cómo se pueden utilizar las clases del STC para ajustarse a una línea.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X