Как стать автором
Обновить

Pyastra — транслятор кода на языке Python в ассемблер для архитектуры PIC

Чулан
Pyastra — это транслятор кода на языке Python в ассемблер. Он принимает исходный файл, написанный на Python и, если код не содержит ошибок, то генерирует ассемблерный файл, который вы можете скомпилировать в HEX-файл, используя ваш любимый PIC ассемблер (gpasm, mpasm или другие, совместимые с ними).

image

image

Поддерживаемые микроконтроллеры и процессоры


Все микроконтоллеры семейства PIC12, PIC14 и PIC16.

Пример


Исходный код (Порт A, pin 0 мигает бесконечно):

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

    for i in xrange(0,255):
        pass


Ассемблерный код на выходе

;
; 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


Официальный сайт: pyastra.sourceforge.net
Скачать можно отсюда: sourceforge.net/projects/pyastra/files
Теги:pythonassemblerтранслятор
Хабы: Чулан
Всего голосов 7: ↑6 и ↓1 +5
Просмотры1.2K

Похожие публикации

Разработчик Python
от 160 000 до 200 000 ₽C-Executives LLCМоскваМожно удаленно
Разработчик Python
от 80 000 до 150 000 ₽СтратоСфераЗеленоград
Python Developer/ Разработчик Python
от 200 000 ₽ТрансКонтейнерМосква
Разработчик Python
от 150 000 ₽СИТИЛАБМожно удаленно
Python developer
от 150 000 до 150 000 ₽C.NordСанкт-ПетербургМожно удаленно

Лучшие публикации за сутки