Уведомления
Очистить все

PIC 16F84. Последовательная передача через порт

1 Посты
1 Пользователи
0 Likes
3,551 Просмотры
FOX_
 FOX_
(@fox_)
New Member
Присоединился: 13 лет назад
Сообщения: 1
Topic starter  

Вообщем задумал я организовать дистанционное управление на оптопаре, но сначала решил всё проверить на компе и как всегда это бывает ничего у меня не получилось))
Код для передатчика:

#include <16f84.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#byte PORTB = 0x06
#byte TRISB = 0x086
#byte PORTA = 0x05
#byte TRISA = 0x085
#byte INTCON = 0x0B
#byte OPTION_REG = 0x081
#bit T0CS = OPTION_REG.5
#bit PS0 = OPTION_REG.0
#bit PS1 = OPTION_REG.1
#bit PS2 = OPTION_REG.2
#bit GIE = INTCON.7
#bit T0IE = INTCON.5
#bit T0IF = INTCON.2
void main ()
{
PORTA=0;
TRISA=0b1111;
PORTB=0b00000001;
TRISB=0;
while (1)
{
if (PORTA==0b0001)
{
PORTA=0;
PORTB=0b10000001;
T0CS=0;
PS0=1;
PS1=1;
PS2=1;
T0IE=1;
GIE=1;
while (T0IF!=1)
{
PORTB=0b00000001;
}
T0IF=0;
while (T0IF!=1)
{
PORTB=0b00000001;
}
T0IF=0;
while (T0IF!=1)
{
PORTB=0b00000001;
}
T0IF=0;
while (T0IF!=1)
{
PORTB=0b10000001;
}
T0IF=0;
T0IE=0;
GIE=0;
}
}
}

Код для приёмника:

#include <16f84.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#byte PORTB = 0x06
#byte TRISB = 0x086
#byte INTCON = 0x0B
#byte OPTION_REG = 0x081
#bit GIE = INTCON.7
#bit T0IF = INTCON.2
#bit T0IE = INTCON.5
#bit T0CS = OPTION_REG.5
#bit PS0 = OPTION_REG.0
#bit PS1 = OPTION_REG.1
#bit PS2 = OPTION_REG.2
int8 result=0b00000000;
void main()
{
TRISB=0b00000001;
PS0=1;
PS1=1;
PS2=1;
T0CS=0;
PORTB=0;
while(1)
{
if (PORTB==0b00000001)
{
T0IE=1;
GIE=1;
PORTB=0;
while (T0IF!=1)
{
if (PORTB==0b00000000)
result=0;
}
T0IF=0;
while (T0IF!=1)
{
if (PORTB==0b00000000)
result=0;
}
T0IF=0;
while (T0IF!=1)
{
if (PORTB==0b00000000)
result=0;
else
result=result | 0b00000010;
}
T0IF=0;
while (T0IF!=1)
{
if (PORTB==0b00000000)
result=0;
else
result=result | 0b00000001;
}
T0IF=0;
T0IE=0;
GIE=0;
}
if (result==0b00000001)
PORTB=0b10000000;
}
}

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


Цитата