Программирование Микроконтроллеров Pic для Начинающих


Начинающим программистам микроконтроллеров PIC
Май 21, 2016 – 07:15
Краткий Курс - Самоучитель

РадиоКот > Обучалка > Микроконтроллеры и ПЛИС > Несколько слов о PIC-контроллерах

Начинающим программистам микроконтроллеров PIC

Предлагаемые программы вполне можно применять в виде готовых макросов (законченных подпрограмм).Они не привязаны к конкретному контроллеру, поэтому при применении следует учитывать данные из datasheet -ов.

Примем тактовую частоту - Fтакт. = 4, 096 МГц (стандартный кварц). Тогда время цикла составит t c = 1 / Fтакт. * 4 = 0, 97656 мкс

INI_TMR ; инициализация режима прерываний от RTCC bsf STATUS, RP0 ; выбираем банк 1 movlw b'00000100' movwf OPTION ; предделитель для RTCC 1 : 32 bcf STATUS, RP0 ; банк 0 movlw b'10100000' movwf INTCON ; разрешено прерывание от RTCC movlw .96 ; загружаем в RTCC предварительное число 96 movwf TMR0

Получим время прерываний:
t i = t c * 32 * (256 - 96 = 160)
t i = 0, 97656 * 32 * 160 = 5 000 мкс = 5 мс

Теперь, если в Вашу любую программу ввести бесконечный цикл (так называемый цикл ожи- дания прерывания), и окончание программы переводить на этот цикл, получим временную привязку к 5 мс.И после прерывания программа вернётся по адресу, указанном вектором прерываний (чаще это 04h).Для чего это можно использовать - смотри дальше.

Итак:

; org 0 START ; начало выполнения программы после ; включения питания org 04h ; а это адрес вектора прерывания, по которому main ; будет выполняться основная программа ; START ; здесь обычно происходит обязательная ини- INI_TMR ; циализация портов, режимов, регистров и т.п. INI_PORTS loop goto loop ; а это и есть бесконечный цикл ;- main ; далее идёт тело основной программы, ; в которой обязательно надо создать программу обслуживания прерываний от RTCC, ; вызываемой командой CALL: ServTMR btfsc INTCON, RTIF ; проверяем флаг срабатывания прерываний от RTCC и call SET_TMR ; если "да", то снова инициализируем TMR0 return ; если "нет" - возврат в место вызова ServTMR в ; основной программе main ; SET_TMR movlw .96 movwf TMR0 ; снова загружаем число 96 bcf INTCON, RTIF ; сбрасываем флаг срабатывания retfie ; возврат с разрешением прерываний в ServTMR, а ; затем в основную программу main

Source: radiokot.ru
Похожие публикации