Файл: Архитектура и основы программирования однокристальных микроконтроллеров.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 1052
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРА PIC16F84
Особенности программирования портов
Использование TMR0 с внешним сигналом
Сохранение состояния при прерываниях
Режим пониженного энергопотребления (SLEEP)
Защита программы от копирования
ОСНОВЫ ПРОГРАММИРОВАНИЯ PIC16F84 НА АССЕМБЛЕРЕ
Пример простейшей программы управления портами
АРХИТЕКТУРА И ОСНОВЫ ПРОГРАММИРОВАНИЯ ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРОВ PIC16F84
Счетчик команд
Счетчик команд (PC) 13-разрядный. Младшим байтом счетчика командслужитрегистрPCL,доступныйдлячтенияизаписи.СтаршиеразрядысчетчикакомандРС<12:8>немогутбытьнепосредственносчитаныилизаписаны, а адресуются через регистр PCLATH. Содержимое регистра PCLATHзаноситсявсчетчиккоманд,когдаPCзагружаетсяновымзначением.Этопроисходит в командах CALL, GOTO и при записи в PCL. По сигналу RESET всчетчиккомандзаписывается'0'.Загрузкасчетчикакомандвразличныхситуацияхпоказананарис.1.6.| PCH | PCL | | PCH | PCL | |
| 12 8 7 | | 0 | 12 11 10 8 7 | | 0 |
| | | PC | | | |
PC
-
PCLATH<4:0>
PCLATH
Результат из АЛУ
PCLATH
Код команды <10:0>
а б
Рис. 1.6. Загрузка счетчика команд:
а - команда, модифицирующая PCL; б - команды GOTO, CALL
Вычисляемые переходы. Вычисляемый переход осуществляется путем добавления смещения к счетчику команд (ADDWF PCL). При осуществлении табличного чтения с использованием вычисляемых переходов следует
внимательно рассматривать случаи, когда таблица пересекает границу,определяемуюразрядностью PCL(каждые256байт).
-
Стек
- 1 ... 4 5 6 7 8 9 10 11 ... 27
Косвенная адресация данных
РегистрINDFфизическинесуществуетииспользуетсясовместносрегистромFSRдлякосвеннойадресацииданных.Любаякоманда,использующаярегистрINDF,вдействительностиобращаетсякрегиструданных, адресуемому регистром FSR. Например, в команде ADDWF INDF крегиструWбудетприбавленосодержимоерегистра,адрескоторогонаходитсявFSR.ЧтениекосвеннымобразомсамогорегистраINDF даст результат 00h(т.е.FSR=0).КосвеннаязаписьврегистрINDFаналогична,хотябитысостояниямогут бытьизменены.Программа, использующая косвенную адресацию для записи нулей в 16последовательнорасположенныхячеекОЗУсадреса20hдоадреса2Fh,приведенаниже.| | MOWLW | 0X20 | ;Заносим в FSR адрес первой ячейки памяти. |
| MOVWF | FSR | ; | |
| NEXT | CLRF | INDF | ;Это начало цикла очистки ячеек . Команда , |
| | | | ;адресующаяся к регистру INDF,в результате |
| | | | ;по очереди очищает все ячейки. |
| | INCF | FSR | ;Следующий адрес. |
| | | | ;Когда пройдут все 16 адресов (10h),в регистре |
| | | | ;FSR окажется установленным бит 4 |
| | | | ;(0011 0000=30h) и цикл закончится. |
| | BTFSS | FSR,4 | ;Всё закончено ? |
| | GOTO | NEXT | ;Нет, следующая ячейка. |
| | CONT... | | ;Продолжение программы. |
- 1 ... 5 6 7 8 9 10 11 12 ... 27
Порты ввода/вывода
МикроконтроллерыРIС16F84имеютдвапортаввода/вывода,PORTAиPORTB.Некоторыеразрядыпортовимеютдополнительныефункции.Программаможетсчитыватьизаписыватьданныеврегистрыввода-выводааналогичнорегистрамобщегоназначения.Причтениивсегдасчитываетсядействительноесостояниевыводов,независимооттого,запрограммированы отдельные биты как входы или как выходы. После сбросавсеразрядыпрограммируютсякаквходы(выходынаходятсяввысокоимпедансномсостоянии),посколькурегистрыуправленияпортамиTRISAиTRISBустанавливаютсяв'1'.Разрядпортаввода-выводаопределяетсякак выход,еслисоответствующий битв регистреуправленияпортомустановленв'0'.-
PORTA
| CLRF BSF MOVLW | PORTA STATUS,RP0 0x 0F | ;Очистка (сброс в «0») выходных защёлок PORTA. ;Выбор банка 1. ;Значение константы для выбора режимов работы ;разрядов. |
| MOVWF | TRISA | ;Установить RA<3:0> как входы и RA4 как |
| | | ;выход. |
| BCF | STATUS,RP0 | ;Выбор банка 0. |