📄 main.c
字号:
#include <ATT7027.H>
#include <MAIN.H>
xdata struct Emu_Parameter Emu_Parameter;
xdata struct Emu_Parameter_change Emu_Parameter_change;
xdata struct real_energy real_energy;
xdata struct meter_para meter_para;
data unsigned char aa[2]={0x0f,0x01};
xdata unsigned char g_CommBuffer[50];
unsigned char NUM;
unsigned int timea;
void main (void) //_at_ 0x100
{
//unsigned char i;
//i = temp2;
SP =0x7f;//程序堆栈指针
CKCON&= 0xf8;//定时器/计数器时钟控制Timer 使用clk/4 作为时钟
BWPR=0xC3 ;//使能写PMOD[1:0]操作
BWPR=0x9B;//开启所有受保护位的写使能
CBORCFG|=0x80;//开启高频晶振电路功能
BWPR=0xA8;//关闭所有受保护位和受保护寄存器的写使能
while((SYSSCR&0x80) != 0x80)//LOCK=1表示高频晶振已经稳定
{;}
BWPR=0xC3;//使能写PMOD[1:0]操作
BWPR=0x9B;//开启所有受保护位的写使能
CCLKCFG |=0x02;// ;//SYSCK1=1,fsys=fpri
CFMCFG|=0xE4;// ;BROM EN可以调用Monitor Rom中程序,
// BWPR=0xA8;//关闭所有受保护位和受保护寄存器的写使能
LcdDrvInit();
BWPR=0xA8;//关闭所有受保护位和受保护寄存器的写使能
//usart_init();
//interrupt_init();
// init_ATT7027();
// load_Flash_write();
// CLRALL_LCD_BUF();
init_time();
EA =1 ;
Autobaud();
EICON|= 0x20;// ;BREAK PONIT IE
while(1)
{
/****************************************************/
//把这个放到WHILE(1)能编译过前面就不能进行仿真了
if(RI == 1)
{
Cmd_parser();
RI = 0 ;
}
/* for(i=1;i<=24;i++)
{
LADR=i;
LDAT=0xf ;
} */
/****************************************************/
//RTC_CAL_TEMP();
EMU_Parameter_change1();
switch(NUM)
{
case 1: // Time
UpdateLCD(0X11111111);
break;
case 2: // Date
UpdateLCD(0X22222222);
break;
case 3: // Energy
UpdateLCD(0X33333333);
break;
case 4: // PeakLevel
UpdateLCD(0X44444444);
break;
case 5: //Time
UpdateLCD(0X55555555);
break;
case 6: // Energy
UpdateLCD(0X66666666);
break;
case 7: // Energy
UpdateLCD(0X777777771);
break;
case 8: // Energy
UpdateLCD(0X88888888);
break;
case 9: // Energy
UpdateLCD(0X99999999);
break;
default:
UpdateLCD(0XFFFFFFFF);
break;
}
if(timea>100)
{
NUM++;
timea=0;
}
if(NUM>7)
NUM=1;
//communication_dl645();
// DisplayManager();
/****************************************************/
/* for (i=0;i<60;i++)
{
Pulse[i]=i;
}*/
/****************************************************/
/****************************************************/
//在C中嵌入汇编后能编译过但不能进行仿真
/* #pragma asm
mov a,#30h
#pragma endasm*/
/***************************************************/
// Delay(2);
// Delay(2);
/* if(power_ctive<550)
{
real_energy.relay_flag |=bitflag_current ;
if((real_energy.relay_flag &=bitflag_command_off)&&(!(real_energy.relay_flag &=bitflag_fact_off)))
{
CTR_ON=0;
CTR_OFF=1;
real_energy.relay_flag |=bitflag_fact_off ;
}
else if(!(real_energy.relay_flag &=bitflag_command_off)&&(real_energy.relay_flag &=bitflag_fact_off))
{
CTR_ON=1;
CTR_OFF=0;
real_energy.relay_flag &=~bitflag_fact_off ;
}
}
else {
real_energy.relay_flag &=~bitflag_current;
//flag1 &=~bitflag_fact_off;
}*/
/* if((flag1&bitflag_EXLVI))
{
// DI();
display_index=5;
// display();
Power_fail();
do
{P1.2=0;
HALT();
if(WTIF!=0)
;// CalcCalendar();
} while(EXLVI==0);
if(EXLVI)
POWER_On();
// goto aa;
// delay_ms(4);
}
if(WTIF!=0)
{
CalcCalendar();
display_time++;
display();
}
if(!(flag3&bitflag_Play))
{
if(Flag_ICPort)
;// _ICardType();
}
if (current_time.second)
minute_0_deal=0;
//整分,做时段切换
if(current_time.second == 0) //per minute operation
{
if (!minute_0_deal)
{
} // 整点,per 1 hour operation
}
}
}
WDTE=0xac;
energy_add();
dl645(); */
}
}
timer0(void) interrupt 1 using 2
{
timea++;
}
//void Int_isr() interrupt 6
//{
// (Monitor_isr);
//}//
/*void Delay( unsigned int num)
{
while(num >0)
{
num --;
}
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -