📄 remote1.c
字号:
/**************************************************************************/
#include <remote.h>
void main( void )
{
init_lcd( );
system_init( );
while( 1 )
{
key_value = kb_scan( );
if(key_value)
key_handle( );
if( (in_enable)&&(!TR0) )
{
if( (key_value!=0x84)&&(key_value!=0x90) )
{
if(cursor_y<3)
set_cursor(cursor_x,3);
}
}
}
}
/**************************************************************************\
*
* 函数名 :void system_init( void )
*
* 功 能 :init system
*
* 参 数 :none
*
* 返回值 : none
*
\**************************************************************************/
void system_init( void )
{
uchar nextpage;
uint readaddr;
FLASH_read( KINDADDR, &kind_info1, 4 );//system kind infomation
if( kind_info1.kind_num==0 )
{
roll_station = 0xff;
dev_select( );
}
else
{
readaddr = kind_info1.curr_kind_index * 256 + DEVICEBASE;//the kind device addr
FLASH_read( readaddr, &device_info1, 12 );//the kind device infomation
if( device_info1.device_num==0 )
{
roll_station = 0xff;
dev_select( );
}
else
{
readaddr = readaddr + 12 + 20 * device_info1.curr_device_index;
FLASH_read( readaddr, &curr_device, 20 );//current device infomation
readaddr = curr_device.param_addr;
FLASH_read( readaddr, &curr_param_file_info, 7);//param file infomation
disp_base_addr = 20*curr_param_file_info.code_length + 7 + readaddr;//disp param base address
param_size = (12+curr_param_file_info.code_length)*10 + 3;
//some variable initialize
page_flag = 0;
fun_ctrlH = 0;
fun_ctrlL = 0xff;
old_page_flag = 0;
incept_state = 1;
roll_station = 0xff;
key_value = 0;
old_key_value = 0;
t0_counter = 0;
in_enable = 0;
curr_chan = 0;
clear( );
nextpage = 0;
if( curr_param_file_info.set_disp_num||curr_param_file_info.work_disp_num )
{
//search for the valid page or go to the input mode
while( !display( nextpage,0 ) )
{
readaddr = page_flag * param_size + disp_base_addr + 10*(12+curr_param_file_info.code_length) + 1;
nextpage = FLASH_read_B( readaddr );
clear( );
if(nextpage==0)
{
display( nextpage,1 );
if(!page_kind)
{
open_cursor();
set_cursor(0,3);
old_key_value = 0;
in_enable = 1;
}
break;
}
}
}//when not valid page go to the device select for antother device
else
{
roll_station = 0xff;
dev_select( );
}
}
}
}
/**************************************************************************\
*
* 函数名 :void display( uchar dispNo )
*
* 功 能 :display
*
* 参 数 :dispNo
*
* 返回值 : uchar
*
\**************************************************************************/
uchar display( uchar dispNo,uchar mode )
{
uchar i;
uchar j;
uchar k;
uchar m;
uchar rsult;
uint readaddr;
rsult = 0;
readaddr = dispNo*param_size + disp_base_addr + 10*(12+curr_param_file_info.code_length);
page_kind = FLASH_read_B( readaddr );
readaddr = dispNo*param_size + disp_base_addr;
for(i=0; i<10; i++)
{
FLASH_read( readaddr, param[i], 10 );
for(j=0;j<10;j++)
{
if( (param[i][j]!=0)&&(param[i][j]!=32) )
break;
}
if( j<10 )
{
for(k=0;k<10;k++)
{
if( param[i][k]>=128 )
break;
}
if( k<10 )
display_hanzi_str(param[i], i, 0, 0);//显示汉字
else
{
if(!page_kind)
{
m = 0x30 + dispNo;
disp_char(m, i, 0, 0 );
m = 0x30 + i;
disp_char(m, i, 1, 0 );
disp_char('-', i, 2, 0 );
disp_string( param[i], i, 3, 0);
}
else
disp_string( param[i], i, 0, 0);
}
rsult = 1;
}
else
{
if( (!page_kind)&&mode )
{
m = 0x30 + dispNo;
disp_char(m, i, 0, 0 );
m = 0x30 + i;
disp_char(m, i, 1, 0 );
disp_char('-', i, 2, 0 );
}
}
readaddr = readaddr + 12 + curr_param_file_info.code_length;
}
page_flag = dispNo;
return rsult;
}
/**************************************************************************\
*
* 函数名 :void key_handle( void )
*
* 功 能 :key handle
*
* 参 数 :page
*
* 返回值 : none
*
\**************************************************************************/
void key_handle( void )
{
if( in_enable )
input_handle( );
else
{
if( page_kind<2 )
disp_handle( );
else
{ if( page_flag==100 )
dev_sel_handle( );
else if( page_flag==101 )
dev_watch_handle( );
else if( page_flag==102 )
R232_down_handle( );
}
}
}
/**************************************************************************\
*
* 函数名 :void disp_handle( void )
*
* 功 能 :display handle
*
* 参 数 :dispNo
*
* 返回值 : none
*
\**************************************************************************/
void disp_handle( void )
{
uchar i;
uchar j;
uchar m;
uchar nextpage;
uint readaddr;
uint funcodeaddr;
uchar NumTab[10] = {0x21,0x22,0x24,0x28,0x30,0x41,0x42,0x44,0x48,0x50};
//数字键处理
for(i=0;i<10;i++)
{
if( key_value==NumTab[i] )
{
for(j=0;j<10;j++)
{
if( (param[i][j]!=0)&&(param[i][j]!=32) )
break;
}
if(j<10)
NumKey_handle( i );
break;
}
}
//功能键处理
if(i==10)
{
funcodeaddr = curr_device.param_addr + 7;//function key code address
switch(key_value)
{
case 0x84://频道加
if( fun_ctrlL&1 )
{
readaddr = funcodeaddr;
code_handle( readaddr, curr_param_file_info.code_type );
}
break;
case 0x88: //频道减
if( fun_ctrlL&2 )
{
readaddr = funcodeaddr + curr_param_file_info.code_length;
code_handle( readaddr, curr_param_file_info.code_type );
}
break;
case 0x90: //声音加
if( fun_ctrlL&4 )
{
readaddr = funcodeaddr + 2*curr_param_file_info.code_length;
code_handle( readaddr, curr_param_file_info.code_type );
}
break;
case 0xc1://声音减
if( fun_ctrlL&8 )
{
readaddr = funcodeaddr + 3*curr_param_file_info.code_length;
code_handle( readaddr, curr_param_file_info.code_type );
}
break;
case 0xc2: //静音
if( fun_ctrlL&0x10 )
{
readaddr = funcodeaddr + 4*curr_param_file_info.code_length;
code_handle( readaddr, curr_param_file_info.code_type );
}
break;
case 0xf0://关机
if( fun_ctrlL&0x20 )
{
readaddr = funcodeaddr + 5*curr_param_file_info.code_length;
code_handle( readaddr, curr_param_file_info.code_type );
}
break;
case 0xc4://单双切换
if( fun_ctrlL&0x40 )
{
readaddr = funcodeaddr + 6*curr_param_file_info.code_length;
code_handle( readaddr, curr_param_file_info.code_type );
}
break;
case 0xe4://遥控器状态切换
if( page_kind == 1 )
{
clear( );
old_page_flag = page_flag;
nextpage = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -