Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Краткие теоретические сведения





Язык программирования СИ51 удовлетворяет стандарту ANSI CИ и предназначен для получения компактных и быстродействующих программ для микроконтроллеров семейства MCS-51. Он учитывает особенности построения аппаратуры этих микросхем. Язык СИ51 обеспечивает гибкость программирования на широко известном языке CИ, при скорости работы и компактности, сравнимой с программами, написанными на языке программирования ассемблер.

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

REG51.H – для среды KeilµVision;

io51.h.- для компилятора СИ51 ICC8051;

При написании программы для микроконтроллера всегда необходимо видеть перед глазами принципиальную схему устройства, для которого пишется программа, так как схема и программа тесно связаны между собой и дополняют друг друга. Для иллюстрации этого воспользуемся схемой, приведённой на рис. 1. К примеру, заставим светится светодиод VD1. Светодиод светится только тогда, когда через него протекает ток. Для этого на шестом выводе порта P0 должен присутствовать нулевой потенциал. Соответствующий программный модуль представлен ниже:

 

#include<REG51.h>

void main(void)

{P0=0; //Зажигание светодиода

while(1); //Бесконечный цикл

}

 

Эта программа содержит только один исполняемый оператор присваивания 'P0=0;', т.е. во все биты порта Р0 записываем нули. Следующий оператор “while(1);” обеспечивает зацикливание программы, которое было сделано для того, чтобы никакие действия больше не производились. В противном случае микроконтроллер перейдёт к следующей ячейке памяти и будет выполнять команды, которые мы не записывали.

Обратите внимание, что язык программирования «знает», где находится порт P0. Эта информация содержится в строке #include<REG51.h>.

Для работы с битами в СИ51 используются типы данных, приведенные в табл.1.

 

Таблица 1

Типы данных для работы с битами

Типы данных Размер Область значений
Бит Байт
bit     от 0 до 1
sbit     от 0 до 1
sfr     от 0 до 255
sfr16     от 0 до 65535

 


 

Рис. 1. Пример простейшей схемы устройства, построенного с использованием микроконтроллера

 

Типы данных включенные в табл. 1, не описаны стандартом ANSI, поэтому к ним нельзя обращаться при помощи указателей. Обращение к битам зависит от среды программирования. При работе с компилятором СИ51 ICC8051 к битам порта можно обращаться без предварительного описания; например, Р0.1 – обращение к первому биту нулевого порта. В среде KeilµVision - описание требуется.

Ключевое слово bit используется для объявления битовых переменных, смысл которых ясен из названия. Например:

bit mb;

Ключевое слово sbit используется очень часто в программах ВЕ51 для доступа к отдельным битам. Например, для среды KeilµVision можно использовать следующий вариант:

 

sbit bit0=P1^0;

 

Ключевое слово sfr применяется очень часто в программах ВЕ51 для обращения к отдельным битам специальных регистров. Например, для среды KeilµVision возможны следующие варианты:

 

sfr P0=0x60;

sfr TMOD=0x89.

 

Ключевые слова sbit, sfr используются для обращения к глобальным переменным.

Для примера заставим светится светодиод VD1 в зависимости от состояния тумблера (см. рис.1). Соответствующий программный модуль приведен ниже.

 

#include<reg51.h>

sbit sv=P0^6;

sbit t=P2^7;

void main(void)

{sv=t; //Зажигание светодиода в зависимости от

//состояния тумблера

while(1); //Бесконечный цикл

}

 

Заметим, что светодиод, подключенный к шестому выводу порта Р0 будет светиться, если тумблер, подсоединенный к выводу 7 порта Р2, будет опущен.

Задание 1. Проверьте работу рассмотренной выше программы.

 

С целью экономии ресурсов МК светодиоды и тумблеры можно подключить к одному порту через общую шину. Схема и соответствующий программный модуль приведены ниже.

Рис. 2. Пример простейшей схемы устройства, построенного с использованием микроконтроллера

 

При начальной установке все биты портов Р0-Р3 устанавливаются в 1. Следовательно, регистр, к которому подключены тумблеры, отключается от шины, т.к. а регистр, к которому подключены светодиоды, будет работать в режиме записи . На выходах D0:D7 этого регистра установятся единичные сигналы, и светодиоды окажутся погашенными (отсутствует разность потенциалов). Составим программу, которая обеспечивает ввод восьмибитного кода с тумблерного регистра и выдачу его на светодиоды.

 

#include <REG51.H>

 

sbit stb1=P1^5;

sbit stb2=P1^6;

sbit OE=P1^7;

 

main()

{

unsigned char x;

//схему D1 переводим в режим чтения

stb1=0;

//схему D2 переводим в режим записи

stb2=1;

//разрешаем информационную связь со схемой D2, и тем

//самым в регистр D2 и в порт Р0 записываем состояние

//тумблеров

OE=0;

//состояние порта Р0 сохраняем в переменной х

х=P0;

//переводим схему D2 в состояние чтения

stb2=0;

//отключаем схему D2 от шины

OE=1;

//инвертируем состояние х и записываем в порт Р0;

//схема D1 находится в состоянии записи;

//данные с Р0 запишутся в регистр и выведутся

//на светодиоды

P0=~x;

//схему D1 переводим в режим записи

stb1=1;

//бесконечный цикл

while(1);

}

Задание 2.

Разработайте МПС на базе МК ВЕ51, обеспечивающую ввод восьмибитного кода с тумблерного регистра и выдачу его на светодиоды в соответствии с вариантом задания. Напишите и отладьте соответствующий программный модуль.

Варианты заданий:

а) ШД – порт Р0, управляющие сигналы – Р2;

б) ШД – порт Р1, управляющие сигналы – Р0;

в) ШД – порт Р1, управляющие сигналы – Р2;

г) ШД – порт Р2, управляющие сигналы – Р0;

д) ШД – порт Р2, управляющие сигналы – Р1.

 

Задание 3. Подключите к МК ВЕ51 два контроллера параллельного ввода/вывода КР580ВВ55. Напишите программу инициализации контроллеров для случая работы всех каналов первого контроллера на ввод в режиме 0, а всех каналов второго контроллера на вывод в режиме 0. Отладьте программный модуль. Справочный материал для выполнения задания приведен на рис. 3, рис. 4 и в табл. 2.

Настройка контроллера осуществляется посредством управляющего слова. Вначале необходимо составить управляющее слово в соответствии со структурой, приведенной на рис. 4, а затем записать его в регистр управляющего слова (РУС). Соответствующая комбинация управляющих сигналов контроллера представлена в табл. 2.

Рис. 3. Программируемый периферийный адаптер К580ВВ55

 

Таблица 2

Основные операции ППА

 

Действие Сигналы управления Операции
А1 А0
Чтение          
           
           
Запись          
           
           
           
Отключение ШД и порты отключены

 

Рис. 4. Управляющее слово РЕЖИМ РАБОТЫ (УСРР) адаптера КР580ВВ55

Контрольные вопросы

1. Сколько портов ввода/вывода содержит МК ВЕ51?

2. Какое специальное назначение имеют порт Р0 и порт Р2 МК ВЕ51?

3. Каково функциональное назначение порта Р3?

4. Как обратиться к разряду порта на языке СИ51?

5. Как вывести число в порт МК ВЕ51?

6. Какие операции можно осуществлять над содержимым портов ввода/вывода ВЕ51?

7. Где реализованы порты ввода/вывода ВЕ51?

8. Что такое «принцип наложения сред» и с какой целью он используется в архитектуре однокристальных контроллеров?

 

Date: 2016-07-25; view: 351; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию