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

📄 initial.c

📁 keil C51 LCD 驱动源码,其中还有I2C驱动,ADC驱动,键盘操作等,是一个完整的keil源代码,供大家参考
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************
   +----------------------------------------------------------------------+
   | Copyright Trumpion Microelectronics Inc. 1999                        |
   | Trumpion Microelectronics Inc. reserves the right to change products |
   | or specifications without notice.                                    |
   +----------------------------------------------------------------------+
   Project    : LCD monitor
   Version    : 0.94
   File Name  : initial.c
   Functions  : power-on initial table and function
   Revision   :

   1999-05-18  OriginalTeam    First Created
   2000-07-17  Bill Tseng      Modified for Zurac-II
****************************************************************************/

//=========================================================================
// include files                                                          =
//=========================================================================
#include  "lib\extent.h"
#include  "lib\wreg516.h"
#include  "lib\declare.h"
#include  "lib\DEFINE.H"

#include  "lib\global.h"
#include  "lib\modedata.h"
#include  "lib\eeprom.h"
#include  "lib\initial.h"
#include  "lib\MODEDET.H"
#include  "lib\ttfc.h"
#include  "lib\osdm.h"
#include  "lib\adc.h"
#include  "lib\hwmd.h"
#include  <intrins.h>

extern  void    RecallAll(void);

