📄 int.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 + -