www.pudn.com > DDS485.rar > int.c, change:2007-11-01,size:6522b


#include 
#include 
#include 
 
//-----***-CPU寄存器以及外围接口初始化-***-----// 
void InitSeries(void) 
{ 
     PCON =    0x20;//----------------------------------------------------SMOD1=0;SMOD0=0;通讯速率不加倍,SCON.7作为UART的SM0位 
     SCON =    0xd0;//----------------------------------------------------串口工作在模式3,禁止串口接收 
     SSTAT=    0x60;//----------------------------------------------------串口工作在普通模式 
     BRGCON |= 0x02;//----------------------------------------------------选择波特率发生器用于产生UART的波特率,禁止使能 
     //12M 
     //BRGR1=0x27;//------------------------------------------------------装载高字节 
     //BRGR0=0x00;//------------------------------------------------------装载低字节 
     //11.0592M 
     BRGR1=0x23;//--------------------------------------------------------装载高字节 
     BRGR0=0xF0;//--------------------------------------------------------装载低字节 
     BRGCON |= 0x01;//----------------------------------------------------使能拨特率发生器 
     ESR=0;//-------------------------------------------------------------禁止串口中断 
} 
void InitCpuIo(void) 
{ 
     P0M1=0x00; 
     P0M2=0x00; 
     P1M1=0xec;//---------------------------------------------------------1110 1100 
     P1M2=0x0c;//---------------------------------------------------------0000 1100 
     P2M1=0x40;//---------------------------------------------------------设置P26为开漏其他LED口为强上拉 
     P2M2=0x44; 
     //BgLed=1; 
     //HwTxd=1; 
} 
void InitWDT(void) 
{ 
     WDL=255; 
     WDCON=0xE5; 
     WFEED1=0xA5;//-------------------------------------------------------喂狗 
     WFEED2=0x5A; 
} 
void InitINT1(void) 
{ 
     IT1=0;//-------------------------------------------------------------外部中断0采用低边沿触发中断 
     IP0H=0x02; 
     IP0=0x02; 
     EX1=0;//-------------------------------------------------------------禁止外部中断 
} 
 
void InitPWM()                      
{                                   
    //使用外部12M振荡器时:     CCU频率=((12000000/2)/6)*16=16000000MHz 
    //定时器重装值=CCU频率/红外线载频=16000000/38000=421=0x1a5 
    //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比为50% 
    //OCRAH=0x01; 
    //OCRAL=0xa5; 
    //TOR2H=0x03;                     
    //TOR2L=0x4a; 
    //使用外部11.0592M振荡器时:CCU频率=((11059200/2)/6)*16=14745600MHz 
    //定时器重装值=CCU频率/红外线载频=14745600/38000=388=0x184 
    //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比为50% 
    OCRAH=0x01;                     
    OCRAL=0x84; 
    TOR2H=0x03;                     
    TOR2L=0x08; 
    TCR21=0x85;//---------------------------------------------------------PLL预分频为5+1 
    CCCRA=1;//------------------------------------------------------------非反相的PWM比较匹配时置位,在CCU定时器向下溢出时清0 
    PLLEN=1;//------------------------------------------------------------启动PLL 
    HwPwm=1; 
    while(PLLEN==0); 
    TCR20=0x82;//---------------------------------------------------------设置输出模式,非反相PWM 
} 
 
void InitCpu(void) 
{ 
    DIVM=0x00; 
    AUXR1=0x00; 
    InitWDT(); 
    InitCpuIo();    
	InitSeries();	 
	InitINT1(); 
	InitPWM(); 
} 
 
void time0()interrupt 1 
{ 
	static unsigned char t; 
	TH0=0x00; 
	TL0=0x00; 
	t++; 
	if(t==15) 
	{ 
	 time0interrupt=1; 
	 wait(); 
	 t=0; 
	 } 
} 
 
//-----***-命令以及重要参数检验、初始化-***-----// 
/*void InitCmd(void) 
{ 
    PowerThr=1; 
    if(PowerOne==0x81)//--------------------------------------------------运行状态字是否没有改变                                          
    { 
        if(PowerTwo==0x18) 
        { 
            PowerThr=0; 
        }    
    } 
    if(PowerThr) 
    { 
        ReadRtc();//------------------------------------------------------第一次上电读取时钟 
        ClerDataBuf();//--------------------------------------------------清楚数据缓冲区 
        DataResume();//---------------------------------------------------第一次从液晶自检开始 
        PgIIcEn=1;//------------------------------------------------------IIC写入使能开启 
        ElecToHistoryEn=1;//----------------------------------------------冻结电量使能开启 
        PowerSave();//----------------------------------------------------冻结电量 
        EleChFg=0x55;//---------------------------------------------------第一次从液晶自检开始 
        PgIIcEn=0;//---------------------------------------------------第一次从液晶自检开始 
        PgIIcOk=1;//---------------------------------------------------表上电后只能有一次初始化 
        PgKeyFg=0;//---------------------------------------------------第一次从液晶自检开始 
        PgTime=0; 
        SendEndFg=1;//---------------------------------------------------第一次从液晶自检开始 
        ComInceptTime=3;//---------------------------------------------------第一次从液晶自检开始 
        LcdBreakTime=3;//---------------------------------------------------第一次从液晶自检开始 
        ComShowTime=3;//---------------------------------------------------第一次从液晶自检开始 
        PulseAddFg=1;//---------------------------------------------------第一次从液晶自检开始 
        RevTimeStrSt=0;//---------------------------------------------------第一次从液晶自检开始 
        RevTimeEndSt=0;//---------------------------------------------------第一次从液晶自检开始 
        TimePickupFg=0;//---------------------------------------------------第一次从液晶自检开始 
        InfraredBufDptr=0;//---------------------------------------------------第一次从液晶自检开始 
        SeriesBufDptr=0;//---------------------------------------------------第一次从液晶自检开始 
        LcdRunData=2;//---------------------------------------------------第一次从液晶自检开始 
        PgIIcComm=0;//---------------------------------------------------第一次从液晶自检开始 
    	ShowBit[0]=0;//---------------------------------------------------第一次从液晶自检开始 
    	ShowBit[1]=0;//---------------------------------------------------第一次从液晶自检开始 
    	MataStData=0;//---------------------------------------------------第一次从液晶自检开始 
    	PgIIcTime=0;//---------------------------------------------------第一次从液晶自检开始 
        PowerOne=0x81;//---------------------------------------------------第一次从液晶自检开始 
        PowerTwo=0x18;//---------------------------------------------------第一次从液晶自检开始 
    	TimeSpeedData=0; 
    	ChkTimeA=1; 
    } 
    else 
    { 
	    _nop_();//01 
	    _nop_();//02 
	    _nop_();//03 
	    _nop_();//04 
 
    } 
}*/