⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dac_backup.c

📁 PIC16F877A RTC1307 LCD 16x2 keypad 4x4 and a windows application connect with PIC on RS232
💻 C
📖 第 1 页 / 共 3 页
字号:
   lcd_putc("*Esc       #Save");

   while (true)
   {
      c = kbd_getc();
      if( c != 0 )
      {
         lcd_gotoxy(4,1);
         
         switch(c)
         {
            case '*'://tro ve man hinh chinh
               cap22_xuat_menu_hen_gio();
               return 0;
            case '#':
               kt = luu_gio_hen(m_time, m_weekly, c_input);
               if (kt == 1)
               {
                  cap22_xuat_menu_hen_gio();
                  return 1;
               }
               break;
            case '0':
               if ( m_weekly == 0 && m_cho_phep == 1)
               {
                  lcd_putc('+');
                  m_weekly = 1;
               }else
               {
                  lcd_putc(' ');
                  m_weekly = 0;
               }
               break;
            case '1':
               lcd_putc(" Sunday   ");
               c_input = 1;
               m_weekly = 0;
               m_cho_phep = 1;
               break;
            case '2':
               lcd_putc(" Monday   ");
               m_weekly = 0;
               c_input = 2;
               m_cho_phep = 1;
               break;
            case '3':
               lcd_putc(" Tuesay   ");
               m_weekly = 0;
               c_input = 3;
               m_cho_phep = 1;
               break;
            case '4':
               lcd_putc(" Wednesday");
               m_weekly = 0;
               m_cho_phep = 1;
               c_input = 4;
               break;
            case '5':
               lcd_putc(" Thursday ");
               m_weekly = 0;
               c_input = 5;
               m_cho_phep = 1;
               break;
            case '6':
               lcd_putc(" Friday   ");
               m_weekly = 0;
               c_input = 6;
               m_cho_phep = 1;
               break;
            case '7':
               lcd_putc(" Saturday ");
               m_weekly = 0;
               c_input = 7;
               m_cho_phep = 1;
               break;
            case '8':
               lcd_putc(" Mon~Fri  ");
               m_weekly = 0;
               c_input = 8;
               m_cho_phep = 0;
               break;
            case '9':
               lcd_putc(" Mon~Sat   ");
               m_weekly = 0;
               c_input = 9;
               m_cho_phep = 0;
               break;
            default:
               break;
         }//end switch
      }//end if
   }//end funtion

   return 1;
}
#org 0x1800
void xuat_gio_hen_mac_dinh(char c_h_hour, char c_l_hour, char c_h_minute, char c_l_minute)
{
// xuat_gio_mac_dinh();
   lcd_putc("\f");
   lcd_gotoxy(6,1);
   lcd_putc(c_h_hour);
   lcd_putc(c_l_hour);
   lcd_putc(':');
   lcd_putc(c_h_minute);
   lcd_putc(c_l_minute);
   
   ////////////
   lcd_gotoxy(1,0);
   lcd_putc("*Esc       #Save");
}
#org 0x0800
int1 add_time_alarm(){
   char c,pre_c;
   char c_h_hour, c_l_hour, c_h_minute, c_l_minute;
   struct_time_eeprom m_time;
   byte m_vitri_nhap;
   //   byte kt;

   xuat_gio_hen_mac_dinh('0','0','0','0');
   m_vitri_nhap = 1;

   lcd_blink_on(6,1);
   while (true)
   {
      c = kbd_getc();
      if( c != 0 )
      {
         if (c == '*')//tro ve man hinh chinh
         {
            lcd_blink_off(6,1);
            return 0;
         }
         else if(c == '#')
         {
            lcd_blink_off(6,1);
            
            //ghi lai gio da nhap
            c_h_hour = lcd_getc(6,1);
            c_l_hour = lcd_getc(7,1);
            c_h_minute = lcd_getc(9,1);
            c_l_minute = lcd_getc(10,1);
            //luu gio
            /////////////////////////////
            c = lcd_getc( 6, 1) ;
            m_time.h_hour = c - 0x30;
            c = lcd_getc( 7, 1) ;
            m_time.l_hour = c - 0x30;
            c = lcd_getc( 9, 1) ;
            m_time.h_minute = c - 0x30;
            c = lcd_getc( 10, 1) ;
            m_time.l_minute = c - 0x30;
            //chuyen sang nhap ngay sau do luu gio va ngay
            if (nhap_ngay_hen(m_time) == 1)
            {
               return 1;
            }
            else
            {
               xuat_gio_hen_mac_dinh(c_h_hour, c_l_hour, c_h_minute, c_l_minute);
               m_vitri_nhap = 1;
               lcd_blink_on(6,1);
            }
         }
         else
         {
         //bat_phim_nhap_gio(m_vitri_nhap,c);
            if(m_vitri_nhap == 1)//truong hop nhap so dau tien cua gio
            {
               if((0x29<c)&&(c < 0x33))
               {
                  lcd_gotoxy(6,1);
                  lcd_putc(c);
                  pre_c = c;
                  m_vitri_nhap = 2;
               }
            }else if ( m_vitri_nhap == 2 )//nhap so thu 2 cua gio
            {
               if(pre_c == '2')//chi nhap tu 0 => 3
               {
                  if((0x29 < c)&&(c < 0x34))//20-23 gio
                  {
                     lcd_putc(c);
                     m_vitri_nhap = 3;
                     lcd_blink_on(9,1);
                  }
               }
               else
               {
                  if((0x29 < c)&&(c < 0x40))
                  {
                     lcd_putc(c);
                     m_vitri_nhap = 3;
                     lcd_blink_on(9,1);
                  }
               }

            }else if(m_vitri_nhap == 3)
            {
               if((0x29 < c)&&(c < 0x36))
               {
                  lcd_gotoxy(9,1);
                  lcd_putc(c);
                  m_vitri_nhap = 4;
               }
            }else if(m_vitri_nhap == 4)
            {
               if((0x29 < c)&&(c < 0x40))
               {
                  lcd_putc(c);
                  m_vitri_nhap = 1;
                  lcd_blink_on(6,1);
               }
            }
         }
      }
   }
   return 1;
}

#separate
int1 delete_time_alarm(){
   char c;
   byte m_addr;

   m_addr = xuat_gio_da_luu(0x00,3);
   if (m_addr != 0xFF)
   {
      //tiep tuc xu ly quet phim
      while (true){
         c = kbd_getc();

         if( c != 0 )
         {
            if(c =='4')
            {//dich qua trai
//               m_addr = m_addr - 3;
               m_addr = xuat_gio_da_luu(m_addr-3,-3);
            }
            else if(c == '6')
            {//dich qua phai
//               m_addr = m_addr + 3;
               m_addr = xuat_gio_da_luu(m_addr + 3,3);
            }else if(c=='#')//xac nhan xoa gio
            {
               delete_time_eeprom(m_addr);
               //xuat menu hen gio
               cap22_xuat_menu_hen_gio();

               return 1;
            }else if(c=='*')
            {
               //xuat menu hen gio
               cap22_xuat_menu_hen_gio();
               return 0;
            }
         }
      }

   }
   else
   {
      cap22_xuat_menu_hen_gio();
      return 0;
   }
}

///////////////giao tiep eeprom\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#org 0x1800
void cap1_xuat_menu_chinh()//menu chinh
{
   lcd_putc("\f");
   lcd_gotoxy(2,1);
   lcd_putc("1.Set time/date");
   lcd_gotoxy(2,0);
   lcd_putc("2.Set alarm");
}
/////cac ham xuat menu///////////
#org 0x1800
void cap21_xuat_menu_chinh_gio()//menu chinh gio
{
   lcd_putc("\f");
   lcd_gotoxy(2,1);
   lcd_putc("1.Set time");
   lcd_gotoxy(2,0);
   lcd_putc("2.Set date");

}
/////////////////////
#org 0x1800
void cap22_xuat_menu_hen_gio()//menu hen gio
{
   lcd_putc("\f");
   lcd_gotoxy(2,1);
   lcd_putc("1.Add new");
   lcd_gotoxy(2,0);
   lcd_putc("2.Delete");
}
/////////////
#org 0x0800
void delete_time_eeprom(byte addr_del)
{
   write_eeprom(addr_del,0xff);
   lcd_putc("\f   Deleted!");

   delay_ms(1000);
}
/////////////////////////////
#zero_ram
void main ()
{/////////Initialization//////////////////////////////////////
   struct_date_time temp;
   char c;
   int1 kiemtra,check_init=0;
   byte cancel;
   int8 m_cap_menu = 0;
   //struct_time_eeprom m;
   temp.seconds = 0x00;
   temp.minutes=0x00;
   temp.hours=0x00;
   temp.day=0x07;
   temp.date=0x01;
   temp.month=0x01;
   temp.year=0x06;
   lcd_init();
   kbd_init();
   port_b_pullups(true);
  // init_time(temp);
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_EXT);
   lcd_putc("\f# + 1 : reset");
 //////////////////////////////////////////////////////////////
   while (true){
      c = kbd_getc();
      if( c != 0 )
      {
         switch (m_cap_menu)
         {
            case _0:
               if (c == '*')//them menu chinh
               {  
                  disable_interrupts(GLOBAL); // all interrupts OFF
                  disable_interrupts(INT_EXT);
                  cap1_xuat_menu_chinh();
                  m_cap_menu = _1;
                  check_init = 0;
               }else if(c == '#')
               {
                  check_init = 1;
               }else//cac phim con lai
               {
                  if((c== '1')&&(check_init == 1))
                  {
                     init_time(temp);
                     check_init = 0;
                  }
                  check_init = 0;
               }
             break;
            case _1:
               if (c == '1')//hien menu chinh gio
               {
                  cap21_xuat_menu_chinh_gio();
                  m_cap_menu = _21;
               }else if (c == '2')//hien menu hen gio
               {
                  cap22_xuat_menu_hen_gio();
                  m_cap_menu = _22;
               }else if (c == '*')//tro ve man hinh chinh
               {
                  m_cap_menu = _0;
                  enable_interrupts(GLOBAL);
                  enable_interrupts(INT_EXT);
               }
                      break;
           case _21://truong hop chinh gio, chinh ngay
               if (c == '1')//ham chinh gio
               {
                    kiemtra = edit_time(cancel);
                   if(kiemtra) lcd_putc("\f    Saved!");
                   else if(cancel) lcd_putc("\f   Escape!");
                   else lcd_putc("\f Invalid time!");
                   delay_ms(1000);

                 m_cap_menu= _21;
                 cap21_xuat_menu_chinh_gio();
               }else if (c == '2')//ham hen gio
               {
                  //lcd_putc("\fOk,day set");
                  //delay_ms(1000);
                  kiemtra = update_date(cancel);
                   if(kiemtra) lcd_putc("\f    Saved!");
                   else if(cancel) lcd_putc("\f   Escape!");
                   else lcd_putc("\f Invalid date!");
                   delay_ms(1000);
                  m_cap_menu= _21;
                  cap21_xuat_menu_chinh_gio();
                  //chinh ngay chua cai dat

               }else if(c=='*')
               {
                  cap1_xuat_menu_chinh();
                  m_cap_menu= _1;
               }

               break;
            case _22://truong hop hen gio
               if (c == '1')//Ham hen gio
               {
                 kiemtra = add_time_alarm();
                 m_cap_menu = _22;
                 cap22_xuat_menu_hen_gio();
               }else if (c == '2'){//Ham xoa gio
                  kiemtra = delete_time_alarm();
                  m_cap_menu = _22;
                  cap22_xuat_menu_hen_gio();
               }
               else if (c == '*')//tro ve man hinh chinh
               {
                  cap1_xuat_menu_chinh();
                  m_cap_menu = _1;
               }
             break;
         }
      }//end if
   }//end while
}//end main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -