Для ввода дискретной информации в микроконтроллер широко применяются различные переключатели, кнопки и клавиатуры, либо иные дискретные датчики.
Дискретными выходами микроконтроллер управляет различными исполнительными устройствами, работающими по принципу включено/выключено.
На рисунке 20.17 приведена схема электрическая принципиальная к лабораторной работе.
Рисунок 20.17 – Схема электрическая принципиальная
В схеме два дискретных датчика оформлены в виде двух переключателей SA1 и SA2, подключенных к выводам RA2 и RA3 микроконтроллера.
Два дискретных выхода оформлены в виде двух светодиодов VD1 и VD2, подключенных к выводам RB15 и RB13 микроконтроллера соответственно.
Листинг программы для создания проекта LR20_1
#include <P33FJ32MC204.h>
#define FOSC 7370000
#define FCY (FOSC / 2) // Настройка частоты выполнения
// инструкций
_FOSCSEL(FNOSC_FRC) //Настройка работы микроконтроллера
//от внутреннего тактового генератора
void main()
{
TRISBbits.TRISB15 = 0; // Выход VD1 (RB15)
while (1)
{
__delay32(FCY); //Организация временной задержки
LATBbits.LATB15 = 1;
__delay32(FCY);
LATBbits.LATB15 = 0;
}
}
Листинг программы для создания проекта LR20_2
#include <P33FJ32MC204.h>
_FOSCSEL(FNOSC_FRC) // Настройка работы микроконтроллера
// от внутреннего тактового генератора
// Инициализация таймера T1
void Init_Timer1()
{
T1CON = 0; // Сброс таймера
IFS0bits.T1IF = 0; // Сброс флага прерывания таймера
IEC0bits.T1IE = 1; // Разрешение прерывания от таймера
TMR1 = 0x0000; // Обнуление текущего значения таймера
PR1 = 0x0E65; // Задание периода таймера
T1CONbits.TON = 1; // Разрешение работы таймера и
// Его запуск
}
int _ms = 0;
void __attribute__((interrupt, no_auto_psv)) _T1Interrupt()
// Прерывание таймера T1 по совпадению
{
_ms++;
IFS0bits.T1IF = 0; // Сброс флага прерывания таймера
TMR1 = 0; // Перезапуск таймера
}
void main()
{
Init_Timer1();
TRISBbits.TRISB15 = 0; // Выход VD1 (RB15)
while (1)
{
if (_ms < 1000)
{
LATBbits.LATB15 = 0;
}
else if (_ms < 2000)
{
LATBbits.LATB15 = 1; }
else
{
_ms = 0;
}
}
}
Листинг программы для создания проекта LR20_3
#include <p33fj32mc204.h>
#define FOSC 7370000
#define FCY (FOSC/2)
_FOSC(OSCIOFNC_ON & POSCMD_NONE)
//Отключение дополнительной функции порта RA2 – выход
// тактирующего сигнала внутреннего генератора
_FOSCSEL(FNOSC_FRC) // Настройка работы от
// внутреннего тактового
// генератора
void __delay32(unsigned long cycles);
int main()
{
TRISBbits.TRISB15 = 0; // Выход VD1 TRISBbits.TRISB13 = 0; // Выход VD2
TRISAbits.TRISA2 = 1; // Вход SA1
TRISAbits.TRISA3 = 1; // Вход SA2
while (1)
{
if (PORTAbits.RA2 == 1 && PORTAbits.RA3 == 1)
//Если тумблеры SA1 и SA2 одновременно включены
{
__delay32(FCY);
LATBbits.LATB15 = 1;
LATBbits.LATB13 = 0;
__delay32(FCY);
LATBbits.LATB15 = 0;
LATBbits.LATB13 = 1;
}
else
{
LATBbits.LATB15 = 0;
LATBbits.LATB13 = 0;
}
}
}
ЛИТЕРАТУРА
1 Цифровые и микропроцессорные устройства: конспект лекций для учащихся специальностей 2-45 01 03 – Сети телекоммуникаций, 2‑45 01 02 – Системы радиосвязи, радиовещания и телевидения. В 5 ч. Ч. 4: Основы микропроцессорной техники; Ч. 5: Принципы организации однокристальных микроконтроллеров. Организация памяти микропроцессорных систем / сост. В. И. Богородов. – Минск: ВГКС, 2009. – Ч. 4 – 63 с.; Ч. 5 – 85 с.
2 Data sheet. dsPIC33FJ32MC202/204. Microchip. 2012. –290 c.
3 MPLAB IDE User’s Guide. Microchip. 2009. –155 c.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ. 3
ЛАБОРАТОРНАЯ РАБОТА № 12 СОСТАВЛЕНИЕ ЛИНЕЙНЫХ И ЦИКЛИЧЕСКИХ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕР 3
ЛАБОРАТОРНАЯ РАБОТА №13 ОБУЧЕНИЕ РАБОТЕ НА СИМУЛЯТОРЕ МИКРОПРОЦЕССОРА Sim8085 Microprocessor Simulator 11
ЛАБОРАТОРНАЯ РАБОТА №14 АРИФМЕТИЧЕСКИЕ КОМАНДЫ... 20
ЛАБОРАТОРНАЯ РАБОТА №15 ЛОГИЧЕСКИЕ КОМАНДЫ И КОМАНДЫ СДВИГА 25
ЛАБОРАТОРНАЯ РАБОТА №16 КОМАНДЫ УПРАВЛЕНИЯ.. 32
ЛАБОРАТОРНАЯ РАБОТА №17 ОБУЧЕНИЕ РАБОТЕ В ИНТЕГРИРОВАННОЙ СРЕДЕ MPLAB IDE 40
ЛАБОРАТОРНАЯ РАБОТА №18 иЗУЧЕНИЕ СИСТЕМЫ ПРОГРАММИРОВАНИЯ МИКРОКОНТРОЛЛЕРОВ dsPIC33F С ПОМОЩЬЮ ЯЗЫКА АССЕМБЛЕР. 47
ЛАБОРАТОРНАЯ РАБОТА №19 ИССЛЕДОВАНИЕ устройств ввода-вывода дискретных сигналов В МИКРОПРОЦЕССОРНЫХ СИСТЕМАХ НА БАЗЕ МИКроконтроллера семейства dsPIC33F 65
ЛАБОРАТОРНАЯ РАБОТА №20 РЕАЛИЗАЦИЯ ВРЕМЕННЫХ ФУНКЦИЙ В МИКРОПРОЦЕССОРНЫХ СИСТЕМАХ НА БАЗЕ МИКроконтроллера семейства dsPIC33F. 83
ЛИТЕРАТУРА.. 102
Учебное издание