Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Программирование вручную. Дополним полученную с помощью CodeWizard программу для МК-передатчика следующим кодом:
Дополним полученную с помощью CodeWizard программу для МК-передатчика следующим кодом:
- Подключение библиотек: #include < mega16.h> #include < stdio.h>
- Задание глобальных переменных: char massiv[6]={'v', 's', 'e', '_', 'o', 'k'}; //массив передаваемых данных – 6 символовbit on =0; // кнопка нажатаint i =0;Здесь переменная on типа bit учитывает «залипание» кнопки.
- Инициализация микроконтроллера: void MC_UNIT (void){UCSRA=0x00; UCSRB=0x48; // 8 - 1< < TXEN; 1 - Разрешение передачи, активирует выход TXD // 4 - 1< < TXCIE; - Разрешение прерывания по завершению передачиUCSRC=0x86; //6 - 1< < UCSZ1 и 1< < UCSZ0 - 8 бит данных в посылке, //8 - 1< < URSEL - выбор регистра UCSRC, «0» в 6-ом бите– асинхронный режимUBRRH=0x00; UBRRL=0x06; // скорость передачи 9600 бод = 1000000/16/6 = 10416, что почти = 9600, //с погрешностью 7% }Здесь заданы: Communication Parameters: 8 Data, 1 Stop, No Parity USART Receiver: Off USART Transmitter: On USART Mode: Asynchronous USART Baud Rate: 9600
- Задание функции передачи данных PEREDACHA: unsigned char PEREDACHA (void){ { if(PINC.0==0 & & on==0) // если нажата кнопка { UDR = massiv[i]; // записываем i-ый символ массива в регистр передачи данных UDR, i++; if(i> 5) // если переданных символов больше 6 (i от 0 до 5), { i=0; //то возвращаемся к 1-му символу массива } on=1; //введён запрет нажатия кнопки } if(PINC.0! =0) { on=0; // разрешение нажатия кнопки } } return massiv[i]; }
Теперь в основной функции main вызываем функцию инициализации, а в бесконечном цикле while - функцию передачи данных: void main(void){MC_UNIT(); while(1) { PEREDACHA(); }}В данной программе при каждом нажатии кнопки МК – передатчика, он отправляет один символ из массива massiv[6]={'v', 's', 'e', '_', 'o', 'k'} в МК – приёмник. Код показан на рис. 26.
Рис.26 - Код МК - передатчика
5.1.2 Код программы МК – приёмника
|