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

📄 int.c

📁 讲述ADE7755芯片的基本知识和一些基本应用包含C语言编程
💻 C
字号:
#include<stdio.h>
#include<reg932.h>
#include<define.h>

//-----***-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

    }
}*/

⌨️ 快捷键说明

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