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

📄 test.bak

📁 NEC 78K0S系列 9222仿真初始化设置
💻 BAK
字号:
#define uchar  unsigned char
#define uint   unsigned int 

#pragma sfr
#pragma asm
#pragma di
#pragma ei
#pragma NOP

#pragma	interrupt  INTTMH1  vect_INTTMH1
#pragma section @@DATA DATASEG  AT 0xFE00
#pragma section @@CODE CODESEG  AT 0xa0
#pragma section @@CNST OPT  AT 80H
const char OPTION = 0B10010101;            /* RESET pin is used as is I/O input*/
                                           /* internal oscillate */
                                           /* Ring osc can't be stopped */

#pragma section @@CNST OPT1  AT 85H

#define LEDRdy     P4.0                      //准备好灯
 
uchar ucR_TimeZero; 
uchar ucR_ADTemp;
uchar ucR_ADMin;
uchar ucR_ADMax;
uchar ucR_ADCount;
uchar ucR_ADResult;
uint  ucR_Uint25ms;
uint uiR_ADTempData;

void Test(void);
noauto void SystemInit(void);
noauto void Adc_Convert(void);
                                           
void main(void)
{	
	DI( );
//	__asm("MOVW AX,#0FE20H");
  //      __asm("MOVW SP,AX"     );
        WDTM = 0x6F;                                   //start watchdog timer with MAX time

        WDTE = 0xAC; 
        SystemInit();        
	EI();
	
	while(1)
	{
	   WDTE = 0xAC;
	   //Adc_Convert();	
	   Test();
	}
} 

norec void init_CPU(void)
{
  PCC  = 0x00;
  PPCC = 0x00;               //set CPU clock to fx 
  LSRSTOP = 0;               //internal Low clock run
  
  IF0 = 0x00;
  MK0 = 0xFF;
  
  LVIM = 0x00;
  
  PM2.0 = 0;
  PM2.1 = 0;
  
  PM4 = 0;
  
  
  //PMC2.0 = 1;
  //PM2.0  = 1;                //A/D
  
  
  P4.0 = 0;
  PM4.0 = 0;   
} 

norec void init_TMH1(void)
{
    TMIFH1 = 0;              /* set interrupt request flag */
    TMMKH1 = 1;              /* disable timerH1 interrupt */	
    TMHE1  = 0;              /* stop timerH1 */     
    TMHMD1 = 0x50;           /* set input clock to Fx / 2^7 ,512us*/
    CMP01  = 0x05;           /* set interval time to 2.5ms */
    TMIFH1 = 0;              /* clear interrupt request flag */
    TMMKH1 = 0;              /* enable timerH1 interrupt */
    TMHE1  = 1; 
}

norec void init_AD(void)
{   
     ucR_ADMin = 0xFF;
     ucR_ADMax = 0x00;
     ADIF  = 0;
     ADCS  = 0;                  //AD stop
     ADCE = 1;                   //enable voltage generator
     ADM = 0x38;                 //0x10=28us,stop
     ADCS = 1;                   //start conversion	
}

norec void init_LVI( void )
{
    uint uiR_LVICout;
	
    LVIS = 0x09;			//compare with 2.85V 
    LVION = 1;		                //enable LVI operation 

    for(uiR_LVICout=0; uiR_LVICout<700; uiR_LVICout++)      NOP();      //wait 0.2 ms 
          
    if(LVIF)
       for(uiR_LVICout=0; uiR_LVICout<700; uiR_LVICout++)    NOP();

    LVIMD = 1;		                 //Reset mode 
} 

noauto void SystemInit(void)
{
  init_CPU();
  init_TMH1();
  //init_AD(); 	
  init_LVI();	
}


void Test(void)
{
   if(ucR_TimeZero/*&&(ucR_ADResult>=0x45)*/)
     {
     	ucR_TimeZero=0;
     	LEDRdy ^= 1;
     }
}

__interrupt void vect_INTTMH1(void)
{
   ucR_Uint25ms ++;
   
   if(ucR_Uint25ms >= 100)
   {
     ucR_Uint25ms = 0;	
     ucR_TimeZero = 6;
   }
}

                                        

⌨️ 快捷键说明

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