1. Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.
    Dismiss Notice

Flow Charting Software

Discussion in 'Circuit Simulation & PCB Design' started by jpanhalt, Jan 29, 2018.

  1. Inquisitive

    Inquisitive Super Moderator

    Joined:
    Aug 31, 2011
    Messages:
    1,096
    Likes:
    100
    Location:
    Georgia, USA
    I have no affiliation with yEd.

    yEd can easily add/append extra flow chart items as needed. With a minimum amount of fuss and tinkering. Groups of symbols can be moved at will with flow lines being maintained.
     
  2. jpanhalt

    jpanhalt Well-Known Member Most Helpful Member

    Joined:
    Jun 21, 2006
    Messages:
    6,280
    Likes:
    555
    Location:
    Cleveland, OH, USA
    Well, I am still skeptical about any flowchart software converting a chart to Assembly code -- assuming one uses English and does not simply enter the Assembly instructions in sequence. Attached is a pdf of a flowchart I did awhile ago for some code from a well known member here for a GLCD.

    I would like to see the Assembly results from only a small part of that chart that involves branches. Device = Mid-range PIC

    John
     

    Attached Files:

  3. jpanhalt

    jpanhalt Well-Known Member Most Helpful Member

    Joined:
    Jun 21, 2006
    Messages:
    6,280
    Likes:
    555
    Location:
    Cleveland, OH, USA
    Had some time this morning so I tried yEd. Instruction manual is pretty meager, but the program is intuitive with a few "personalities" of its own. Bottom line, here is my first effort after about 1 hour (maybe I am a slow learner): Read Switch.pdf

    Would love to see the Assembly code made by Great Cow Basic for a part of that or the LCD initialization.

    As for yEd, I am still using the online version.

    John

    Edit:
    MCU = PIC16F1829
    Switches are on PortB , SW1=RB5, SW2=RB7, both are positive edge IOC, "flag" =IOCBF, interrupts not enabled
    Print = common 2x16 serial LCD ("Put232")
     

    Attached Files:

    Last edited: Feb 2, 2018
  4. dave miyares

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    2
    Likes:
    -10
  5. Ian Rogers

    Ian Rogers User Extraordinaire Forum Supporter Most Helpful Member

    Joined:
    Mar 28, 2011
    Messages:
    9,805
    Likes:
    958
    Location:
    Rochdale UK
    Here is the graphical interface.
    Capture.jpg

    Here is the code generated.

    Code (asm):

    ;Program compiled by Great Cow BASIC (0.98.01 2017-10-27)
    ;Need help? See the GCBASIC forums at http://sourceforge.net/projects/gcbasic/forums,
    ;check the documentation or email w_cholmondeley at users dot sourceforge dot net.
    ;********************************************************************************
    ;Set up the assembler options (Chip type, clock source, other bits and pieces)
     LIST p=16F628A, r=DEC
    #include <P16F628A.inc>
     __CONFIG _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDTE_OFF & _FOSC_INTOSCIO
    ;********************************************************************************
    ;Vectors
     ORG 0
     pagesel BASPROGRAMSTART
     goto BASPROGRAMSTART
     ORG 4
     retfie
    ;********************************************************************************
    ;Start of program memory page 0
     ORG 5
    BASPROGRAMSTART
    ;Call initialisation routines
     call INITSYS
    ;Automatic pin direction setting
     banksel TRISB
     bcf TRISB,0
    ;Start of the main program
     bsf TRISA,1
    SysDoLoop_S1
     banksel PORTA
     btfss PORTA,1
     goto ELSE1_1
     bsf PORTB,0
     goto ENDIF1
    ELSE1_1
     bcf PORTB,0
    ENDIF1
     goto SysDoLoop_S1
    SysDoLoop_E1
    BASPROGRAMEND
     sleep
     goto BASPROGRAMEND
    ;********************************************************************************
    INITSYS
     movlw 7
     movwf CMCON
     clrf PORTA
     clrf PORTB
     return
    ;********************************************************************************

     END
     
     
    • Thanks Thanks x 1
  6. jpanhalt

    jpanhalt Well-Known Member Most Helpful Member

    Joined:
    Jun 21, 2006
    Messages:
    6,280
    Likes:
    555
    Location:
    Cleveland, OH, USA
    :D:D
    That might be the first time I have used sequential emoticons. Or, to paraphrase a recent American President, if you like it, you can keep it.;)

    upload_2018-2-2_10-45-4.png

    It looks to me like ordinary Assembly in Disney Technicolor .

    Seriously, thanks for doing it. I suspected it would be something like that.

    John
     
  7. jpanhalt

    jpanhalt Well-Known Member Most Helpful Member

    Joined:
    Jun 21, 2006
    Messages:
    6,280
    Likes:
    555
    Location:
    Cleveland, OH, USA
    Just FYI here's my rough code for the flow chart in post #23. John
    Code (asm):

    GetCode
         movlw     0xF0                ;avoids use of "count" register
         movwf     temp                ;put counter in temp
         movlb     0                   ;not necessary -- already |B0
         movlw     0x0C                ;form feed
         call      Put232              ;clear screen cursor at 0,0
         DelayCy   (5*msecs)
         StrPrint  "Enter Code: "      ;12 char +4 code, advances to line 1,0
    _Code                            
         lslf      temp,f    
         movlb     7                   ;check IOC flags                      
         clrf      IOCBF
         btfss     INTCON,IOCIF        ;wait for button push
         bra       $-1
         call      Debounce            ;short delay (optional)
         movlw     0x01
         btfss     IOCBF,SW1           ;not messed up if >1 switch set
         bcf       WREG,0  
         addwf     temp,f
         addlw     0x30
         call      Put232              ;print 0 or 1 , returns in |B0
    NextBit                      
         movf      PORTB,w
         andlw     0xA0                ;mask all but SW1(5) and SW2(7)
         btfss     STATUS,2            ;test for release of both switches
         bra       $-3                 ;wait for release
         movlb     7
         clrf      IOCBF               ;clears INTCON,IOCIF too
         btfsc     temp,7
         bra       _Code
         call      Confirm?            ;prints & returns with flag0,0 set(yes) or clear(no)
         btfss     flag0,0
         goto      Main                ;exit to Main
         bra       PutMode
    PutMode
         movf      temp,w
         brw
         goto      Default             ;return all registers to default, Status: untested
    ;and so forth  
     
     
  8. dave miyares

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    2
    Likes:
    -10
  9. MrAl

    MrAl Well-Known Member Most Helpful Member

    Joined:
    Sep 7, 2008
    Messages:
    11,097
    Likes:
    966
    Location:
    NJ
    Hello again,

    Maybe they didnt do the greatest job with that software, but this kind of thing is definitely something that can be done.
    With software for something like this you go from one abstraction layer to the next, each time getting closer to the target platform.
    With pseudo code, the next layer would be the target itself. The pseudo code is just another layer that goes from whatever form you need to a form that can be translated into any language.

    What bothered me about ASM was too much attention to detail was required, but with C there was not enough detail. So i set out to create a language that had benefits of C while maintaining enough detail to be able to read sort of like C. Here is an example of some code...
    byte A,B
    int16 C

    A=PortA
    B=A+2
    C=ReadAnalog(12)
    B>C?
    Goto Next

    The main point though is that it can translate this into ASM, and so the only thing a flow chart program has to do is either:
    1. Read the graph and generate the code as it finds the objects and connections,
    or:
    2. Keep track of objects and connections as they are created.

    It's not super easy to create a program like this, but it is definitely possible. A circuit simulator program does just this and on top of that has to solve the resulting equations. The circuit simulator program i wrote myself does just this. It 'reads' the schematic and that tells it what objects are in there as well as how they are connected. The first thing it does then is create a net list, and that is the "pseudo code" for that kind of application. So a flow graph would actually be easier to do than that.

    The hard part is the graphical user interface, everything else is cake. The GUI is hardest because you want to give the user a lot of options as to how they can draw their objects and manipulate them without taking too much time.
     
  10. eTech

    eTech Active Member

    Joined:
    Apr 25, 2012
    Messages:
    636
    Likes:
    72
    Hi

    Interesting posts...but what about going the other way?
    Suppose you have code and want to create a flowchart. Is there any software that will read the code and produce a flowchart?

    eT
     
  11. MrAl

    MrAl Well-Known Member Most Helpful Member

    Joined:
    Sep 7, 2008
    Messages:
    11,097
    Likes:
    966
    Location:
    NJ
    Hi,

    Yes interesting idea. Dont know of any myself yet though.
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice