
Допустим, есть банальная задача написания кода для реагирования на нажатие кнопки, которая подключена к ножке микроконтроллера A. После нажатия на кнопку сигнал нажатой появится на ножке B и включится лампочка.
Схема подключения микроконтроллера
Код на ассемблере
; project.asm ; ; Created: 23.11.2017 16:49:01 ; Author : WebSofter ; .list .def temp = R16 ;Определяем переменный регистр .cseg ;Устанавливаем текущую рабочую память ;Настриваем PORT A ldi temp, 0x00 ;Записываем константу для DDRA out DDRA, temp ;В порт управления записываем 0. Будет работать на ввод ldi temp, 0xff ;Записываем константу для PORTA out PORTA, temp ;A порт вывода записываем 1. Будет полдключен внутренний резистор ;Настриваем PORT B ldi temp, 0xFF ;Записываем константу для DDRB out DDRB, temp ;В порт управления записываем 1. Будет работать на вывод ;Организуем бесконечный цикл чтения сигнала нажатия main: ;Метка цикла in temp, PINA ;Читаем сигналы с PIN out PORTB, temp ;Записываем в порт на вывод rjmp main ;Операция перехода к метке
Код на C/C++
/* * GccProject.c * * Created: 23.11.2017 21:39:37 * Author : WebSofter */ #include <avr/io.h> int main(void) { //Настрояка порта A DDRA = 0x00;//Установка напрвления на ввод PORTA = 0xFF;//Подключение внутреннего резистора //Настрояка порта B DDRB = 0xFF;//Устновка направления на вывод PORTB = 0xFF;//Начальная установка while (1) //Бесконечный цикл { PORTB = PINA;//Записываем нажатый пин из A в B } }