1. Что такое микроконтроллер
Микроконтроллер – это по сути маленький компьютер,
который как и его большой собрат может работать только по заданной ему
программе. Внутри у него есть все необходимое для самостоятельной
работы, вот основные составляющие микроконтроллера:
Итак начнем свое знакомство с конкретным МК, а именно с C8051F320. Почему именно с этим представителем семейства МК от Silabs? А потому что данный МК обладает достаточным количеством ОЗУ и ПЗУ, имеет встроенное 10-ти разрядное АЦП, 25/21 портов ввода/вывода с допустимым напряжением на выводах до 5В и высоким втекающим током, последовательные интерфейсы SPI, УАПП и SMBus, четыре 16-разрядных таймера/счетчика, программируемый массив 16-разрядных таймеров/счетчиков(ПМС) с пятью модулями захвата/сравнения, и даже USB-контроллер, что пригодится на в дальнейшем когда мы будем постепенно переходить от простых примеров к более сложным. Еще один большой плюс выбора именно этого МК это полностью переведенная на русский язык документация, что конечно очень важно для начинающего "микроконтроллерщика". Я также надеюсь не сильно напугал Вас, возможно незнакомым Вам понятиям и терминам, ничего не обращайте пока на них внимания, постепенно Вам все станет понятно и Вы сможете так же легко оперировать всякими "страшными" терминами. Вот блок схема внутренностей C8051F320/1: И фото нашего подопытного: А теперь, я на простом примере попытаюсь объяснить вам работу АЛУ. У вас наверняка возник вопрос - что же это самое АЛУ делает? А делает АЛУ следующее, берет данные производит над ними арифметическую или логическую операцию и сохраняет полученный результат. Данные поступают в АЛУ из регистров общего назначения и туда же АЛУ сохраняет полученные результаты. Регистр общего назначения представляет собой ячейку памяти 8 бит то есть 1 Байт. Но откуда же АЛУ знает что ему делать? А все просто, для этого есть регистр команд в котором как раз и записано что нужно делать МК в данный момент. Данные в регистр команд попадают из ПЗУ(постоянное запоминающее устройство), в нашем МК это Flash память. Перейдем к конкретному примеру, подсоединим кнопку к ножке МК и пускай микроконтроллер считает сколько раз мы на нее нажали. Сейчас я не буду вдаваться в конкретную реализацию данного алгоритма в коде, а только рассмотрю работу АЛУ. Например на состояние кнопки(нажата/отжата или 0/1) мы выделили регистр(А), также выделим регистр(В) для результатов. В начале работы программы мы эти регистры обнулим, это будет обозначать что кнопка ни разу не нажималась. Теперь при нажатии кнопки в регистр А запишится значение, АЛУ приняв это значение просуммирует его со значением регистра В и запишет результат в тот же регистр В. При повторном нажатии кнопки в регистре В у же будет значение 1, а значит АЛУ приняв значение 1 из регистра А и просуммировав с регистром В запишет в регистр В уже значение равное 2. Таким образом значение регистра В и будет соответствовать количеству нажатий на кнопку. В дальнейшем мы сможем прочитать этот регистр и к примеру зажечь светодиод при количестве нажатий равном десяти. Кроме регистров общего назначения в МК присутствует ОЗУ – оперативная память микроконтроллера. ОЗУ МК нужна для того, чтобы хранить в нем данные при выполнении программы. Регистров то всего 32 и для полноценной работы этого недостаточно. В регистрах хранится обычно только те данные, которые будут использоваться непосредственно прямо сейчас, все остальное удобнее хранить в памяти. Вот мы с вами и получили первоначальные сведения о микроконтроллерах, и на этом сегодня я пожалуй закончу, а в следующей главе мы будем разбираться с языками программирования для МК и узнаем как скомпилировать программу, то есть перевести ее в язык понятный микроконтроллеру. >>> Если у Вас есть какие либо вопросы, то Вы можете их задавать на форуме. |