Presentación de texto de un byte

7

He visto en muchos proyectos una presentación 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 algunas de estas.

edit: quiero decir, a menudo veo ese tipo de presentación en formato de texto, por lo que supongo que no se hace a mano. Estaba esperando encontrar el software / url para generar el samme.

    
pregunta jojo l'abricot

6 respuestas

5

Puedes jugar con algo con graphviz y dot. Esas son las herramientas que utiliza doxygen para crear los diagramas. No es exactamente lo que está buscando, pero es rápido y fácil de escribir y la salida es bastante atractiva (incluso si es un poco difícil seguir algunas líneas ...)

Este ejemplo generará algo como esto

Parahaceresto,primerocreaunarchivollamadobyte.dot

digraphstructs{node[shape=plaintext]struct1[label=<<TABLEBORDER="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;
} 

Luego ejecuta uno de esos comandos.

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

¿Quizás sería mejor si no cruzamos todas las líneas en el medio?

Acabodecambiarelnombreenlasegundatabladef0..f7af7..f0.

<TABLEBORDER="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>>];
    
respondido por el Johan
5

Es una forma bastante tedius de mostrar los campos en un número binario. Aquí hay un fragmento del 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 su ejemplo elaborado, pero aún muestra la misma información. Sí, realmente escribo código como este.

    
respondido por el Olin Lathrop
4

En tu editor de texto favorito. Puedo recomendar vim .

    
respondido por el Toby Jaffey
2

Puede usar Gliffy , un paquete en línea similar a Visio. En unos dos minutos, destruí parte de tu diagrama: enlace

    
respondido por el user1307
1

En el editor de Dos Navigator hay un modo de dibujo especial. Puede habilitar el dibujo de línea doble presionando F4, luego F4 nuevamente para una sola línea y nuevamente para deshabilitar. Puede dibujar líneas fácilmente con las teclas de cursor mientras mantiene presionada la tecla de cambio.

1 1 0 0   1 1 0 0 ───────┬┐
│ │   ║       ║ │        │├───────┐
│ │   ║       ║ └────────┴┘       │
│ │   ║       ║                   │
│ │   ║       ║                   │
│ │   ║       ║                   │
│ │   ║       ╚═════════════╗     │
│ │   ╚═════════════════════╝     │
│ │                               │
│ │                               │
│ └───────────────────────┬┐     ┌┘
│                 ┌┬┐┌┐  ┌┘└┐   ┌┘
└───────────────┐┌┤│││└┐┌┘  └┐ ┌┘
                └┘└┘└┘ └┘    └─┘
    
respondido por el csadam
0

ditaa hace lo que estás buscando. La siguiente imagen se genera a partir de su texto sin formato anterior.

Es posible que necesite un poco de edición para obtener el formato correcto ...

    
respondido por el J. Polfer

Lea otras preguntas en las etiquetas