📄 jk0061119_main._c
字号:
//ICC-AVR application builder : 2006-11-20 17:24:14
// Target : M162
// Crystal: 7.3728Mhz
#include <iom162v.h>
#include <macros.h>
#include <eeprom.h>
#include <F:\单片机\小监控\新的小监控\连瑞宏达C\JK0061119_include.h>
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0x1F; /////0000 0111// 0: input 1: output
PORTB = 0xff;
DDRB = 0xBF;
PORTC = 0x1F;
DDRC = 0xE0; /// 1110 0000 0x60
PORTD = 0xFF;
DDRD = 0xFF; //
PORTE = 0xFF;
DDRE = 0x00;
}
//Watchdog initialisation
// prescale: 1024K cycles
void watchdog_init(void)
{
WDR(); //this prevents a timout on enabling
WDTCR= 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
}
//TIMER1 initialisation - prescale:1024
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 135mSec
// actual value: 135.000mSec (0.0%)
void timer1_init(void)
{
TCCR1B= 0x00; //stop
TCNT1H= 0xFC; //setup
TCNT1L= 0x34;
OCR1AH= 0x03;
OCR1AL= 0xCC;
OCR1BH= 0x03;
OCR1BL= 0xCC;
TCCR1A= 0x00;
TCCR1B= 0x05; //start Timer
}
#pragma interrupt_handler timer1_ovf_isr:16
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
if(AD_collect_cout>4)
AD_collect_cout=0;
data_collect_flag=1;
TCNT1H= 0xFC; //reload counter high value
TCNT1L= 0x34; //reload counter low value
}
//TIMER2 initialisation - prescale:1024
// WGM: Normal
// desired value: 4mSec
// actual value:
void timer2_init(void)
{
TCCR2= 0x00; //stop
TCNT2= 0xE4; //set count
OCR2= 0x2B; //set compare value
TCCR2= 0x05; //start timer
}
#pragma interrupt_handler timer2_ovf_isr:12
void timer2_ovf_isr(void)
{
TCNT2= 0xE4; //reload counter value
if(Time2_press_key_delay<200)
Time2_press_key_delay++;
if(Time2_press_key_delay==150)
ID_key_pressed=0;
}
//TIMER3 initialisation - prescale:1024
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 178mSec
// actual value: 177.917mSec (0.0%)
void timer3_init(void)
{
TCCR3B= 0x00; //stop
TCNT3H= 0xFA; //setup
TCNT3L= 0xFE;
OCR3AH= 0x0F;
OCR3AL= OCR3AL;
OCR3BH= 0x0F;
OCR3BL= OCR3BL;
TCCR3A= 0x00;
TCCR3B= 0x05; //start Timer
}
#pragma interrupt_handler timer3_ovf_isr:10
void timer3_ovf_isr(void)
{
//TIMER1 has overflowed
Time_five_second++;
Time_one_minute++;
Time_one_hour++;
if(LCD_light_on_time>0)
LCD_light_on_time--;
else
PORTA |= 0x10;
/////////////////////////////////////
if(Master_Com1_S_Data_flag>9)
{
Master_Com1_S_Data_flag_ID++;
Master_Com1_S_Data_flag=1;
}
if(Master_Com1_S_Data_flag_ID>JK_Value[49])
{
temp_temp=A_MK_OUTPUT;
////////////////////////////
A_MK_OUTPUT=0;
/////////////////////////////////
Var_temp_int=temp_temp;////////////////以下三行为模块电流
JK_Value[59]=Var_temp_int & 0xff;
JK_Value[58]=(Var_temp_int >> 8) & 0xff;
Master_Com1_S_Data_flag_ID=0;
Master_Com1_S_Data_flag=8;
Com1_R_Data[19]=Com1_R_Data[18];/////本处纯粹是为了模块故障报警
Com1_R_Data[18]=0;
}
Com1_S_Data_flag=1;
TCNT3H= 0xFA; //reload counter high value
TCNT3L= 0xFE; //reload counter low value
}
//call this routine to initialise all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
watchdog_init();
timer0_init();
timer1_init();
timer2_init();
timer3_init();
uart0_init();
uart1_init();
MCUCR= 0x00;
EMCUCR = 0x00;
// GIMSK= 0x00;
TIMSK= 0x92; //timer interrupt sources
ETIMSK=0x04;
GICR= 0x00;
PCMSK0=0x00;
PCMSK1=0x00;
SEI(); //re-enable interrupts
//all peripherals are now initialised
}
void main(void)
{
unsigned int Current_Value_temp;
char key_pressed_temp,temp;
init_devices();
init_Variables_0();
Com0_S_DataByte=1;
Com0_S_Pointer=Com0_S_Data;
UDR0=*Com0_S_Pointer;
while(1)
{
WDR();
if(ID_key_pressed)
{
if(Time2_press_key_delay==3)
{
key_pressed_temp=catch_press_key();
if(ID_key_pressed==key_pressed_temp)
{
floor_ID_program();
select_data_to_LCD_ram();
LCD_display();
}
else
ID_key_pressed=0;
}
}
else
{
ID_key_pressed=catch_press_key();
}
if(Com0_R_Complete)
{
Com0_R_Complete=0;
Com0_Receive_Datas();
}
if(Com1_S_Data_flag)
{
Com1_S_Data_flag=0;
Com1_Send_Datas();
}
if(Com1_R_Complete)
{
Com1_R_Complete=0;
Com1_Receive_Datas();
}
if(Time_five_second>28)
{
Time_five_second=0;
GL_silicon_control();
//event_fault();
}
if(data_collect_flag)
{
AD_TLC2543(0x00);
error_pickup();
}
temp=TCNT1L;
if(TCNT1H==0xFE)
PORTC&=portc_temp[AD_Channels];
if(Get_Data)
{
Get_Data=0;
Func_Get_Data();
select_data_to_LCD_ram();
LCD_display();
}
if(Time_one_minute>337)
{
Time_one_minute=0;
if(Flag_JC_FC>=1)
{
Time_Limited_JC_register++;
if(Time_Limited_JC_register>*Time_Limited_JC)
{Flag_JC_FC=0;
JK_IO[0]&=0xFE;}
}
if(Flag_JC_FC>=1)
{
temp_temp=*A_Current_FC;
temp_temp*=4095;
//temp_temp*=3276;
temp_temp/=*A_Current_BypassSensor;
Current_Value_temp=temp_temp;
if(A_CD_Current<Current_Value_temp)
Time_Delay_JC_register++;
if(Time_Delay_JC_register>*Time_Delay_JC)
{ Flag_JC_FC=0;
JK_IO[0]&=0xFE;}
}
}
if(Time_one_hour>=20223)
{
PORTA &= 0xF7;
Time_one_hour=0;
Time_Interval_JC_register++;
if(Time_Interval_JC_register>=*Time_Interval_JC)
{Flag_JC_FC=1;
JK_IO[0]|=0x01;}
LCD_display();
PORTA |= 0x08;
}
if(Flag_JC_FC)
Jun_Chong();
else
Fu_Chong();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -