-I - индустриальный -40°С…+85°С;
-E - расширенный -40°С…+125°С.
XX - тип корпуса:
- P - пластиковый DIP;
- SO-пластиковый планарный корпус SOIC;
- SS- пластиковый планарный корпус SSOP;
- JW-DIP корпус с окном для УФ стирания;
- И др.
В виде числа 04 или 20 может указываться частота под которую оптимизирован генератор МК.
Все микроконтроллеры семейства имеют одинаковое ядро, систему команд, организацию памяти программ и памяти данных и порядок взаимодействия ядра с памятью и периферийными устройствами. А отличаются друг от друга микроконтроллеры тем, что каждый из них оптимизирован под выполнение определенного круга задач и может отличаться от собратьев количеством выводов, объемом памяти программ и памяти данных, набором периферийных устройств и ценой.
Все МК имеют
- Диапазон тактовой частоты 0...20МГц.
- Одинаковое ядро.
- 35 простых инструкций.
- Режим энергосбережения SLEEP.
- POR (Power On Reset) - сброс по подаче питания (при достижении Vddmin).
-OST (Oscillator Start-up Timer) - удерживает МК в состоянии сброса на время запуска и стабилизации тактового кварцевого или кристаллического генератора.
- BOD или BOR (Brown-out Detect или Brown-out Reset) - детектор снижения Vdd с настраиваемым порогом.
- WDT (Watchdog Timer) - сторожевой таймер с настраиваемым периодом.
- Микроконтроллеры PIC16F873…877 могут программировать свою память программ в процессе работы.
- Все 8-ми и 14-ти выводные МК, кроме режимов генератора, типичных для всех PIC16, имеют встроенный стабильный (1%) тактовый RC генератор.
ПРИЛОЖЕНИЕ А (Продолжение)
Кол-во выводов/портов | ПП, слов | ОЗУ, Кбайт | FLASH ПД, Байт | Таймеры | Встроенные периферийные модули | |
PIC12F629 | 8/6 | 1К | 64 | 128 | TMR0, TMR1 | аналоговый компаратор |
PIC12F675 | 8/6 | 1К | 64 | 128 | TMR0, TMR1 | аналоговый компаратор, 10-разр. АЦП |
PIC12F683 | 8/6 | 2К | 128 | 256 | TMR0, TMR1, TMR2 | аналоговый компаратор, 10-разр. АЦП, модуль захвата/сравнения/ШИМ |
PIC12F630 | 14/12 | 1К | 64 | 128 | TMR0, TMR1 | аналоговый компаратор |
PIC16F676 | 14/12 | 1К | 64 | 128 | TMR0, TMR1 | аналоговый компаратор, 10-разр. АЦП |
PIC16F684 | 14/12 | 2К | 128 | 256 | TMR0, TMR1, TMR2 | аналоговый компаратор, 10-разр. АЦП, модуль захвата/сравнения/ШИМ |
PIC16F688 | 14/12 | 4К | 256 | 256 | TMR0, TMR1, TMR2 | аналоговый компаратор, 10-разр. АЦП, модуль захвата/сравнения/ШИМ, USART |
PIC16F628A | 18/16 | 4К | 224 | 128 | TMR0, TMR1, TMR2 | аналоговый компаратор, 10-разр. АЦП, модуль захвата/сравнения/ШИМ, USART/SC |
PIC16F648A | 18/16 | 4К | 256 | 256 | TMR0, TMR1, TMR2 | аналоговый компаратор, 10-разр. АЦП, модуль захвата/сравнения/ШИМ, USART/SC |
PIC16F84A | 18/13 | 1К | 68 | 64 | TMR0 | популярный, устарел |
ПРИЛОЖЕНИЕ Б
Программа для «Эффект -1» светодиодной матрицы
;------------------------------------------------------------------------------------------------------------------------------
list p = 16f628a
__config 03F30h ; 11111100110001 - защиты памяти нет, низковольтное программирование запрещено, сброс по питанию запрещен,
; RA5/-MCLR работает как -MCLR, таймер вкл-я питания включен, сторожевой таймер - выключен, генератор - внутренний
;********* Переменные ************************************
CBLOCK 0x20 ;Начальный адрес блока констант
T_ext ;таймер внешнего цикла
T_int ;таймер внутреннего цикла
Strok ;байт строк, младшие 5 бит этого байта - состояния строк (1 - вкл, 0 - выкл)
Stolb ;байт столбцов, младшие 5 бит этого байта - состояния столбцов (1 - вкл, 0 - выкл)
ENDC ;
;******** Константы ***************************************
Cr1 equ .200 ;длительность 1-й задержки 200 мкс
Cr2 equ .150 ;длительность 2-й задержки 150х200 мкс
Status equ 03h ; Регистр выбора банка
TrisA equ 05h ; Регистр выбора направления работы выводов порта А
TrisB equ 06h ; Регистр выбора направления работы выводов порта В
PortA equ 05h ; Регистр управления защелками порта А
PortB equ 06h ; Регистр управления защелками порта В
Cmcon equ 1Fh ; вкл/выкл компараторов
F equ 1 ; Результат направить в регистр.
;********************************************************
; Пусть у нас RA1, RA2, RA3, RA6, RA7 - выходы строки
; RB3, RB4, RB5, RB6, RB7 - выходы столбцы
;********************************************************
;
org 0
;******** Установка направления работы порта A: RA7, RA6 - выходы, RA5, RA4, RA3 - входы, RA2, RA1, RA0 - выходы
;******** Установка направления работы порта B: RB7, RB6, RB5, RB4, RB3, RB2 - выходы, RB1, RB0 - входы ***
start movlw .7 ;
movwf Cmcon ; выключить компараторы и включить эти пины как цифровые входы/выходы
clrf PortA ; инициализация защелок порта А
movlw .248 ; 11111000
movwf PortB ; инициализация защелок порта В
bsf Status,5 ; Перейти в 1-й банк (установить в 1 5-й бит регистра Status).
movlw .49 ; Записать конфигурацию порта A в аккумулятор (W). .49=00110001
movwf TrisA ; Скопировать конфигурацию порта А из W в регистр TrisA
movlw .7 ; Записать конфигурацию порта В в аккумулятор (W). .3=00000111
movwf TrisB ; Скопировать конфигурацию порта B из W в регистр TrisB.
bcf Status,5 ; Перейти в 0-й банк (установить в 0 5-й бит регистра Status)
;******** ЭФФЕКТ 1 ********************************************************************************
eff1 movlw b'00011111' ; включаем все строки
movwf Strok
movlw b'00000001' ; и первый столбец
movwf Stolb
;-------- Включаем светодиоды -----------------
cikl_stolb1 call in_ports
call pause
rlf Stolb,1 ; переходим на следующий столбец
btfss Stolb,5 ; если 5 бит stolb = 1, то следующая команда пропускается
goto cikl_stolb1
;----------------------------------------------
movlw b'00000001' ; включаем первую строку
movwf Strok
movlw b'00011111' ; и все столбцы
movwf Stolb
;-------- Включаем светодиоды -----------------
cikl_strok1 call in_ports
call pause
rlf Strok,1 ; переходим на следующую строку
btfss Strok,5 ; если 5 бит stolb = 1, то следующая команда пропускается
goto cikl_strok1
goto eff1
;******************************************************************************************************
;******** Процедура включения строк и столбцов
in_ports btfsc Stolb,0 ; если 0-й бит stolb = 0, то следующая команда пропускается
bcf PortB,3 ; RB3=0 - вкл.1 столбец
btfss Stolb,0 ; если 0-й бит stolb =1, то следующая команда пропускается
bsf PortB,3 ; RB3=1 - выкл. 1 столбец
;--------------------------------------
btfsc Stolb,1 ; если 1-й бит stolb = 0, то следующая команда пропускается
bcf PortB,4 ; RB4=0 - вкл. 2 столбец
btfss Stolb,1 ; если 1-й бит stolb =1, то следующая команда пропускается
bsf PortB,4 ; RB4=1 - выкл. 2 столбец
;-------------------------------------
btfsc Stolb,2 ; если 2-й бит stolb = 0, то следующая команда пропускается
bcf PortB,5 ; RB5=0 - вкл. 3 столбец
btfss Stolb,2 ; если 2-й бит stolb =1, то следующая команда пропускается
bsf PortB,5 ; RB5=1 - выкл. 3 столбец
;--------------------------------------
btfsc Stolb,3 ; если 3-й бит stolb = 0, то следующая команда пропускается
bcf PortB,6 ; RB6=0 - вкл. 4 столбец
btfss Stolb,3 ; если 3-й бит stolb =1, то следующая команда пропускается
bsf PortB,6 ; RB6=1 - выкл. 4 столбец
;--------------------------------------
btfsc Stolb,4 ; если 4-й бит stolb = 0, то следующая команда пропускается
bcf PortB,7 ; RB7=0 - вкл. 5 столбец
btfss Stolb,4 ; если 4-й бит stolb =1, то следующая команда пропускается
bsf PortB,7 ; RB7=1 - выкл. 5 столбец
;-------- Строки -----------------------------------------------------------
btfsc Strok,0 ; если 0-й бит strok = 0, то следующая команда пропускается
bsf PortA,2 ; RA2=1 - вкл.1 строку
btfss Strok,0 ; если 0-й бит strok =1, то следующая команда пропускается
bcf PortA,2 ; RA2=0 - выкл.1 строку
;--------------------------------------
btfsc Strok,1 ; если 1-й бит strok = 0, то следующая команда пропускается
bsf PortA,3 ; RA3=1 - вкл.2 строку
btfss Strok,1 ; если 1-й бит strok =1, то следующая команда пропускается
bcf PortA,3 ; RA3=0 - выкл.2 строку
;--------------------------------------
btfsc Strok,2 ; если 2-й бит strok = 0, то следующая команда пропускается
bsf PortA,1 ; RA1=1 - вкл.3 строку
btfss Strok,2 ; если 2-й бит strok =1, то следующая команда пропускается
bcf PortA,1 ; RA1=0 - выкл.3 строку
;--------------------------------------
btfsc Strok,3 ; если 3-й бит strok = 0, то следующая команда пропускается
bsf PortA,7 ; RA7=1 - вкл.4 строку
btfss Strok,3 ; если 3-й бит strok =1, то следующая команда пропускается
bcf PortA,7 ; RA7=0 - выкл.4 столбец
;--------------------------------------
btfsc Strok,4 ; если 4-й бит strok = 0, то следующая команда пропускается
bsf PortA,6 ; RA6=1 - вкл.5 строку
btfss Strok,4 ; если 4-й бит strok =1, то следующая команда пропускается
bcf PortA,6 ; RA6=0 - выкл.5 строку
return
;****************************************************************************************************
;******** Процедура Паузы ****************************************************************************
pause movlw Cr2
movwf T_ext ; загрузить значение для внешнего цикла
cikl2 movlw Cr1
movwf T_int ; загрузить значение для внутреннего цикла
cikl3 decfsz T_int,1 ; если T_int = 0, следующая команда пропускается
goto cikl3 ; внутренний цикл
decfsz T_ext,1 ; если T_ext = 0, следующая команда пропускается
goto cikl2 ; внешний цикл
return
end
ПРИЛОЖЕНИЕ В
Программа для создания эффекта «Вращающийся крест»
;--------------------------------------------------------------------------------------------------------------------------
list p = 16f628a
__config 03F30h ; 11111100110001 - защиты памяти нет, низковольтное программирование запрещено,
; сброс по питанию запрещен, RA5/-MCLR работает как -MCLR, таймер вкл-я питания включен,
; сторожевой таймер - выключен, генератор - внутренний
;********* Переменные ************************************
CBLOCK 0x20 ; Начальный адрес блока
Temp ; обменник , 20h
Adr ; адрес фрейма в EEPROM или ОЗУ , 21h
T_int ; счетчик для паузы , 22h
Strok ; байт текущего состояния строк , 23h
Stolb ; байт текущего состояния столбцов , 24h
Fr_sch ; счетчик фреймов , 25h
Fr_cikl ; счетчик показов одного фрейма , 26h
Fr_kol ; количество фреймов , 27h
Fr_cikl_kol ; количество показов одного фрейма , 28h
;----- Свободная память ОЗУ в нулевом банке от 29h до 7Fh ---------------------------------
;----- Из этих 86 своб-х байт в первые 30 мы будем грузить наши фреймы ------------------
ENDC ;
;******** Константы ***************************************
Status equ 03h ; Регистр выбора банка
TrisA equ 05h ; Регистр выбора направления работы выводов порта А
TrisB equ 06h ; Регистр выбора направления работы выводов порта В
PortA equ 05h ; Регистр управления защелками порта А
PortB equ 06h ; Регистр управления защелками порта В
Cmcon equ 1Fh ; вкл/выкл компараторов
F equ 1 ; Результат направить в регистр.
FSR equ 04h ; регистр адреса при косвенной адресации
INDF equ 0h ; регистр косвенной адресации
Cr equ .50 ; значение счетчика для паузы