📄 t10a2_other_disp.c
字号:
#include <iom64.h>
#include <inavr.h>
#include <ioavr.h>
#define uchar unsigned char
#define uint unsigned int
#include "T10A2_flash_extern.H"
#include "T10A2_extern_data.H"
uchar digital_coding_format_1;
uchar digital_signal_x_x_1;
void twi_receive_data_disposal(void)
{
uchar temp,temp1,temp2,temp3;
temp=receive_number_single[0];
temp1=temp;
temp>>=4;
temp1&=0x0f;
temp2=receive_number_single[1];
temp3=temp2;
temp2>>=4;
temp3&=0x0f;
if(!(cd_input_f&BIT(USB_INSERT_F)))//USB拔出,需按左键 改
{
if((input_select==7)||(input_select==8)||(input_select==9)) //有的有音量渐降,有的没,输入通道切换标志无
{bdata4_flag|=BIT(TUICHU_ANJIAN_F); //改 可能与827d重复
bdata3_flag&=~BIT(USB_CARD_PLAYER_F);//新加,待确? osd_byte[0]=0;
osd_byte[1]=0;
remote_usbcard_on_disposal_1(); //2007/4/8
}
}
if(!(cd_input_f&BIT(CARD_INSERT_F)))
{
if((input_select==10)||(input_select==11)||(input_select==12))
{bdata4_flag|=BIT(TUICHU_ANJIAN_F); //改 可能与827d重复
bdata3_flag&=~BIT(USB_CARD_PLAYER_F);//新加,待确? osd_byte[0]=0;
osd_byte[1]=0;
remote_usbcard_on_disposal_1(); //2007/4/8
}
}
if(bdata4_flag&BIT(RECEIVE_8X_DATA_F))
{bdata4_flag&=~BIT(RECEIVE_8X_DATA_F);
if((receive_data_8x[0]==0x81)&&(receive_data_8x[1]==0x7e))
{menu_address=0;
bdata3_flag&=~BIT(MENU_OPEN_F);
osd_byte[0]=0;//送菜单//OSD初始化完成//这里只送了电视影院,待确? osd_byte[1]=0;
remote_usbcard_on_disposal_1();
}
else if((receive_data_8x[0]==0x80)&&(receive_data_8x[1]==0x7f))//播放无文件,需按左键退出
{
if(bdata3_flag&BIT(USB_CARD_PLAYER_F))//在不播放USB,CARD 文件不接收退出健
bdata4_flag|=BIT(TUICHU_ANJIAN_F);
}//进入USB CARD无文件,自动退出,发送命令在退出键中处理
else if((receive_data_8x[0]==0x82)&&(receive_data_8x[1]==0x7d))//直接退出,无需按左键
{//从USB CARD 中退出, 这个不需要按退出键
bdata3_flag&=~BIT(MENU_OPEN_F);
menu_address=0;
osd_byte[0]=0;
osd_byte[1]=0;
state_reg=0x17;
osd_tiaoshi_display();//删
display_init();
remote_usbcard_on_disposal_1();
bdata3_flag&=~BIT(USB_CARD_PLAYER_F);// 清此标志位
}
else if((receive_data_8x[0]==0x83)&&(receive_data_8x[1]==0x7c)) //此操作同? {
{
bdata4_flag&=~BIT(EDITOR_ADD_F);
//从编辑中退出再次启动解码板
if(input_select==0)
{
//还要切光纤
bdata3_flag|=BIT(DECODER_START);
video_select=1;
video_disposal();
}
else if(input_select==1)
{//切同轴
bdata3_flag|=BIT(DECODER_START);
video_select=1;
video_disposal();
}
else if(input_select==4)
{//切同轴
bdata3_flag|=BIT(DECODER_START);
video_select=3;
video_disposal();
}
else asm("nop");
if(theatre_mode==0)//2007/5/17
video_select=3;//新加视频切换
else if(theatre_mode==1)
video_select=1;
else
video_select=2;
video_disposal();
bdata3_flag&=~BIT(MENU_OPEN_F);
menu_address=0;
osd_byte[0]=0;
osd_byte[1]=0;
state_reg=0x17; //删
osd_tiaoshi_display();//删
display_init();
remote_usbcard_on_disposal_1();
bdata3_flag&=~BIT(USB_CARD_PLAYER_F);
I2C_counter=3;
//remote_usbcard_on_disposal_1();
}
else asm("nop");
}
if(bdata4_flag&BIT(NUMBER_SINGLE_F))//数码信号处理,暂时关闭,可在解码通道打开
{
bdata4_flag&=~BIT(NUMBER_SINGLE_F);
if(bdata3_flag&BIT(DIGITAL_SIGNAL_ON))
{
sampling_class=temp1;//采样率 32khz,44.1khz,48khz,64khz,88.2khz,96khz
if((temp2==2)||(temp2==7))
{
digital_signal_x_x=temp2;//bbbb 1+1,1/0,2/0,3/0,2/1,2/2,3/1,3/2,3/3
digital_coding_format=temp3;//ac3,dts,pcm,hdcd
if(digital_signal_x_x_bak!=temp2)//防止重复发
{digital_signal_x_x_bak=temp2;
output_disposal();
}
}
if((menu_address==0x00)&&(!(bdata3_flag&BIT(STATIC_STATE_F)))&&(!(PINC&BIT(CHECK_SINGLE)))&&(digital_coding_format_1!=digital_coding_format||digital_signal_x_x_1!=digital_signal_x_x))
{
if((input_select==0)||(input_select==1)||(input_select==4))
{
digital_coding_format_1=digital_coding_format;
digital_signal_x_x_1=digital_signal_x_x;
state_reg=0x30;
display_init();
// write_data_display(0,2,blank);
write_data_display(2,6,digital_coding_format_display[digital_coding_format]);
write_yigezi_display(6,50);
write_data_display(7,10,digital_signal_x_x_display[digital_signal_x_x]);
// write_data_display(10,13,blank);
//王明文添加
//VFD_Variable = digital_coding_format;
//Display_Proc(StreamFormat_DisMode);
}
}
}
else {//无数字信号
state_reg=0x30;
display_init();
write_data_display(0,13,no_signal_display);
}
}
}
uchar key_cm6930(void)
{
uchar cm_key; //=0;
//start_cm6930();
//write_cm6930(0xb0);
//delay_1us();
//cm_key=read_cm6930();
//delay_1us();
//stop_cm6930();
cm_key = Read_ATA_2508_KeyCode();
return(cm_key);
}
__flash unsigned char Init_Data_Alpha[13] =
{
0x03, // Feature Select,APIS-2 default value = 0
0x5A, // ALPHA0 , default value = 8
0x08, // 0x10, // ALPHA1 , default value = 8 ATA2508DPI7 FamilyUser’s Manual V1.4ATA2508-User’s Manual 97/103
0x08, // 0x12, // ALPHA2 , default value = 8
0x08, // 0x10, // ALPHA3 , default value = 8
0x08, // ALPHA4 , default value = 8
0x5A, // ALPHA5 , default value = 8
0x5A, // ALPHA6 , default value = 8
0x5A, // ALPHA7 , default value = 8
0x08, // ALPHA8 , default value = 8
0x06, // ALPHA9 , default value = 8
0x5A, // ALPHA10 , default value = 8
0x5A // ALPHA11 , default value = 8
};
__flash unsigned char Init_Data_Burst[50] =
{
0x04, // BETA , default value = 4
0x27, // AIC_WAIT , default value = 39
0x41, //0x41, // REF_DELAY , default value = 0
0x02, // HYSTERESIS0 , default value = 1
0x02, // HYSTERESIS1 , default value = 1
0x02, // HYSTERESIS2 , default value = 1
0x02, // HYSTERESIS3 , default value = 1
0x02, // HYSTERESIS4 , default value = 1
0x02, // HYSTERESIS5 , default value = 1
0x02, // HYSTERESIS6 , default value = 1
0x02, // HYSTERESIS7 , default value = 1
0x02, // HYSTERESIS8 , default value = 1
0x02, // HYSTERESIS9 , default value = 1
0x02, // HYSTERESIS10 , default value = 1
0x02, // HYSTERESIS11 , default value = 1
0xAA, // STRENGTH_THRESHOLD0, default value = 1
0xAA, // STRENGTH_THRESHOLD1, default value = 1
0xAA, // STRENGTH_THRESHOLD2, default value = 1
0xAA, // STRENGTH_THRESHOLD3, default value = 1
0xAA, // STRENGTH_THRESHOLD4, default value = 1
0xAA, // STRENGTH_THRESHOLD5, default value = 1
0xAA, // STRENGTH_THRESHOLD6, default value = 1
0xAA, // STRENGTH_THRESHOLD7, default value = 1ATA2508DPI7 FamilyUser’s Manual V1.4ATA2508-User’s Manual 98/103
0xAA, // STRENGTH_THRESHOLD8, default value = 1
0xAA, // STRENGTH_THRESHOLD9, default value = 1
0xAA, // STRENGTH_THRESHOLD10, default value = 1
0xAA, // STRENGTH_THRESHOLD11, default value = 1
0x0F, // Sampling Interval, default value = 3
0xB9, // INTEGRATION TIME, default value = 15
0x0F, // IDLE TIME, default value = 15
0x00, // SIF_SETUP(RESERVED), default value = 0
0x01, // MODE , default value = 1
0xff, // GPIO_REG_L , default value = 0
0xff, // GPIO_REG_H , default value = 0
0x41, // GPIO_CONFIGURATION_L, default value = 0
0x01, // GPIO_CONFIGURATION_H, default value = 0
0x41, // GPIO_DIR_L , default value = 0
0x01, // GPIO_DIR_H , default value = 0
0x04, // CONTROL , default value = 4
0x18, // INT_MASK , default value = 0
0x00, // INT_CLEAR , default value = 0
0xFF, // INT_edge , default value = 0xff
0x03, // CONTROL_2 , default value = 0
0xFF, // BEEP_TIME , default value = 0,
0xC8, // BEEP_FREQUENCY , default value = 0,
0x30, // CALIBRATION INTERVAL , default value = 0x3C
0x00, // EINT_ENABLE , default value = 0
0x00, // EINT_POL , default value = 0
0x00, // FILTER_PERIOD , default value = 0
0x00, // FILTER_THRESHOLD , default value = 0
};
void ATA_2508Start()
{
DDRE|=BIT(CM6930_DTA);
DDRE|=BIT(CM6930_CLK);
PORTE|=BIT(CM6930_DTA);
delay_us(5);
PORTE|=BIT(CM6930_CLK);
delay_us(5);
PORTE&=~BIT(CM6930_DTA);
delay_us(5);
PORTE&=~BIT(CM6930_CLK);
delay_us(5);
}
/******************************************************************************/
void ATA_2508Stop()
{
PORTE&=~BIT(CM6930_CLK);
delay_us(5);
DDRE|=BIT(CM6930_DTA);
delay_us(5);
PORTE&=~BIT(CM6930_DTA);
delay_us(5);
PORTE|=BIT(CM6930_CLK);
delay_us(5);
PORTE|=BIT(CM6930_DTA);
delay_us(5);
}
/******************************************************************************/
void ATA_2508Ack()
{
DDRE|=BIT(CM6930_DTA);
delay_us(5);
PORTE&=~BIT(CM6930_DTA);
delay_us(5);
PORTE|=BIT(CM6930_CLK);
delay_us(5);
PORTE&=~BIT(CM6930_CLK);
delay_us(5);
PORTE|=BIT(CM6930_DTA);
delay_us(5);
}
/******************************************************************************/
void ATA_2508NoAck()
{
DDRE|=BIT(CM6930_DTA);
delay_us(5);
PORTE|=BIT(CM6930_DTA);
delay_us(5);
PORTE|=BIT(CM6930_CLK);
delay_us(5);
PORTE&=~BIT(CM6930_CLK);
delay_us(5);
}
/******************************************************************************/
uchar ATA_2508TestAck()
{
uchar ErrorBit;
DDRE|=BIT(CM6930_DTA);
delay_us(5);
PORTE|=BIT(CM6930_DTA);
delay_us(5);
DDRE&=~BIT(CM6930_DTA);
delay_us(5);
PORTE|=BIT(CM6930_CLK);
delay_us(5);
if (TEST_BIT(PINE,CM6930_DTA))
{
ErrorBit = 1;
}
else
{
ErrorBit = 0;
}
delay_us(5);
PORTE&=~BIT(CM6930_CLK);
return(ErrorBit);
}
/******************************************************************************/
void ATA_2508Write8Bit(uchar input)
{
uchar temp;
DDRE|=BIT(CM6930_DTA);
delay_us(5);
for (temp=8; temp!=0; temp--)
{
if (input & 0x80)
{
PORTE|=BIT(CM6930_DTA);
}
else
{
PORTE&=~BIT(CM6930_DTA);
}
delay_us(5);
PORTE|=BIT(CM6930_CLK);
delay_us(5);
input=input<<1;
PORTE&=~BIT(CM6930_CLK);
delay_us(5);
}
}
/******************************************************************************/
void WriteATA_2508(uchar __flash *Wdata,uint RomAddress,uchar number)
{
uchar num;
ATA_2508Start();
ATA_2508Write8Bit(0xB0);
ATA_2508TestAck();
ATA_2508Write8Bit(RomAddress);
ATA_2508TestAck();
for (num=0;num<number;num++)
{
ATA_2508Write8Bit(*Wdata);
ATA_2508TestAck();
Wdata++;
}
ATA_2508Stop();
}
/******************************************************************************/
uchar ATA_2508Read8Bit()
{
uchar temp,rbyte=0;
DDRE&=~BIT(CM6930_DTA);
delay_us(5);
for (temp=8; temp!=0; temp--)
{
PORTE|=BIT(CM6930_CLK);
delay_us(5);
rbyte=rbyte<<1;
if (TEST_BIT(PINE,CM6930_DTA))
{
rbyte++;
}
PORTE&=~BIT(CM6930_CLK);
delay_us(5);
}
return(rbyte);
}
/******************************************************************************/
void ReadATA_2508(uchar *RamAddress,uint RomAddress,uchar bytes)
{
ATA_2508Start();
ATA_2508Write8Bit(0xB0);
ATA_2508TestAck();
ATA_2508Write8Bit(RomAddress);
ATA_2508TestAck();
ATA_2508Start();
ATA_2508Write8Bit(0xB1);
ATA_2508TestAck();
while (bytes!=1)
{
*RamAddress = ATA_2508Read8Bit();
//ATA_2508TestAck();
ATA_2508Ack();
RamAddress++;
bytes--;
}
*RamAddress = ATA_2508Read8Bit();
ATA_2508NoAck();
ATA_2508Stop();
}
/******************************************************************************/
/* Function: 初始化ATA_2508
/* Input: none
/* Output: 返回按键值
/******************************************************************************/
void Initial_ATA_2508()
{
// ATA2508 INIT process.... // Disable INT that connected to ATA2508.s TINT.
// Set APIS Mode...
delay_us(2000);
WriteATA_2508(Init_Data_Alpha,Feature_Select_Addr,13);
WriteATA_2508(Init_Data_Burst,BETA_Addr,50);
// wait for 1 ms // to activate all the new settings, give a WARM RESET.
delay_us(1000);
WriteATA_2508(Init_Data_Burst,Warm_Reset_Addr,1); //随便写个值
// wait for 1 ~ 10 ms. // Enable INT that connected to ATA2508.s TINT.
delay_us(2000);
}
/******************************************************************************/
/* Function: 读取触摸按键码
/* Input: none
/* Output: 返回按键值
/******************************************************************************/
uchar Read_ATA_2508_KeyCode()
{
uchar ATA_Key_Code;
ReadATA_2508(ATA2508Rev.ATA_2508_Buffer,0x75,2);
switch(ATA2508Rev.ATA_2508_Code)
{
case 0x0008:
ATA_Key_Code = 0x20;
break;
case 0x0004:
ATA_Key_Code = 0xe0;
break;
case 0x0002:
ATA_Key_Code = 0x60;
break;
case 0x0010:
ATA_Key_Code = 0xa0;
break;
case 0x0100:
ATA_Key_Code = 0x40;
break;
case 0x0200:
ATA_Key_Code = 0x80;
break;
default:
ATA_Key_Code = 0x00;
break;
}
//ReadATA_2508(Read_ATA_2508_Data,0x50,12);
if (ATA_Key_Code != 0x00)
{
return(ATA_Key_Code);
}
ReadATA_2508(ATA2508Rev.ATA_2508_Buffer,0x7A,2); //读按键
switch(ATA2508Rev.ATA_2508_Code)
{
case 0x0101:
ATA_Key_Code = 0x10;
break;
case 0x0041:
ATA_Key_Code = 0x90;
break;
case 0x0140:
ATA_Key_Code = 0xc0;
break;
default:
ATA_Key_Code = 0x00;
break;
}
return(ATA_Key_Code);
}
void tv_pingdian_disposal(void)
{
vol_max();
bdata0_flag|=BIT(VOL_DOWN_FLAG);//VOL_DOWN_FLAG=1;//音量慢降
bdata1_flag|=BIT(PINDIAN_F);//pindian_f=1;
display_state=1;
// write_data_display(0,13,blank);
disp_line=0;
output_disposal(); //可这里会送state_counter=6;
state_counter=11;
sendbyte1_r2s15902();
if((input_select==6)&&(ram[10*pingduan+7]>5))
{
//王明文添加
Disp_Type = TV_Mode;
VFD_Variable = ram[10*pingduan+7] + 6;
Display_Proc(HT_TV_Mode_DisMode);
}
else
{
Disp_Type = TV_Mode;
VFD_Variable = ram[10*pingduan+7];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -