[sape]

Atmega88 мигающий светодиод

Здравствуйте, давайте запрограммируем микросхему Atmega88 и заставим светодиод мигать. Код программы и hex файл можно скачать ниже.

Код программы:

/*
 * 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 его можно скачать – здесь.

Схема подключения светодиода:

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:

Добавить комментарий