//**************************************************************************
// PROGRAM SECTION
//**************************************************************************
void PowerOnInit(void)
{
        Byte    i;
    PowerDpms(0);           // DPMS  System-power-off
    PowerAdc(0);            // ADC   power-down
    PowerScaler(0);         // Zurac power-off
    PowerPanel(0);          // Panel power-off
    PowerBacklight(0);      // Backlight power-off

    P0 = 0xFF;

    PowerLedPower(0);       // off Power-LED
    PowerLedSleep(0);       // off Sleep-LED

    InitialCPU();
    InitialVariable();

    PowerDpms(1);           // DPMS   System-power-on
    ResetAdc();             // Reset  ADC
    PowerAdc(1);            // ADC    power-on
    PowerScaler(1);         // Zurac  power-on
    TTFC_RSTN_PIN = 0;      // Zurac  Power-On-Reset
    ShortDelay(20);
    TTFC_RSTN_PIN = 1;
    ShortDelay(2);

//  EepromRead(VERSION_NO_ADDR,2);
//  if( (TrmBuf[0]!=HIBYTE(VERSION_NO)) || (TrmBuf[1] != LOBYTE(VERSION_NO)) )
//  {
//     InitialEeprom();
//  }

    EepromRead(0x200,8);
    for(i=0;i<8;i++)
    {
        if(TrmBuf[i]!=0xFF)
                i=50;
    }
    if(i<20)
    {
        InitialEeprom();
        RecallAll();
    }

    InitialCheckEeprom();   // Verify EEPROM data
    EepromTimingDefault( FREERUN_MODE );
    Ttfc(FREERUN_MODE,0);   // This is a must. Do not remove it
    InitialOsd();
    InitialCheckEeprom();   // Double check EEPROM data

#if 0    // initial power off
    PowerBacklight(0);      // Backlight power-off
    PowerDpms(0);           // DPMS System-power-off
    FgPowerStby = 0;
    FgPowerOff  = 1;
    Delay(125);
#endif

    AdcSource(InputSource);
    ShortDelay(10);
    FreeRunInit();
    PowerLedPower(0);       // on  Power-LED
    PowerLedSleep(0);       // off Sleep-LED

    FgPowerStby = 1;
    FgPowerOff = 0;
    FgFreeRun = 0;
    FgInputKeyFlag = 0;
    ModeCounter = 0xFF;

#if     ZURAC_HWMD
    SyncSource = 0xA3;
    HWMD_Init();
    Delay(10);
#endif  // ZURAC_HWMD

    FgKeyFlag=0;
    FgMenuChange=0;
    FgChangeAuto=0;
    FgSaveData=0;
    KeyBuffer=0;
    RxdBufIndex=0;
    FgPowerBurnin=1;
    ZuracInitGamma();
#if (INTERNALOSD) //algu 1204
    ZuracOsdLoadFont(); 
#endif
}
/************************************************************************/
/************************************************************************/
void InitialCPU( void )
{
#if  ZURAC_HWMD
 #if DIGITAL_DOS_MODE
    IE    = 0;              // disable Interrupt
    TMOD  = 0x11;           // Timer 1 : 16 bit timer
                            // Timer 0 : 16 bit timer
    IP    = 0x0D;           // set INT0,INT1,TIMER1 to high priority
    T2CON = 0x02;           // Timer 2 : 16 bit counter

    TH1 = CLOCK_4096us >> 8;
    TL1 = CLOCK_4096us & 0xFF;

    TH0 = 0;                // clear Timer0
    TL0 = 0;

    TH2 = 0;                // clear Counter2
    TL2 = 0;

    TR0 = 0;                // stop  Timer0
    TR1 = 1;                // start Timer1
    TR2 = 0;                // stop  Counter2
    IT0 = 0;                // set INT0 to level trigger
    IT1 = 1;                // set INT1 to eage  trigger
    ET0 = 0;                // disable Timer0   interrupt
    ET1 = 1;                // enable  Timer1   interrupt
    ET2 = 0;                // disable Counter2 interrupt
    EX0 = 1;                // enable  INT0     interrupt
    EX1 = 0;                // disable INT1     interrupt
    EA  = 1;
 #else                      // TONNY Here
    IE    = 0;              // disable Interrupt
    TMOD  = 0x15;           // Timer1 : 16 bit timer
                            // Timer0 : 16 bit counter
    IP    = 0x0D;           // set INT0,INT1,TIMER1 to high priority
//  T2CON = 0;              // Timer2 : 16 bit timer

    T2CON = 0x34;
    SCON  = 0x50;

    TH1 = CLOCK_4096us >> 8;
    TL1 = CLOCK_4096us & 0xFF;

    TH0 = 0;                // clear Counter0
    TL0 = 0;

    TH2 = CLOCK_4MS >> 8;   // initialize Timer2
    TL2 = CLOCK_4MS & 0xFF;

    TR0 = 0;                // stop  Counter0
    TR1 = 1;                // start Timer1
    TR2 = 0;                // stop  Timer2
    IT0 = 1;                // set INT0 to eage trigger
    ET1 = 1;                // enable  Timer1  interrupt
    ET2 = 0;                // disable Timer2  interrupt
    EX0 = 1;                // enable  INT0    interrupt
    EA  = 1;
 #endif
#else
    IE    = 0;              // disable Interrupt
    TMOD  = 0x15;           // Timer 1 : 16 bit timer
                            // Timer 0 : 16 bit counter
    IP    = 0x0D;           // set INT0,INT1,TIMER1 to high priority
    T2CON = 0;

    TH1 = CLOCK_4096us >> 8;
    TL1 = CLOCK_4096us & 0xFF;

    TH0 = 0;
    TL0 = 0;

    TH2 = CLOCK_4MS >> 8;
    TL2 = CLOCK_4MS & 0xFF;

    TR0 = 1;                // start timer0
    TR1 = 1;                // start timer1
    TR2 = 0;                // stop  Timer2
    IT1 = 1;                // set INT1 to eage trigger
    ET1 = 1;
    ET2 = 1;
    EX1 = 1;
    EA  = 1;
#endif
//  TH2 = 0xD9;
//  TL2 = 0xFF;

    TXD=1;
    RXD=1;
    SCON=0x50;
    RCAP2H = 0xFF;
//    RCAP2L = 0xD9;
    RCAP2L = 0XF3;
    T2CON=0x34;
    ES=0;
}
/************************************************************************/
/************************************************************************/
void InitialEeprom(void)
{
    Byte  i;
    Bool  Fgtemp;

    Fgtemp=FgFacMode;
    FgFacMode=1;

    for(i=0; i<TOTAL_MODE_NUMBER; i++)
    {
       EepromTimingDefault(i);           // Timing parameter
       EepromTimingStore(i);
    }

    EepromCommonDefault(0);              // Common parameter 1
    EepromCommonStore(0);
    EepromCommonDefault(1);              // Common parameter 2
    EepromCommonStore(1);
    EepromCommonDefault(2);              // Common parameter 2
    EepromCommonStore(2);
    EepromCommonDefault(3);              // Common parameter 2
    EepromCommonStore(3);

    EepromColorDefault(COLOR_9300);
    EepromColorStore(COLOR_9300);
    EepromColorDefault(COLOR_6500);
    EepromColorStore(COLOR_6500);
    EepromColorDefault(COLOR_5000);
    EepromColorStore(COLOR_5000);
    EepromColorDefault(COLOR_USER);
    EepromColorStore(COLOR_USER);
    
    TrmBuf[1] = 0x00;
    EepromWrite(EE3_UPDATE_USER,1);

    FgFacMode = Fgtemp;
}

void InitialCheckEeprom()
{
    Byte  i;

⌨️ 快捷键说明

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