Здравствуйте, давайте запрограммируем микросхему Atmega88 и заставим светодиод мигать. Код программы и hex файл можно скачать ниже.
Вариант 1:
Мигать будут все светодиоды на порте С (ножки 23-28).
Код программы:
/* * LED blink.c * * Created: 06.04.2020 21:31:26 * Author : Mudji */ #ifndef F_CPU #define F_CPU 1000000UL // 1 MHz clock speed #endif #include <avr/io.h> #include <util/delay.h> int main(void) { DDRC = 0xFF; //Nakes PORTC as Output while(1) //infinite loop { PORTC = 0xFF; //Turns ON All LEDs _delay_ms(1000); //1 second delay PORTC= 0x00; //Turns OFF All LEDs _delay_ms(1000); //1 second delay } }
Прошивал с помощью самодельного программатора 4 проводка – как его сделать читайте здесь.
Тамже описано как с помощью данного программатора и бесплатной программы PonyProg прошить любую микросхему AVR.
Для прошивки Вам понадобиться готовый файл hex его можно скачать – здесь.
Схема подключения светодиода:
Вариант 2:
Мигать будет только ножка 23 (RC0)
Скачать файл hex и c – делал на AVRStudio 4 все файлы в архиве:
Скачать zip архив.
Скачать tar.gz архив.
Код на C:
/* * LED blink.c * * Created: 06.04.2020 21:31:26 * Author : Mudji */ #include <avr/io.h> #include "delay.h" #include "delay.c" #define F_CPU 16000000UL // 1 MHz clock speed int main(void) { DDRC|=(1<<0); //Nakes PORTC as Output while(1) //infinite loop { PORTC|=(1<<PC0); //Turns ON All LEDs _delay_ms(1000); //1 second delay PORTC&=~(1<<PC0);; //Turns OFF All LEDs _delay_ms(1000); //1 second delay } }
——————————
PS: Ещё один код с мигающими светодиодами на выходах PB0,PB1,PB2 скачать hex – здесь.
Код файла на С:
#include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000UL //processor frequency 1MHz #include <util/delay.h> #include <stdbool.h> #define output_low(port,pin) port &= ~(1<<pin) #define output_high(port,pin) port |= (1<<pin) #define set_input(portdir,pin) portdir &= ~(1<<pin) #define set_output(portdir,pin) portdir |= (1<<pin) int main(void) { set_output(DDRB, PB0); set_output(DDRB, PB1); set_output(DDRB, PB2); output_high(PORTB, PB0); output_high(PORTB, PB1); output_high(PORTB, PB2); while(1); return 0; }
Как сделать из кода С – hex файл в картинках в MPLAB X IDE v6.00: