示例#1
0
void main()
{
   //T1CONL=0x30;
   //T1CONH=0xA0;
   
   setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_16);
   set_timer0(0);
   led_io=0;
   enable_interrupts(INT_TIMER0);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   setup_io_dieukhien();
   Speaker_io=0;
   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
   lcd_init();
   delay_ms(10);
   init_DS1307();
   delay_ms(10);
   init_ext_eeprom();
   delay_ms(10);
   LED_LCD_IO=0;
   LED_LCD=1;
   Init_595();
   menu_system=0;
   load_eeprom();
   off_all_van();
   while(true)
   {
      switch_menu();
   }
}
//ham su ly du lieu nhan tu uart 
// ban tin co dinh dang "TEMP,HUFF"
// ban tin gom 2 byte
// ham nay duoc goi trong ngat uart
void mode3_uart_rev()
{
   unsigned char buff_rx[3];
   unsigned char rx_count;
   //lay gia tri nhiet do 
   temp=buff_rx[0];
   huff=buff_rx[1];
   // check xem neu nhu nhu gia tri nhiet do hoac do am nho hon nguong thi bat van. neu khong thi tat van
   if(temp>temp_max || huff< huff_max)
      on_all_van();
   else
      off_all_van();
}
// ham nay duoc su dung trong ngat uart khi nhan ban tin dieu khien
// tu gateway
// bien rx_data la bien luu gia tri data nhan tu uart
void dieukhien_van()
{
   
   unsigned long i;
   rx_data = RCREG;
   //nhan du lieu va dua vao du lieu nhan dc vao bien data
   // check xem ban tin du lieu la gi
   switch(rx_data)
   {
      // nhan duoc ban tin bat van 1
      case 0x81:
      {
         Van1=1;                 // bat van 1
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x81);
         // check xem may bom co duoc bat khong?
         // neu may bom dang tat thi bat may bom len 
         if(MAYBOM!=1) Maybom=1;
      }
      break;
      // nhan duoc ban tin dieu khien van 2
      case 0x82:
      {
         Van2=1;                 // bat van 2
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x82);
         // check xem may bom co duoc bat khong?
         // neu may bom dang tat thi bat may bom len 
         if(MAYBOM!=1) Maybom=1  ;       
      }
      break;
      // nhan duoc ban tin dieu khien van 3
      case 0x83:
      {
         Van3=1;                 // bat van 3
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x83);
         // check xem may bom co duoc bat khong?
         // neu may bom dang tat thi bat may bom len 
         if(MAYBOM!=1) Maybom=1   ;      
      }
      break;
      // nhan duoc ban tin dieu khien van 4
      case 0x84:
      {
         Van4=1;                 // bat van 4
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x84);
         // check xem may bom co duoc bat khong?
         // neu may bom dang tat thi bat may bom len 
         if(MAYBOM!=1) Maybom=1  ;       
      }
      break;
      // nhan duoc ban tin dieu khien van 5
      case 0x85:
      {
         Van5=1;                 // bat van 5
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x85);
         // check xem may bom co duoc bat khong?
         // neu may bom dang tat thi bat may bom len 
         if(MAYBOM!=1) Maybom=1   ;      
      }
      break;
      // nhan duoc ban tin dieu khien van 6
      // van 6 dung cho vuon tue
      case 0x86:
      {
         Van6=1;                 // bat van 6
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x86);
         // check xem may bom co duoc bat khong?
         // neu may bom dang tat thi bat may bom len 
         if(MAYBOM!=1) Maybom=1   ;      
      }
      break;
      // nhan duoc ban tin bat tat ca cac van 
      case 0x8F:
      {               
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x8F);
         on_all_van();
      }
      break;
      // nhan duoc ban tin dieu khien tat van 1
      case 0x01:
      {
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x01);
         // check xem co con van nao duoc bat khong?
         // neu nhu cac van tat het thi tat may bom
         // sau do moi tat van duoc dieu khien
         if(Van2==0&&Van3==0&&Van4==0&&Van5==0&&Van6==0) 
         {
            Maybom=0;
            // tre 1 khoang thoi gian roi moi tat van dieu khien
            for(i=0;i<1000;i++);
         }
         Van1=0;                 // tat van 1
      }
      break;
      // nhan duoc ban tin dieu khien tat van 2
      case 0x02:
      {
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x02);
         // check xem co con van nao duoc bat khong?
         // neu nhu cac van tat het thi tat may bom
         // sau do moi tat van duoc dieu khien
         if(Van1==0&&Van3==0&&Van4==0&&Van5==0&&Van6==0) 
         {
            Maybom=0;
            // tre 1 khoang thoi gian roi moi tat van dieu khien
            for(i=0;i<1000;i++);
         }
         Van2=0;                 // tat van 2
      }
      break;
      // nhan duoc ban tin dieu khien tat van 3
      case 0x03:
      {
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x03);
         // check xem co con van nao duoc bat khong?
         // neu nhu cac van tat het thi tat may bom
         // sau do moi tat van duoc dieu khien
         if(Van1==0&&Van2==0&&Van4==0&&Van5==0&&Van6==0) 
         {
            Maybom=0;
            // tre 1 khoang thoi gian roi moi tat van dieu khien
            for(i=0;i<1000;i++);
         }
         Van3=0;                 // tat van 3
      }
      break;
      // nhan duoc ban tin dieu khien tat van 4
      case 0x04:
      {
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x04);
         // check xem co con van nao duoc bat khong?
         // neu nhu cac van tat het thi tat may bom
         // sau do moi tat van duoc dieu khien
         if(Van1==0&&Van2==0&&Van3==0&&Van5==0&&Van6==0) 
         {
            Maybom=0;
            // tre 1 khoang thoi gian roi moi tat van dieu khien
            for(i=0;i<1000;i++);
         }
         Van4=0;                 // tat van 4
      }
      break;
      // nhan duoc ban tin dieu khien tat van 5
      case 0x05:
      {
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x05);
         // check xem co con van nao duoc bat khong?
         // neu nhu cac van tat het thi tat may bom
         // sau do moi tat van duoc dieu khien
         if(Van1==0&&Van2==0&&Van3==0&&Van4==0&&Van6==0) 
         {
            Maybom=0;
            // tre 1 khoang thoi gian roi moi tat van dieu khien
            for(i=0;i<1000;i++);
         }
         Van5=0;                 // tat van 5
      }
      break;
      // nhan duoc ban tin dieu khien tat van 6
      case 0x06:
      {
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x06);
         // check xem co con van nao duoc bat khong?
         // neu nhu cac van tat het thi tat may bom
         // sau do moi tat van duoc dieu khien
         if(Van1==0&&Van2==0&&Van3==0&&Van4==0&&Van5==0) 
         {
            Maybom=0;
            // tre 1 khoang thoi gian roi moi tat van dieu khien
            for(i=0;i<1000;i++);
            Van6=0;                 // tat van 1
         }
      }
      break;
      // nhan duoc ban tin dieu khien tat het cac van
      case 0x0F:
      {
         //gui lai ban tin phan hoi cho gateway thong qua uart
         uart_putchar(0x0F);
         off_all_van();
      }
      default:
      break;
   }
   rx_data=0;
}