Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > PICC - PIC16F628A - IR(TV)


Автор: DemonXX 2.3.2007, 04:51
Люди помогите, не могу разобратца: Спаял схему (в ней все ровно), для записи сигнала (IR) с пульта от ТВ.  Записать надо одну кнопку. Написал (как смог) прошивку, прошил, не работает. Уверен дело в прошивке, объясните пожалуйста что не правильно.  Я уже все перепробовал лампочки мигают, кнопки работают, а сигнал записывать не хочет.  В предоставленном мной исходнике я кнопки убрал.  
У меня в принципе два вопроса:
1)    Как принять эти 128 бит с PIN_B0?
2)    И как отправить их с PIN_A0? 
Прошу сильно не матюкатца  я только учусь.
Благодарю за внимание!!!

Код

#include <16F628A.h>

#FUSES NOWDT               
#FUSES XT                  
#FUSES NOPUT               
#FUSES NOPROTECT               
#FUSES BROWNOUT                 
#FUSES MCLR                     
#FUSES LVP                      
#FUSES NOCPD                    

#use delay(clock=20000000)

//------------------Обозначение диоов----------------------------------------//
#define led_k_on output_high(PIN_A1)
#define led_k_off output_low(PIN_A1)
#define led_z_on output_high(PIN_A2)
#define led_z_off output_low(PIN_A2)

//------------------Обоначение приемо-перидатчика (Irda)---------------------//
#define ir_in  PIN_B0
#define ir_out PIN_A0

//------------------Обозначение кнопок---------------------------------------//
#define but_in PIN_B4
#define but_out PIN_B5
#define but_dell PIN_B6

//------------------Глобaльные перименные-------------------------------------//
typedef unsigned char b_8;
unsigned int dell;
b_8 buf[16];

//------------------Проверка на наличие записи-------------------------------//
int test_eep()
{
   if(read_eeprom(0) != 0xff)
      return true;
      else
      return false;
}

//------------------Прием сигнала-------------------------------------------//
void but_in_ok()
{
    led_z_off;
   led_k_on;
   while(true)
   {
      if(input(ir_in))
         {
          buf[0] = input_b();
          write_eeprom(0, buf[0]);
         };
      };
}
//------------------Передача сигнала----------------------------------------//
void but_out_ok()
{
    led_k_off;
    while(true)
    {
    led_z_on;
   buf[0] = read_eeprom(0x00);   
   buf[1] = read_eeprom(0x01);   
   buf[2] = read_eeprom(0x02);   
   buf[3] = read_eeprom(0x03);   
   buf[4] = read_eeprom(0x04);   
   buf[5] = read_eeprom(0x05);   
   buf[6] = read_eeprom(0x06);   
   buf[7] = read_eeprom(0x07);   
   buf[8] = read_eeprom(0x08);   
   buf[9] = read_eeprom(0x09);   
   buf[10] = read_eeprom(0x0a);   
   buf[11] = read_eeprom(0x0b);   
   buf[12] = read_eeprom(0x0c);   
   buf[13] = read_eeprom(0x0d);   
   buf[14] = read_eeprom(0x0e);   
   buf[15] = read_eeprom(0x0f);
   output_a(buf);
   delay_ms(500);
   led_z_off;
   );
}

//------------------Начало программы----------------------------------------//
void main()
{
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  setup_timer_1(T1_DISABLED);
  setup_timer_2(T2_DISABLED,0,1);
  setup_comparator(NC_NC_NC_NC);
  setup_vref(FALSE);
  setup_oscillator(False);   
   set_tris_a(0x00);
   set_tris_b(0xff);
//      while(true)
//      {
         switch(test_eep)
         {
         case true: but_out_ok(); break;
         case false: but_in_ok();    break;
         default:
           };
//        };
}
         



Автор: DemonXX 6.3.2007, 03:27
Что все AVR юзают? smile 
Или влом просветить(помочь)? smile 
Просто в тайге (в каторой я живу) нету не курсов, не радио кружка. smile 
Вот и приходитца все методом тыка осваивать.  smile 

Насколько я понимаю чтобы принять данные с IR или других модулей (датчики, радио премники),
надо сасредаточитца на Чтение-Модификация-Запись.  smile 
Я правельно понимаю?

Если у кого есть исходник анлогичного дивейса, поделитесь.  smile 

Благодарю за внимание!!!

Автор: Metal_Heart 20.3.2007, 11:42
Цитата(DemonXX @  6.3.2007,  03:27 Найти цитируемый пост)
Что все AVR юзают? smile 

нет не все!

а ты сходи сюда:
http://electronix.ru/forum/index.php?showforum=7

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)