Заставим микроконтроллер Atmega88 мигать одними светодиодами, другими просто светить, а другими просто не гореть. Напишем код на С. Hex файл для программирования можно скачать ниже.
Распиновка Atmega88:
Фьюзы не трогал – стандартные (по умолчанию):
Примечание: это прога AVR8_Burn-O-Mat, так как программировал в Linux Rosa Fresh, но для PonyProg2000 фьюзы будут такими же.
Код на Си следующий:
#include <avr/io.h> #include "delay.h" #include "delay.c" #define F_CPU 16000000UL // 1 MHz скорость микроконтроллера int main(void) { DDRC = 0xFF; //PORTC все порты работают как выход while(1) //бесконечный цикл { PORTC = 0b0011000; //зажигаем светодиоды на портах PC3 и PC4 _delay_ms(100); //задержка PORTC= 0b0011011; //зажигаем светодиоды на портах PC3 и PC4, а также PC0 и PC1 _delay_ms(100); //задержка } }
PORTC = 0b0011000
Здесь префикс 0b идентифицирует следующее за ним число как двоичное, а порядковый номер бита отвечает номеру бита внутри порта. То есть последний (крайний правый) разряд этого числа соответствует PC0, предпоследний – PC1 и т. д. Как итог: PC3 и PC4 настроен как выход, все остальные разряды (PC1…PC6) – как высокоимпедансные входы.
Поскольку порт С в Atmega8 содержит не 8 разрядов, а 7, то и количество битов в двоичном коде равно 7.
Скачать hex файл можно здесь – скачать в zip архиве – скачать в tar.gz архиве.
Примечание: Писал код на AVRStudio 4.
При программировании светодиоды лучше отключать на плате.
Программатор – 5 проводков, но в данном случае использовал самодельный AVRasp.