Вывод дискретных сигналов

 

Аналогично, прежде чем приступить к управлению выходным дискретным сигналом, необходимо инициализировать используемый порт – настроить линию порта как выход. Так же в случаях, если требуемая линия порта может использоваться для каких, либо других периферийных функций, необходимо их отключить.

Для управления дискретным выводом микроконтроллера на соответствующей выходной линии порта необходимо сформировать логический сигнал 0 или 1, что реализуется командами вывода непосредственного операнда, содержащего в требуемом бите значение 0 или 1.

Таким образом, при подключении исполнительного устройства к линии бита 15 порта RB программа работы с дискретным выходом микроконтроллера будет иметь вид:

 

#include <P33FJ32MC204.h>

int main()

{

TRISBbits.TRISB15 = 0; // настройка порта RB15 на выход

LATBbits.LATB15 = 1; // установка ВЫСОКОГО уровня сигнала

LATBbits.LATB15 = 0; // установка НИЗКОГО уровня сигнала

}


ПРИЛОЖЕНИЕ А

 

Схема алгоритма для выполнения задания 1

 

Рисунок А.1 – Схема алгоритма к заданию 1

Листинг программы для выполнения задания 1:

 

#include <P33FJ32MC204.h>

_FOSC(OSCIOFNC_ON & POSCMD_NONE) //отключение дополнительной

//функции порта RA2 – выход

//тактирующего сигнала //внутреннего генератора

int main()

{

TRISBbits.TRISB15 = 0; // настройка порта RB15 на выход

TRISBbits.TRISB13 = 0; // настройка порта RB13 на выход

TRISAbits.TRISA2 = 1; // настройка порта RA2 на вход

TRISAbits.TRISA3 = 1; // настройка порта RA3 на вход

while (1)

{

LATBbits.LATB15 = PORTAbits.RA2;

// установка соответствующего уровня сигнала //на RB15

LATBbits.LATB13 = PORTAbits.RA3; // установка

//соответствующего уровня //сигнала на RB15

}

}


Приложение Б

 

Схема алгоритма для выполнения задания 2

 

 

Рисунок Б.1 – Схема алгоритма к заданию 2

Листинг программы для выполнения задания 2:

 

#include <P33FJ32MC204.h>

 

_FOSC(OSCIOFNC_ON & POSCMD_NONE)

 

int main()

{

TRISBbits.TRISB15 = 0; // настройка порта RB15 на выход

TRISBbits.TRISB13 = 0; // настройка порта RB13 на выход

 

TRISAbits.TRISA2 = 1; // настройка порта RA2 на вход

TRISAbits.TRISA3 = 1; // настройка порта RA3 на вход

 

while (1)

{

if (PORTAbits.RA2 == PORTAbits.RA3)

{

LATBbits.LATB15 = 0;

LATBbits.LATB13 = 1;

}

else if (PORTAbits.RA2 == 1)

{

LATBbits.LATB15 = 0;

LATBbits.LATB13 = 0;

}

else if (PORTAbits.RA3 == 1)

{

LATBbits.LATB15 = 1;

LATBbits.LATB13 = 1;

}

}

}