- •Что такое микроконтроллер?
- •Назначение ide?
- •Что такое picSimLab?
- •Что такое порты ввода-вывода?
- •Какое бывает обозначение портов ввода-вывода?
- •Как обозначаются порты ввода-вывода семейства pic?
- •Какие бывают цифровые входы и выходы?
- •Какие бывают аналоговые входы?
- •Назначение резисторов rup / rdown.
- •Что такое таймер-счетчик?
- •На каком устройстве базируется типовой таймер-счетчик?
- •Поясните работу блок-схемы работы таймера (рисунок 2.2).
- •Регистры управления ацп pic16.
- •Выравнивание данных в ацп pic16..
Какие бывают аналоговые входы?
Аналоговый режим отличается от цифрового уровнями подаваемых на вход сигналов. Для цифрового режима — это стандартные двоичные перепады напряжения НИЗКИЙ/ВЫСОКИЙ. Для аналогового режима допускаются сигналы любой формы в диапазоне 0… VСС.
Аналоговые входы МК отождествляются с аналоговым компаратором и АЦП (усилитель с программируемым коэффициентом усиления). Основной параметр АЦП – разрядность.
Назначение резисторов rup / rdown.
Резисторы имеют англоязычные названия: «pull-up» («тянуть вверх»), «pulldown» («тянуть вниз»). Если для коммутации резисторов применяется ключ («switch»), то используются похожие термины «switched pull-up», «switched pulldown».
Резисторы RUР, RDOWN изготавливаются на основе интегральных полевых транзисторов. Большой технологический разброс определяет широкие допуски, вплоть до ±50% от номинала, например, 30…100 кОм.
ТЕМА 2
Условие:
Мигать попеременно светодиодами D1 и D5. Время горения светодиода в четыре раза больше чем время простоя. При нажатии кнопки загораются D5 и D8. Организовать мигание с помощью прерываний от таймера.
Решение:
#include <xc.h> //подключение библиотеки
#define _XTAL_FREQ 4000000 // объявим частоту нашего резонатора
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF // Code Protection bit (Code protection disabled)
//------------------------------------------
unsigned int TIM0_count=0; //Добавим глобальную переменную для счёта вхождений в обработчик прерывания
//------------------------------------------
unsigned char CheckButton(void) //распознавание зажатой кнопки
{
unsigned char result=0;
unsigned int butcount=0;
while(!RA2)
{
if(butcount < 10000)
{
butcount++;
}
else
{
result = 1;
break;
}
}
return result;
}
void __interrupt() timer0() //Добавим специальную функцию-обработчик прерывания от таймера0
{
if(CheckButton()){ //при нажатой кнопке происходит следующее
PORTBbits.RB7 = 1; //включен горит
PORTBbits.RB4 = 1; //включен горит
switch(TIM0_count%10) //получаем в качестве аргумента остаток от деления на 10
{ //включается и выключается при case 0, 5 и 4, 9 соответственно
case 0:
PORTBbits.RB0 = 1;
break;
case 4:
PORTBbits.RB0 = 0;
break;
case 5:
PORTBbits.RB0 = 1;
break;
case 9:
PORTBbits.RB4 = 1;
PORTBbits.RB0 = 0;
break;
}
}
else //в ином случае (когда кнопка не нажата)
{
switch(TIM0_count%10)
{ //при соответствующих кейсах вкл/выкл соответствующие светодиоды, создавая эффект бегущих огней
case 0:
PORTBbits.RB0 = 1;
break;
case 3:
PORTBbits.RB4 = 0;
break;
case 4:
PORTBbits.RB0 = 0;
PORTBbits.RB4 = 1;
break;
case 5:
PORTBbits.RB0 = 1;
break;
case 8:
PORTBbits.RB4 = 0;
break;
case 9:
PORTBbits.RB4 = 1;
PORTBbits.RB0 = 0;
break;
}
}
TIM0_count++;
if(TIM0_count>3999)
{
TIM0_count=0;
}
T0IF=0;
}
//------------------------------------------
void main(void) {
TRISB = 0x00;
PORTB = 0x00;
TRISA &= ~0x03;
PORTA &= ~0x03;
TRISA |= 0x04;
OPTION_REG=0x07; //включаем 0,1 и 2 биты предделителя
INTCON=0xA0; //включаем глобальные прерывания и прерывания от таймер, установкой в 1 биты 7 и 5 регистра
TMR0=0; // заносится 0 в регистр счета таймера, запуск таймера
while(1)
{
}
return;
}
Вывод:
Создан проект в котором изучены принципы управления таймер-счетчиками. Таймер-счетчики предназначаются для формирования временных интервалов и подсчета событий, что позволяет (при использовании соответствующего программного обеспечения) реализовывать на их основе любые функции времени, в том числе управление в реальном времени (т.е. во временном масштабе объекта).
Контрольные вопросы: