Курсовая работа: Разработка и описание работы устройства на PIC-контроллере
Таблица 3.4 - Организация памяти данных
Адрес | Адрес | ||
00h | Косвенный адрес | Косвенный адрес | 80h |
0lh | TMR0 | OPTION | 81h |
02h | PCL | PCL | 82h |
03h | STATUS | STATUS | 83h |
04h | FSR | FSR | 84h |
05h | PORTA | TRISA | 85h |
06h | PORTB | TRISB | 86h |
07h | Недоступен | Недоступен | 87h |
08h | EEDATA | EECON1 | 88h |
09h | EEADR | EECON2 | 89h |
0Ah | PCLATH | PCLATH | 8Ah |
0Bh | INTCON | INTCON | 8Bh |
0Ch 4Fh | 68 регистров общего применения (SRAM) | Отображается на пространство банка 0 |
8Ch CFh |
50h 7Fh |
D0h FFh | ||
Банк 0 | Банк 1 |
Переключение банков происходит при помощи задания 5-го бита в регистре STATUS. Если бит установлен в 0, адресуется нулевой банк, если в 1, соответственно, первый.
Специальные регистры
Специальные регистры представляют собой статическое ОЗУ.
Регистр STATUS (Адрес 03Н, 81Н)
Регистр STATUS хранит арифметические флаги АЛУ, информацию о сбросе и бит выбора банка памяти данных.
bit7 IRP - регистр выбора банка памяти, применяемый при косвенной адресации. Это бит не применяется в PIC16F84 и должен всегда оставаться сброшенным.
0 = bank 0,1 (00h-FFh)
1 = bank 2,3(100h-1FFh)
bit6-5 RP1, RP0 - регистр выбора банка памяти, применяемый при прямой адресации.
00 = bank 0 (00h-7Fh)
01 = bank 1 (80h-FFh)
bit4 TO - флаг срабатывания сторожевого таймера. Устанавливается в 1 при включении питания и командами CLRWDT и SLEEP. Сбрасывается в 0 по завершении выдержки сторожевого таймера.
bit3 PD - режим хранения данных. Устанавливается в 1 при включении питания или выполнении команды CLRWDT. Сбрасывается в 0 командой SLEEP.
bit2 Z - флаг нулевого результата. Устанавливается в 1, если результат арифметической или логической операции равен нулю. Сохраняет свое значение до следующей операции.
bit1 DC - флаг десятичного переноса. Используется для команд ADDWF, ADDLW, SUBWF и SUBLW. Отслеживает перенос из четвертого разряда результата.
1 = Произошел перенос при сложении
0 = Не произошел перенос при сложении
Вычитание в АЛУ выполняется сложением кода первого операнда с дополнительным кодом второго операнда. Значение бита контекстно зависит от того, какая операция выполнялась. Для операции вычитания значения бита инвертированы.
bit0 С - флаг переноса. Используется для команд ADDWF, ADDLW, SUBWF и SUBLW. Отслеживает перенос из старшего разряда в бит переноса при сложении.
1 = произошел перенос при сложении