CODE:
#include <avr/io.h> // стандартные библиотеки
#include <util/delay.h>
#include "uart_driver.c" // собственно моя библиотечка
#define F_CPU 1000000UL // частота МК
#define MAX_LINE_LENGHT 40 // макрос определения максимальной длины строки ввода/вывода
int main(void)
{
char name[MAX_LINE_LENGHT]; // строка в которой будет храниться имя пользователя
unsigned int delete; // метка которое указывает сколько по что удалять
uart_init(9600); // в качестве параметра функция принимает //бауд-рейт
uart_write("UART INIT COMPLET...\r"); // выводим сообщение об успешной инициализаций
uart_write("START WHILE!"); // начало главного цикла
delete = cSend; // сSend – счетчик отправленных символов, здесь мы вставляем //метку которая указывает по что удалять
while (1)
{
uart_write("\rHellow! My name is Linch! What you the name? "); // Привет! Меня зовут Линч! Как тебя зовут (перевод)
uart_readln(name); // cохраняем имя в строке name (после ввода имени нужно //нажать enter)
uart_write(name); uart_write(" it's cool name! \r");
uart_wait("Plees press enter...\r", '\r'); // Выводим сообщение и ждем
//нажатия клавиши (в данном случае enter'a)
for (int i = 1; i <= 3; i++)
{
uart_write_int(i); uart_putc('\!');
_delay_ms(1000);
uart_write("\b\b");
}
uart_write("\rRESTART WHILE!");
_delay_ms(1000);
uart_clr(delete);
}
return 0;
}
#include <avr/io.h> // стандартные библиотеки
#include <util/delay.h>
#include "uart_driver.c" // собственно моя библиотечка
#define F_CPU 1000000UL // частота МК
#define MAX_LINE_LENGHT 40 // макрос определения максимальной длины строки ввода/вывода
int main(void)
{
char name[MAX_LINE_LENGHT]; // строка в которой будет храниться имя пользователя
unsigned int delete; // метка которое указывает сколько по что удалять
uart_init(9600); // в качестве параметра функция принимает //бауд-рейт
uart_write("UART INIT COMPLET...\r"); // выводим сообщение об успешной инициализаций
uart_write("START WHILE!"); // начало главного цикла
delete = cSend; // сSend – счетчик отправленных символов, здесь мы вставляем //метку которая указывает по что удалять
while (1)
{
uart_write("\rHellow! My name is Linch! What you the name? "); // Привет! Меня зовут Линч! Как тебя зовут (перевод)
uart_readln(name); // cохраняем имя в строке name (после ввода имени нужно //нажать enter)
uart_write(name); uart_write(" it's cool name! \r");
uart_wait("Plees press enter...\r", '\r'); // Выводим сообщение и ждем
//нажатия клавиши (в данном случае enter'a)
for (int i = 1; i <= 3; i++)
{
uart_write_int(i); uart_putc('\!');
_delay_ms(1000);
uart_write("\b\b");
}
uart_write("\rRESTART WHILE!");
_delay_ms(1000);
uart_clr(delete);
}
return 0;
}
Постоянные ссылки:
-Библиотека для работы с UART (Си , WinAVR); == 5 KB
-Библиотека + тестовая программа + прошивка (Си, WinAVR); == 15 KB
Вот такие проги . В будущем планирую создать библиотеки для каждого модуля (АЦП, ШИМ, Таймеры, SPI и т.д. и т.п.). Все вопросы, пожелания, предложения, (жалобы!?) прошу отправлять в ящик sciencefan@yandex.com, или пишите в комментариях. Весь код является полностью открытым(Open Source, однако . Код хорошо комментирован, полное описание находится в самом файле библиотеки. Если есть идей что можно добавить, убрать, оптимизировать пишите вместе и обсудим. При копирование/распространений прошу указывать автора (то есть меня). С уважением Савчук Александр…
(Добавление)
Прошу извинить за некрасивое форматирование кода. В исходниках все красиво :-)