Нашёл я скудное количество полуживых форумов в рунете о программировании МК, задал в одном из них вопрос, но долго не могу получить ответа. Знаю что на лоре сидят спецы по всему. Поэтому вопрос на миллионь долларов :) такой:
Имеем Arduino (Atmega168). Задача заставить мигать светодид подключённый к контакту Dig.1 (он же PORTD1). При этом проверено что на других контактах порта D (PORTD2-PORTD7) всё работает как надо.
Код:
.device ATmega168
.include "m168def.inc"
.include "../include/sys.inc"
.equ PIN_LED = PD1 ; ножка на которую указывает светодиод (1)
.CSEG
.org 0x0000 ; начальный адрес программы
rjmp _RESET
.include "../include/delay.asm"
;****************************************************************
; начало программы
;****************************************************************
_RESET:
; инициализация стека
stack_init
/* настройка светодиода на вывод */
sbi DDRD,PIN_LED ; регистр направления данных (1 - вывод)
cbi PORTD,PIN_LED ; регистр данных - LOW, светодиод выключен
loop:
cbi PORTD,PIN_LED ; выключить светодиод
m_delay 500 ; выполнить задержку на 0,5 сек
sbi PORTD,PIN_LED ; включить светодиод
m_delay 500 ; выполнить задержку на 0,5 сек
rjmp loop ; зацикливание программы