www.pudn.com > DDS485.rar > int.c
#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 } }*/