// Определение регистров ввода-вывода для ATS0S8515
#include <90sS815.h>
// Частота кварцевого резонатора [Гц]
#define xtal 4000000
// Частота переключения светодиодов [Гц]
#define fmove 2
// Включить светодиод на линии 0 порта P0RTB
unsigned char led_status=0xfe;
// Процедура обработки прерывания по переполнению таймера TIMER1
// вызывается каждые 0,5с
interrupt [TIM1_OVF] void timer1_overflow(void)
{
// preset again TIMER1
TCNT1=0x10000-(xtal/1024/fmove);
// move the LEO
led_status<<=1;
led_status|=1;
if (led_status==0xff) led_status=0xfe;
// turn on the LED
P0RTB=led_status:
}
void main(void)
{
// Инициализация портов ввода-вывода
// Все выводы порта PORTB настроены на вывод информации
DDRB=0xff;
// Включить первый светодиод
PORTB=led_status,
// Инициализация таймера TIMER1
// Таймер TIHER1 отсоединен or линии OC1
// не включен режим широтно-импульсной модуляции PWM
TCCR1А=0;
// Частога таймера TIMER1 xtal/1024
TCCR1B=5;
// Предустановим значение таймера TIMER1
TCNT1=0x10000-(xtal/1024/fmove);
// Очистить флаги прерываний по таймеру
TIMER1 TIFR=0;
// Разрешить прерывания по переполнению таймера TIMER1
TIMSK=0x80;
// Все остальные виды прерываний запрещены
GIMSK=0;
// Разрешение глобальных прерываний
#fasm
sei
#endasm
// Бесконечный цикл, при этом возможно возникновение прерываний по переполнению таймера TIMER1
while (1);
}
Измеренное значение передается с помощью интерфейса RS232. Параметры интерфейса: 9600 8N1.
Материал взят из демонстрационной версии компилятора CodeVisionAVR С Compiler, автором которого является Pavel Haiduc, HP InfoTech S.R.L.
Частота кварцевого резонатора: 4,000 МГц.
Подсоединение МАХ 1241 KAT90S8515.
Программатор после программирования контроллера должен быть отсоединен.
Текст программы: