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


Все микроконтоллеры семейства PIC12, PIC14 и PIC16.
Официальный сайт: pyastra.sourceforge.net
Скачать можно отсюда: sourceforge.net/projects/pyastra/files


Поддерживаемые микроконтроллеры и процессоры
Все микроконтоллеры семейства 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