📄 init.c
字号:
#include <reg51.h>
#include "MTV212MN32.h"
#include "gen.h"
#include "comm.h"
#include "I2C.h"
#include "eeprom.h"
#include "osd.h"
#include "intpro.h"
//**************************************************************************
// MTV212M32微处理器所扩充的特殊功能寄存器的定
volatile unsigned char pdata XFR_PADMOD1 _at_ 0x30; //配制DA输出引脚和AD输入引脚
volatile unsigned char pdata XFR_PADMOD2 _at_ 0x31; //配制P5口
volatile unsigned char pdata XFR_PADMOD3 _at_ 0x32; //配制P4口,IIC和行场同步分频输出
volatile unsigned char pdata XFR_PADMOD4 _at_ 0x3A; //P1口的引脚配置
volatile unsigned char pdata XFR_PADMOD5 _at_ 0x3B; //P2口的引脚配置
volatile unsigned char pdata XFR_PADMOD6 _at_ 0x3C; //P5口的引脚配置
volatile unsigned char pdata XFR_OPTION1 _at_ 0x33; //芯片配制:PWM和IIC
volatile unsigned char pdata XFR_OPTION2 _at_ 0x34; //芯片配制:从方式模块A的从地址长度
volatile unsigned char pdata XFR_XBANK _at_ 0x35; //辅助RAM的段控制寄存器,每段128字节
volatile unsigned char pdata XFR_PORT4 _at_ 0x38; //P4口
volatile unsigned char pdata XFR_PORT5 _at_ 0x39; //P5口
//------------------------------------------------------------------------
// MTV212MN32的PWM输出寄存器地
volatile unsigned char pdata XFR_DA0 _at_ 0x20;
volatile unsigned char pdata XFR_DA1 _at_ 0x21;
volatile unsigned char pdata XFR_DA2 _at_ 0x22;
volatile unsigned char pdata XFR_DA3 _at_ 0x23;
volatile unsigned char pdata XFR_DA4 _at_ 0x24;
volatile unsigned char pdata XFR_DA5 _at_ 0x25;
volatile unsigned char pdata XFR_DA6 _at_ 0x26;
volatile unsigned char pdata XFR_DA7 _at_ 0x27;
volatile unsigned char pdata XFR_DA8 _at_ 0x28;
volatile unsigned char pdata XFR_DA9 _at_ 0x29;
volatile unsigned char pdata XFR_DA10 _at_ 0x2A;
volatile unsigned char pdata XFR_DA11 _at_ 0x2B;
volatile unsigned char pdata XFR_DA12 _at_ 0x2C;
volatile unsigned char pdata XFR_DA13 _at_ 0x2D;
//------------------------------------------------------------------------
// MTV212MN32中的同步信号处理、自测模式和中断控制寄存器
volatile unsigned char pdata XFR_HVSTUS _at_ 0x40; //同步信号状态
volatile unsigned char pdata XFR_HCNTH _at_ 0x41; //水平同步信号计数器高6位
volatile unsigned char pdata XFR_HCNTL _at_ 0x42; //水平同步信号计数器低8位
volatile unsigned char pdata XFR_VCNTH _at_ 0x43; //垂直同步信号计数器高4位
volatile unsigned char pdata XFR_VCNTL _at_ 0x44; //垂直同步信号计数器低8位
//unsigned char pdata XFR_HVCTR0 _at_ 0x40;
//unsigned char pdata XFR_HVCTR2 _at_ 0x42;
//unsigned char pdata XFR_HVCTR3 _at_ 0x43;
volatile unsigned char pdata XFR_INTFLG _at_ 0x48;
volatile unsigned char pdata XFR_INTEN _at_ 0x49;
//------------------------------------------------------------------------
// MTV212MN32
volatile unsigned char pdata XFR_IIC_CTR _at_ 0x00; //IIC接口控制寄存器
volatile unsigned char pdata XFR_IIC_STUS1 _at_ 0x01; //IIC接口状态寄存器1
volatile unsigned char pdata XFR_IIC_STUS2 _at_ 0x02; //IIC接口状态寄存器2
volatile unsigned char pdata XFR_IIC_INTFLG _at_ 0x03; //IIC中断标志寄存器
volatile unsigned char pdata XFR_IIC_INTEN _at_ 0x04; //IIC中断允许寄存器
volatile unsigned char pdata XFR_IIC_MBUF _at_ 0x05; //主方式的发送/接受寄存器
volatile unsigned char pdata XFR_IIC_RCABUF _at_ 0x06; //从方式模块A的接受寄存器
//unsigned char pdata XFR_IIC_TXABUF _at_ 0x06; //从方式模块A的发送寄存器
volatile unsigned char pdata XFR_IIC_SLVAADR _at_ 0x07; //从方式模块A的从地址寄存器
volatile unsigned char pdata XFR_IIC_RCBBUF _at_ 0x08; //从方式模块B的接受寄存器
//unsigned char pdata XFR_IIC_TXBBUF _at_ 0x08; //从方式模块B的发送寄存器
volatile unsigned char pdata XFR_IIC_SLVBADR _at_ 0x09; //从方式模块B的从地址寄存器
volatile unsigned char pdata XFR_IIC_DBUF _at_ 0x0A; //DDC1传输寄存器
//------------------------------------------------------------------------
volatile unsigned char pdata XFR_ADC _at_ 0x10;
volatile unsigned char pdata XFR_WDT _at_ 0x18;
#define INIT_DDC_DATA // 如果定义了则进行DDC数据的初始化
//#undef INIT_DDC_DATA
#define XFR_IIC_TXABUF XFR_IIC_RCABUF
#define XFR_IIC_TXBBUF XFR_IIC_RCBBUF
#define XFR_HVCTR0 XFR_HVSTUS
#define XFR_HVCTR2 XFR_HCNTL
#define XFR_HVCTR3 XFR_VCNTH
#define Flg_Init_Eeprom 0 //0表示正常初始化;非零表示强行初始化
void Init(void);
void Init_mtv212mn32(void);
void Init_TDA4857(void);
void Init_TDA4886(void);
void Init_MTV021(void);
void Init_Eeprom(void);
void Init(void)
{
Set_pLED_Normal();
// Mute_ON();//待定
Enable_Degauss();
miscDelay(50);
Disable_Degauss();
Init_mtv212mn32();
sEvent_DisplayMuteOFF(0);
sEvent_PowerSaving(0);
sEvent_SaveEDID(0);
sEvent_SavePar(0);
sEvent_SysReset(0);
Mute_Off();
Init_Eeprom();
Init_TDA4857();
Init_TDA4886();
Init_MTV021();
Get_Mode_Data();
Get_SysConfig_Data();
Flg_SoftStart=1;
Set_Power_Normal();
Flg_PowerState=1;
TMOD=0x01;
TH0=C_T0_DATAH;
TL0=C_T0_DATAL;
IP=0x04; // 00000100
IE=0x82; // 10000110
TR0=1;
}
void Init_mtv212mn32(void)
{
XFR_PADMOD1=0x04; //若pin12为按键输入则为AD
XFR_PADMOD2=0x47; // //1、2、3、30为I/O,36、37、38PW
#if I2cBusType==0 // 采用模拟的IIC总线
XFR_PADMOD3=0x88; // P3.4/P3.5,ISCL/ISDA,DA8,DA9,HCLAMP,STOUT,HBLANK,VBLANK
#elif I2cBusType==1 // 采用MTV212的专用IIC总线
XFR_PADMOD3=0xc8; // HSCL/HSDA,ISCL/ISDA,DA8,DA9,HCLAMP,STOUT,HBLANK,VBLANK
#endif
XFR_PADMOD4=0x8c;
XFR_PADMOD5=0x1a; // 12,23,25,26,27为8051 I/O
XFR_PADMOD6=0x00; // 30,36,37和38脚,均为开路I/O
XFR_OPTION1=0x80; // ENSCL无效
XFR_OPTION2=0x00; //7bit从地址长度
XFR_HVCTR0=0x80; //水平和垂直同步信号均为正极性
XFR_HVCTR2=0x00; //根据初始化模式而定
XFR_HVCTR3=0x04;
XFR_INTEN=0x00;
XFR_IIC_CTR=0x82;
XFR_IIC_INTEN=0xfe;
XFR_IIC_SLVAADR=0xd0;
XFR_IIC_SLVBADR=0xfb;
XFR_IIC_DBUF=0xff;
XFR_ADC=0x84;
XFR_WDT=0x00;
XFR_PORT5=0xff;
//PIN_MUTE=0;
//PIN_CS1=0; //p2.5
//PIN_CS2=0; //p2.6
//PIN_CS3=0; //p2.7
//PIN_DEGAUSS=0;
}
void Init_TDA4857(void)
{
Write_TDA48XX_Reg(0x0d,0x01);
Write_TDA48XX_Reg(0x0d,0x00);
Write_TDA48XX_Reg(0x00,0xef);
Write_TDA48XX_Reg(0x01,0x00);
Write_TDA48XX_Reg(0x02,0x72);
Write_TDA48XX_Reg(0x03,0x7f);
Write_TDA48XX_Reg(0x04,0x07);
Write_TDA48XX_Reg(0x05,0x80);
Write_TDA48XX_Reg(0x06,0x80);
Write_TDA48XX_Reg(0x07,0x80);
Write_TDA48XX_Reg(0x08,0x80);
Write_TDA48XX_Reg(0x09,0x03);
Write_TDA48XX_Reg(0x0a,0xe0);
Write_TDA48XX_Reg(0x0b,0x90);
Write_TDA48XX_Reg(0x0c,0xaf);
Write_TDA48XX_Reg(0x01,0x20);
Write_TDA48XX_Reg(0x0b,0x90);
Write_TDA48XX_Reg(0x0d,0x02);
}
void Init_TDA4886(void)
{
Write_TDA4886_Reg(0x00,0x0f);
Write_TDA4886_Reg(0x01,0x0f);
Write_TDA4886_Reg(0x02,0x3f);
Write_TDA4886_Reg(0x03,0x0d);
Write_TDA4886_Reg(0x04,0x3f);
Write_TDA4886_Reg(0x05,0x3f);
Write_TDA4886_Reg(0x06,0x3f);
Write_TDA4886_Reg(0x07,0x50);
Write_TDA4886_Reg(0x08,0x50);
Write_TDA4886_Reg(0x09,0x50);
Write_TDA4886_Reg(0x00,0x09);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -