Показать сообщение отдельно

  #4  
Старый 02.03.2008, 16:56
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
По умолчанию

Текст программы, часть 1:
Код:
#include <16F676.h>           //Выбираем контроллер
#use delay(clock=4000000)     //Частота внутр генератора 4МГц
#use Fast_IO(A)               //Ручная установка регистров TRIS
#use  Fast_IO(C)
#fuses nowdt, nomclr,intrc_IO //отключаем сторожевой таймер, 
                              //отключаем внешний сброс
                              //работа от внутреннего генератора 
                              //без тактовых импульсов на RA4
#define  DAT1        Pin_A5   // первый датчик (объем)
#define  DAT2        Pin_A4   // второй датчик (контакт)
#define  Sec_On      Pin_A3   // кнопка "поставить на охрану"
#define  Sec_Off     Pin_C5   // кнопка "снять с охраны" секретная :)
#define  Out_Siren   Pin_A0   // выход на сирену
#define  Out_Lamp    Pin_A1   // выход на лампу
#define  Out_Led     Pin_A2   // выход на светодиод

 //переменные********************************************************
 Boolean          Stat_Dat1,  //состояние первого датчика
                              //true, если датчик замкнут (на охране)
                  Stat_Dat2,  //состояние второго датчика
                              //true, если датчик замкнут (на охране)
                  Stat_On,    //состояние кнопки "поставить на охрану" true, если была нажата
                  Stat_Off;   //состояние кнопки "снять с охраны" true, если была нажата
Unsigned int16    Time;       //это время, "тикает" с тактом 0.01 секунды
//прерывания**********************************************************
#Int_Timer0                   // обработка прерывания
   void Timer0_Isr()
      {  ++Time;              // добавляем единицу к счетчику времени, 1 счет=0.01 сек
         Delay_us(13);
         Set_Timer0(100); } 
 //функции***********************************************************
void Initial()                               //функция настройки контроллера
 { setup_adc_ports(NO_ANALOGS);           //все выводы "цифровые"
   setup_adc(ADC_OFF);                    // отключаем АЦП
   setup_timer_0(RTCC_Internal|RTCC_Div_64); // настройка таймера 0
   setup_timer_1(T1_DISABLED);            //отключение таймера 1
   setup_comparator(NC_NC);               //отключение компаратора
   setup_vref(FALSE);                     //отключение порогового напряжения компаратора
   Set_Tris_A(0b11111000);                //выводы RA0, RA1, RA2 - выходы
   Set_Tris_C(0b11111111);                //весь порт С настроен на вход
   enable_interrupts(Global);             //Запускаем счетчик времени
   enable_interrupts(Int_Timer0);
   output_low(Out_Siren);                    //Отключаем сирену и индикацию
   output_low(Out_Lamp);
   output_high(Out_Led);
   Stat_On=false;                            //кнопки считаем отключенными
   Stat_Off=false;
   delay_ms(10000);           //пауза при включении питания (для датчика объема)
                                   //при сбросе питания система 
                                 //попытается встать на охрану
   }
 
Ответить с цитированием