RLBN.ru - electronics banner network

 Уроки и статьи

Урок любезно предоставлен Сергеем (micro51)
Индивидуальное дистанционное обучение программированию микроконтроллеров.
Изучение устройства и функционирования микроконтроллера, языка
программирования, среды программирования, сборка макетов и проверка
работоспособности программ на них. Программы обучения и пробные
занятия можно получить по e-mail: micro51@mail.ru

AVR

  • Урок 2 - Формирование статических логических сигналов на выводах микроконтроллера

     Итак, напишем первую программу на ассемблере. Ниже изображена схема с использованием микроконтроллера AT90S8515. Целью первой программы будет – включать и выключать светодиоды.

     

     

    В качестве DD1 используйте панельку типа DIP40, ZQ1 – 4 МГц; C1, C2 – 30 пФ;  VD1,2 – АЛ307 или аналогичные; R1,2 – 270 Ом; SA1 – любая кнопка.

     Сейчас последовательно рассмотрим, как пишется программа на ассемблере. Создайте новый проект с помощью AVR Studio. В качестве Debug Platform выберите AVR Simulator, а в качестве Device – AT90S8515.

    Начнем создавать текст программы. Запишем следующие строки:

     

    .include "8515def.inc"     ; подключим файл с описаниями регистров

                rjmp RESET                                    ; вектор перехода при сбросе

    Первоначально мы подключили файл с символьными именами регистров для используемого микроконтроллера, а потом сформировали переход при сбросе.

    Теперь необходимо выбрать некоторый регистр из регистрового файла. Сним мы будем производить операции, а затем выдавать результаты в порт PC для управления светодиодами. Пусть это будет r16 и присвоим ему символьное имя «temp»:

     .include "8515def.inc"     ; подключим файл с описаниями регистров

                rjmp RESET                                    ; вектор перехода при сбросе

     .def temp =r16

     Теперь необходимо определить выводы порта PC как вход или выход. Поскольку требуется управление светодиодами по битам 0 и 1, то их необходимо запрограммировать на выход. Состояние остальных бит значения не имеет.

     .include "8515def.inc"     ; подключим файл с описаниями регистров

                rjmp RESET                                    ; вектор перехода при сбросе

     .def temp =r16

     RESET:

                ldi temp,0b00000011        ; определим PC<0> и PC<1> как выходы

                out DDRC,temp

     Для управления исполнительным устройством, работающим по принципу включено/выключено, на соответствующей выходной линии порта микроконтроллера (МК) необходимо сформировать статический сигнал 0 или 1.

    Например, если необходимо установить в состояние логической «1» нулевой бит порта PC (нулевой бит порта PC условно записывается как PC<0>), то можно записать требуемое значение в переменную temp, а затем вывести ее в порт.

     .include "8515def.inc"     ; подключим файл с описаниями регистров

                rjmp RESET                        ; вектор перехода при сбросе

     .def temp =r16

     RESET:

                ldi       temp,0b00000011  ; определим PC<0> и PC<1> как выходы

                Out     DDRC,temp

                 ldi       temp,0b00000001  ; зажигаем светодиод VD1

                out      PORTC,temp          

                И, наконец, необходимо создать цикл основной программы. В настоящем примере в нем ничего делаться не будет. Однако в дальнейших примерах там будет выполняться некоторая программа.

     .include "8515def.inc"     ; подключим файл с описаниями регистров

                rjmp   RESET          ; вектор перехода при сбросе

     .def temp =r16

     RESET:

                ldi       temp,0b00000011  ; определим PC<0> и PC<1> как выходы

                out      DDRC,temp

                 ldi       temp,0b00000001  ; зажигаем светодиод VD1

                out      PORTC,temp                 

    loop:                                                 ; основной цикл программы

                            rjmp loop

                Откомпилируйте программу с помощью команды Project -> Build (F7). Запрограммируйте микроконтроллер и убедитесь, что программа работает правильно (должен загореться светодиод VD1 после сброса микроконтроллера при нажатии на кнопку SA1).

     Вопросы и задачи. 

    1. Напишите команды для установки в «1» бита 2 порта PORTA.

    2. Напишите команды для установки битов порта PORTB в следующие состояния: бит 0 – 1; бит 1 – 1; бит 2 – 0; бит 3 – 1.

    3. Напишите и испытайте на макете работоспособность программы, которая зажигает светодиод VD2, а VD1 - нет.

    4. Напишите и испытайте на макете работоспособность программы, которая зажигает оба светодиода (VD1 и VD2)

    Скачать урок в WORD .

Hosted by uCoz