Pyastra example

Source code (Port A, pin 0 blinks infinitely):


while(1):
    PORTA[0] = 1
   
    for i in xrange(0,255):
        pass
   
    PORTA[0] = 0

    for i in xrange(0,255):
        pass

Output assembler code:


;
; Generated by pyastra 0.0.1
; infile: led_blink.py
;

        processor       16c432
        #include        p16c432.inc
_lshift_left    equ     0x20    ;bank 0
_lshift_right   equ     0x21    ;bank 0
_rshift_left    equ     0x22    ;bank 0
_rshift_right   equ     0x23    ;bank 0
_mul_left       equ     0x24    ;bank 0
_mul_right      equ     0x25    ;bank 0
mul_cntr        equ     0x26    ;bank 0
mul_res equ     0x27    ;bank 0
_div_left       equ     0x28    ;bank 0
_div_right      equ     0x29    ;bank 0
div_cntr        equ     0x2a    ;bank 0
div_buf equ     0x2b    ;bank 0
_mod_left       equ     0x2c    ;bank 0
_mod_right      equ     0x2d    ;bank 0
mod_cntr        equ     0x2e    ;bank 0
mod_buf equ     0x2f    ;bank 0
_pow_left       equ     0x30    ;bank 0
_pow_right      equ     0x31    ;bank 0
pow_res equ     0x32    ;bank 0
pow_buf equ     0x33    ;bank 0
pow_cntr        equ     0x34    ;bank 0
stack0  equ     0x35    ;bank 0
_i      equ     0x36    ;bank 0
stack1  equ     0x37    ;bank 0
stack2  equ     0x38    ;bank 0
stack3  equ     0x39    ;bank 0
stack4  equ     0x3a    ;bank 0

        org     0x0

        goto    main

        org     0x5
main

label0
        movlw   0x1
        bcf     STATUS, RP0
        movwf   stack0
        bcf     STATUS, RP0
        btfsc   STATUS, Z
        goto    label1

        bcf     STATUS, RP0
        bsf     PORTA,  0
        bcf     STATUS, RP0
        clrf    _i
        movlw   0xff
        bcf     STATUS, RP0
        movwf   stack2
        bcf     STATUS, RP0
        movwf   st
label2
        bcf     STATUS, RP0
        movf    stack1, w
        bcf     STATUS, RP0
        subwf   _i,     w
        bcf     STATUS, RP0
        btfsc   STATUS, Z
        goto    label3
        bcf     STATUS, RP0
        btfsc   STATUS, C
        goto    label3

label4
        bcf     STATUS, RP0
        incf    _i,     f
        goto    label2

label3
        bcf     STATUS, RP0
        bcf     PORTA,  0
        bcf     STATUS, RP0
        clrf    _i
        movlw   0xff
        bcf     STATUS, RP0
        movwf   stack4
        bcf     STATUS, RP0
        movwf   stack3

label5
        bcf     STATUS, RP0
        movf    stack3, w
        bcf     STATUS, RP0
        subwf   _i,     w
        bcf     STATUS, RP0
        btfsc   STATUS, Z
        goto    label6
        bcf     STATUS, RP0
        btfsc   STATUS, C
        goto    label6

label7
        bcf     STATUS, RP0
        incf    _i,     f
        goto    label5

label6
        goto    label0

label1

        goto    $

        end