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

📄 remote1.c

📁 单片机做遥控器代码
💻 C
📖 第 1 页 / 共 4 页
字号:
                                 open_cursor();
                                 set_cursor(0,3);
				                 old_key_value = 0;
                                 in_enable = 1;
                                 break;
                          }
                   }
                   roll_station = 0xff;
                   break;

                   case 0xc8://save and return to the another kind page
                   TR0 = 0;                   
                   close_cursor( );                                       
                   disp_save( );
                   clear( );
                   display( old_page_flag,1 );                    
                   if(page_kind)
                   {                        
                          in_enable = 0;
                          roll_station = 0xff;
                   }
                   else
                   {
                          open_cursor();
                          set_cursor(0,3);
				          old_key_value = 0;
                   }
                   break;
            }
	  }
}
/**************************************************************************\
*
* 函数名   :void disp_save( void )
*
* 功  能   :save disp data
*
* 参  数   :none
*			
* 返回值   : none
* 
\**************************************************************************/
void disp_save( void )
{
      uchar i;
      uchar j;
      uchar k;
      uint faddr;
      uint paddr;
      uchar Tbuff[128];

      i = 0;
      j = 0;
      faddr = page_flag*param_size + disp_base_addr;
      paddr = faddr;
	  faddr /= 128;
      faddr *= 128;
      k = paddr%128;
      //starting address
      FLASH_read( faddr, Tbuff, 128 );
      for(i=0; i<10; i++)
      {
             for(j=0; j<10; j++)
             {
                    if(k >= 128)
                    {      //the next sector
                           FLASH_erase_S( faddr );
                           FLASH_write( faddr, Tbuff, 128 );
                           faddr += 128;
                           k -= 128;
                           FLASH_read( faddr, Tbuff, 128 );
                    }
                    Tbuff[k++] = param[i][j];
             }
             k += 2;
             k += curr_param_file_info.code_length;
      }
      //the final sector
      FLASH_erase_S( faddr );
      FLASH_write( faddr, Tbuff, 128 );   
}
/**************************************************************************\
*
* 函数名   :void dev_select( void )
*
* 功  能   :device select
*
* 参  数   :none
*			
* 返回值   : none
* 
\**************************************************************************/
void dev_select( void )
{
      uchar i;
      uchar j;
      uchar k;
      uchar w;
      uchar u;
      uint  readaddr;
      struct device_info device_info2; 
      
      display_hanzi_str("设备选择", 0, 0, 0); 
      for(i=0;i<8;i++)
      {
            dev_loc1[i].kind_index = 0xff;
            dev_loc1[i].dev_index = 0xff;
      }
      k = 1;
      for(i=0;i<kind_info1.kind_num;i++)
      {
             readaddr = 0x80 + i*256;
             FLASH_read( readaddr,&device_info2, 12 );
             for(w=0; (device_info2.kind_name[w]!=0)&&(w<10); w++);
             //for one kind
             for(j=0;j<device_info2.device_num;j++)
             {
                    dev_loc1[k-1].kind_index = i;
                    dev_loc1[k-1].dev_index = j;
                    for(u=0; u<w; u++)
                          dev_loc1[k-1].dev_name[u] = device_info2.kind_name[u];
                    dev_loc1[k-1].dev_name[u] = j+0x31;
                    dev_loc1[k-1].dev_name[u+1] = 0;
                    display_hanzi_str(dev_loc1[k-1].dev_name, k, 0, 0);
                    if(roll_station==0xff)//reverse display current device
                    {
                           if( (i==kind_info1.curr_kind_index)&&(j==device_info1.curr_device_index) )
                           {
                                  roll_station = k;
                                  display_hanzi_str(dev_loc1[k-1].dev_name, k, 0, 1); 
                           }
                    }
                    else //reverse display selected device
                    {
                           if(roll_station==k)
                                  display_hanzi_str(dev_loc1[k-1].dev_name, k, 0, 1);
                    }
                    k++;
                    if(k>8)
                           break;
             }
             if(k>8)
                    break;
      }
      display_hanzi_str("添新设备", 9, 0, 0);
      page_kind = 3;
      page_flag = 100;
}
/**************************************************************************\
*
* 函数名   :void dev_sel_handle( void )
*
* 功  能   :device select
*
* 参  数   :none
*			
* 返回值   : none
* 
\**************************************************************************/
void dev_sel_handle( void )
{
      uchar i;
      uchar kbuff[128];
      uint  Raddr;
      uchar NumTab[10] = {0x21,0x22,0x24,0x28,0x30,0x41,0x42,0x44,0x48,0x50};
      if(key_value==0x50)
      {
             clear( );
             R232_down( );
      }
      else
      {
             for(i=1;i<9;i++)
             {      //number key
                    if( (NumTab[i]==key_value)&&(dev_loc1[i-1].kind_index!=0xff) )
                    {
                           Raddr = 0x80 + dev_loc1[i-1].kind_index * 256;
                           Raddr = Raddr + 12 + 20 * dev_loc1[i-1].dev_index;
                           roll_station = i;
                           clear( );
                           dev_watch( Raddr );
                           break;
                    }
             }
             if(i==9)
             {
                    if(key_value==0xc8)//sure
                    {
                           FLASH_read( KINDADDR, kbuff, 128 );
                           kbuff[1] = dev_loc1[roll_station-1].kind_index;
                           FLASH_erase_S( KINDADDR );
                           FLASH_write( KINDADDR, kbuff, 128 );
                           Raddr = DEVICEBASE + dev_loc1[roll_station-1].kind_index * 256;
                           FLASH_read( Raddr, kbuff, 128 );
                           kbuff[11] =  dev_loc1[roll_station-1].dev_index;
                           FLASH_erase_S( Raddr );
                           FLASH_write(Raddr, kbuff, 128);
                           system_init( );
                    }
                    else if(key_value==0x81)//infomation
                    {
                           Raddr = 0x80 + dev_loc1[roll_station-1].kind_index * 256;
                           Raddr = Raddr + 12 + 20 * dev_loc1[roll_station-1].dev_index;
                           clear( );
                           dev_watch( Raddr );
                    }
                    else if(key_value==0xe1)//roll up
                    {
                           display_hanzi_str(dev_loc1[roll_station-1].dev_name, roll_station, 0, 0);
                           roll_station++;
                           if( (dev_loc1[roll_station-1].kind_index==0xff)||(roll_station>8) )
                                 roll_station = 1;
                           display_hanzi_str(dev_loc1[roll_station-1].dev_name, roll_station, 0, 1);
                    }
                    else if(key_value==0xe2)//roll down
                    {
                           display_hanzi_str(dev_loc1[roll_station-1].dev_name, roll_station, 0, 0);
                           if(roll_station==1)
                           {
                                 roll_station = 8;
                                 for( ; dev_loc1[roll_station-1].kind_index==0xff; roll_station--); 
                           }
                           else
                                 roll_station--;
                           display_hanzi_str(dev_loc1[roll_station-1].dev_name, roll_station, 0, 1); 
                    }
                    else if(key_value==0x82) //cancel
                    {
                           roll_station = 0xff;
                           clear( );
                           display(old_page_flag,0);
                    }
             }
      }
      
}
/**************************************************************************\
*
* 函数名   :void dev_watch( void )
*
* 功  能   :device infomation watch
*
* 参  数   :readaddr
*			
* 返回值   : none
* 
\**************************************************************************/
void dev_watch( uint readaddr )
{
      struct device devicex;
      FLASH_read( readaddr,&devicex, 20 );
      display_hanzi_str("生产厂商", 1, 0, 0);
      display_hanzi_str(devicex.factory, 2, 0, 0);
      display_hanzi_str("本机型号", 4, 0, 0);
      display_hanzi_str(devicex.typeNo, 5, 0, 0);
      page_kind = 3;
      page_flag = 101;
}
/**************************************************************************\
*
* 函数名   :void dev_watch_handle( void )
*
* 功  能   :device infomation watch
*
* 参  数   :none
*			
* 返回值   : none
* 
\**************************************************************************/
void dev_watch_handle( void )
{
      clear( );
      dev_select( );
}
/**************************************************************************\
*
* 函数名   :void 232_down( void )
*
* 功  能   :down device code
*
* 参  数   :none
*			
* 返回值   : none
* 
\**************************************************************************/
void R232_down( void )
{
      display_hanzi_str("添新设备", 0,0, 0); 
      display_hanzi_str("请用串口电缆连接本遥控器与电脑", 3, 0, 0);
      display_hanzi_str("确定", 8, 0, 0); 
      display_hanzi_str("退出", 9, 0, 0); 
      page_kind = 3;
      page_flag = 102;
}
/**************************************************************************\
*
* 函数名   :void 232_down_handle( void )
*
* 功  能   :down device code
*
* 参  数   :none
*			
* 返回值   : none
* 
\**************************************************************************/
void R232_down_handle( void )
{
      clear( );
      dev_select( );
}

⌨️ 快捷键说明

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