📄 main.i
字号:
#line 1 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
#line 1 "C:/icc/include/iom8v.h"
#line 7 "C:/icc/include/iom8v.h"
#line 10 "C:/icc/include/iom8v.h"
#line 13 "C:/icc/include/iom8v.h"
#line 16 "C:/icc/include/iom8v.h"
#line 8 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
#line 1 "C:/icc/include/macros.h"
#line 35 "C:/icc/include/macros.h"
void _StackCheck(void);
void _StackOverflowed(char);
#line 9 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
#line 1 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0/discharge.h"
#line 46 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0/discharge.h"
void init_devices(void);
void port_init(void);
void timer0_init(void);
void timer1_init(unsigned int a,unsigned int b,unsigned int top);
void timer2_init(void);
void AD_init(void);
unsigned int read_adc (unsigned char r,unsigned char m);
void system(void);
void taskmgr(void);
void delay_nus(unsigned int n);
void delay_nms(unsigned int n);
void delay10us(void);
void timer(void);
unsigned int key(unsigned char a);
void BH1415_sent(unsigned int data);
void timer1_stop(void);
void timer1_start(void);
void desktop1(void);
void desktop2(void);
void desktop3(void);
void desktop4(void);
void menu_program(void);
void system_clock(void);
unsigned char twi_start(void);
void twi_init(void);
void twi_stop(void);
unsigned char twi_to_write(void);
unsigned char twi_to_read(void);
unsigned char twi_send(unsigned char data);
unsigned char twi_receive(unsigned char *data);
void pt2314_sent(unsigned char data);
void test(void);
void discharge (void);
unsigned int T_BT1_T(void);
unsigned int T_BT1_V(void);
unsigned int T_BT1_I(void);
unsigned int T_BT1_P(void);
void BT1_I_Ctrl (void);
void bt1_v_record(void);
void Capacitance_setting(void);
void discharge_speed(void);
void record_setting(void);
void discharge_init(void);
void discharge_stop(void);
void welcome(void);
void Green_led(void);
void Green_led_init
(unsigned int t,unsigned int cy,unsigned char ht);
void Red_led(void);
void Red_led_init
(unsigned int t,unsigned int cy,unsigned char ht);
#line 10 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
#line 1 "C:/icc/include/eeprom.h"
#line 4 "C:/icc/include/eeprom.h"
int EEPROMwrite( int location, unsigned char);
unsigned char EEPROMread( int);
void EEPROMReadBytes(int addr, void *ptr, int size);
void EEPROMWriteBytes(int addr, void *ptr, int size);
#line 11 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
#line 1 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0/LCD_1602.h"
#line 26 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0/LCD_1602.h"
void LCD_init (void);
void LCD_write_char (unsigned command,unsigned data);
void LCD_write_DATA_PORT(unsigned char data);
void LCD_write_string(unsigned char x,unsigned char y, const unsigned char *s,unsigned char e);
void LCD_write_number(unsigned char x,unsigned char y,unsigned char d,unsigned long dat,const unsigned char *s,unsigned char e);
void LCD_write_time(unsigned char X,unsigned char Y,unsigned char h,
unsigned char m,unsigned char s);
void LCD_write_new(void);
void LCD_check(unsigned char x,unsigned char y);
void LCD_clear(void);
void LCD_init_CGRAM(void);
void LCD_write_CGRAM(unsigned char x,unsigned char y,unsigned char n) ;
#line 12 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
unsigned char keyboard;
unsigned char RunTab=0;
unsigned char RunTab_old;
unsigned char time;
unsigned char sec=0;
unsigned char min=0;
unsigned char hour=0;
unsigned int sc_key,sc_bt1,sc_bt_ctrl,
sc_discharge,sc_eeprom,sc_lcd_write,
sc_bt1_record,sc_key_delay,sc_bt1_v_temp;
unsigned char BT1_state;
unsigned int BT1_V;
unsigned int BT1_I;
unsigned int BT1_T;
unsigned int BT1_V_num;
unsigned int BT1_V_num_temp;
unsigned int bt1_v_temp;
unsigned int bt1_v_temp_1;
unsigned int BT1_I_SET;
unsigned int PWM;
unsigned long BT1_mAh;
unsigned long BT1_time;
unsigned int mAh;
unsigned int D882_P;
unsigned int mAh_set=1000;
unsigned char speed=10;
unsigned int BT1_P;
#pragma interrupt_handler timer2_ovf_isr:5
void timer2_ovf_isr(void)
{
(*(volatile unsigned char *)0x44) = 0x06;
timer();
#line 54 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
system();
taskmgr();
system_clock();
}
#line 62 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
void system(void)
{
if((sc_key_delay==0)&&(keyboard!=0)){sc_key_delay=50;}
if(sc_key_delay==1){keyboard=0;}
if(sc_key==0)
{keyboard=key(keyboard);sc_key=16;}
if(sc_lcd_write==0)
{
desktop1();desktop2();desktop3();desktop4();
Capacitance_setting();discharge_speed();
record_setting();welcome();
LCD_write_new();
sc_lcd_write=32;
}
if(BT1_I_SET)
{
if(sc_bt1==0)
{BT1_mAh+=BT1_I;sc_bt1=450;}
if(sc_discharge==0)
{BT1_time++;sc_discharge=125;}
if(sc_eeprom==0)
{
if(BT1_V<2000)
{discharge_stop();}
EEPROMWriteBytes(0x01F0, & BT1_mAh, sizeof (BT1_mAh));
EEPROMWriteBytes(0x01F4, & BT1_time, sizeof (BT1_time));
sc_eeprom=1250;
}
if(sc_bt_ctrl==0)
{
BT1_I_Ctrl();
if((BT1_I>BT1_I_SET+5)||(BT1_I<BT1_I_SET-5))
sc_bt_ctrl=2;
else sc_bt_ctrl=48;
}
}
if(sc_bt1_v_temp==0)
{bt1_v_temp+=BT1_V;sc_bt1_v_temp=500;}
if(sc_bt1_record==0)
{bt1_v_record();sc_bt1_record=7500;}
}
#line 108 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
void taskmgr(void)
{
if(keyboard==pageup)
{
if(RunTab!=3){RunTab++;keyboard=0;}
}
if(keyboard==pagedown)
{
if(RunTab!=1){RunTab--;keyboard=0;}
}
if(RunTab_old!=RunTab)
{LCD_clear();RunTab_old=RunTab;}
}
void system_clock(void)
{
if(sc_key!=0) sc_key--;
if(sc_bt1!=0) sc_bt1--;
if(sc_discharge!=0) sc_discharge--;
if(sc_eeprom!=0) sc_eeprom--;
if(sc_lcd_write!=0) sc_lcd_write--;
if(sc_bt1_record!=0) sc_bt1_record--;
if(sc_bt1_v_temp!=0) sc_bt1_v_temp--;
if(sc_key_delay!=0) sc_key_delay--;
if(sc_bt_ctrl!=0) sc_bt_ctrl--;
}
void bt1_v_record(void)
{
bt1_v_temp/=15;
EEPROMReadBytes(0x01F8, & BT1_V_num, sizeof (BT1_V_num));
EEPROMWriteBytes(BT1_V_num*2, & bt1_v_temp, sizeof (bt1_v_temp));
if(BT1_V_num<249)
{BT1_V_num++;EEPROMWriteBytes(0x01F8, & BT1_V_num, sizeof (BT1_V_num));}
bt1_v_temp=0;
}
#line 148 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
void main(void)
{
sc_eeprom=500;
delay_nms(20);
init_devices();
LCD_clear();
(*(volatile unsigned char *)0x35)&=~(1<<5);
(*(volatile unsigned char *)0x35)&=~(1<<4);
RunTab=5;
delay_nms(2000);
while(1)
{
discharge_init();
discharge();
delay_nms(100);
}
}
void welcome(void)
{
unsigned char ID=5;
if(RunTab==ID)
{
LCD_write_string(4,0,"Welcome",15);
LCD_write_string(1,1,"Discharger xp",15);
}
}
void discharge_stop(void)
{
BT1_I_SET=0;BT1_I=0;
BT1_state&=~(1<<1);
BT1_state|=(1<<2);
(*(volatile unsigned char *)0x37)&=~(1<<1);(*(volatile unsigned char *)0x35)&=~(1<<4);
PWM=100;
}
void discharge_init(void)
{
BT1_V=T_BT1_V();
if((BT1_V>2000)&&BT1_state==0)
{
BT1_state|=(1<<0);
RunTab=10;
}
}
void Capacitance_setting(void)
{
unsigned char ID=10;
if(RunTab==ID)
{
if((keyboard== 1)&&mAh_set<4000)
{keyboard=0;mAh_set+=100;}
else if((keyboard== 2)&&mAh_set>100)
{keyboard=0;mAh_set-=100;}
else if(keyboard==pagedown)
{
keyboard=0;
EEPROMReadBytes(0x01F0, & BT1_mAh, sizeof (BT1_mAh));
EEPROMReadBytes(0x01F4, & BT1_time, sizeof (BT1_time));
EEPROMReadBytes(0x01FC, & mAh_set, sizeof (mAh_set));
EEPROMReadBytes(0x01FE, & speed, sizeof (speed));
RunTab=12;
}
LCD_write_string(0,0,"Capacitance",0);
LCD_write_number(0,1,0,mAh_set,"mAh",8);
LCD_write_number(10,1,3,BT1_V,"V",15);
}
}
void discharge_speed(void)
{
unsigned char ID=11;
if(RunTab==ID)
{
LCD_write_string(0,0,"speed",0);
LCD_write_number(9,0,0,6000/speed,"min",15);
LCD_write_number(0,1,2,speed,"C",8);
LCD_write_number(9,1,3,mAh_set/100*speed,"A",15);
if((keyboard== 1)&&speed<120)
{keyboard=0;speed+=5;}
else if((keyboard== 2)&&speed>5)
{keyboard=0;speed-=5;}
else if(keyboard==pagedown)
{
keyboard=0;
RunTab--;LCD_clear();
}
}
}
void record_setting(void)
{
unsigned char ID=12;
if(RunTab==ID)
{
EEPROMWriteBytes(0x01FC, & mAh_set, sizeof (mAh_set));
EEPROMWriteBytes(0x01FE, & speed, sizeof (speed));
PWM=500;sc_bt1_record=7500;
sc_eeprom=1250;sc_bt1_v_temp=500;
BT1_I_SET=mAh_set/100*speed;
(*(volatile unsigned char *)0x37)|=(1<<1);(*(volatile unsigned char *)0x35)|=(1<<4);
BT1_state|=(1<<1);
RunTab=1;
LCD_clear();
}
}
#line 254 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
void discharge (void)
{
unsigned long v_temp,i_temp;
unsigned char v,i;
while(BT1_state&(1<<1))
{(*(volatile unsigned char *)0x35)|=(1<<4);
if(i<4)
{i_temp+=T_BT1_I();i++;}
else
{i=0;BT1_I=i_temp>>2;i_temp=0;}
delay_nms(5);
if(v<64)
{v_temp+=T_BT1_V()+(BT1_I>>1); v++;}
else
{v=0;BT1_V=v_temp>>6;v_temp=0;}
delay_nms(5);
D882_P=(BT1_V-(BT1_I>>1))/100;
D882_P*=(BT1_I/10);
BT1_T=T_BT1_T();
delay_nms(5);
}
(*(volatile unsigned char *)0x35)&=~(1<<4);
}
#line 283 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
void desktop2(void)
{
unsigned char ID=2;
if(RunTab==ID)
{
LCD_write_time(7,1,hour,min,sec);
LCD_write_number(7,0,0,BT1_time,"sec",10);
LCD_write_number(0,1,1,BT1_T,"C",0);
LCD_write_number(0,0,0,D882_P,"mW",0);
}
}
void desktop1(void)
{
unsigned char ID=1;
if(RunTab==ID)
{
if(keyboard== 1)
{keyboard=0;BT1_I_SET+=50;}
else if(keyboard== 2)
{keyboard=0;BT1_I_SET-=50;}
else if(keyboard== 8)
{
keyboard=0;
BT1_mAh=0;
BT1_time=0;
EEPROMWriteBytes(0x01F0, & BT1_mAh, sizeof (BT1_mAh));
EEPROMWriteBytes(0x01F4, & BT1_time, sizeof (BT1_time));
BT1_V_num=0;BT1_V_num_temp=0;
EEPROMWriteBytes(0x01F8, & BT1_V_num, sizeof (BT1_V_num));
sec=0;min=0;hour=0;
sc_bt1_record=7500;
}
LCD_write_number(0,0,3,BT1_V,"V",6);
LCD_write_number(0,1,3,BT1_I,"A",6);
if(BT1_state&(1<<2))
LCD_write_string(7,0,"Finish",15);
else
LCD_write_number(7,0,0,PWM,"PWM",0);
LCD_write_number(7,1,1,BT1_mAh/100,"mAh",15);
}
}
void desktop3(void)
{
unsigned char ID=3;
if(RunTab==ID)
{
if(BT1_V_num_temp<BT1_V_num-1)
{
if(keyboard== 1)
{
keyboard=0;
BT1_V_num_temp++;
EEPROMReadBytes(BT1_V_num_temp*2, & bt1_v_temp_1, sizeof (bt1_v_temp_1));
}
}
if(BT1_V_num_temp<BT1_V_num-10)
{
if(keyboard== 9)
{
keyboard=0;
BT1_V_num_temp+=10;
EEPROMReadBytes(BT1_V_num_temp*2, & bt1_v_temp_1, sizeof (bt1_v_temp_1));
}
}
if(BT1_V_num_temp>0)
{
if(keyboard== 2)
{
keyboard=0;
BT1_V_num_temp--;
EEPROMReadBytes(BT1_V_num_temp*2, & bt1_v_temp_1, sizeof (bt1_v_temp_1));
}
}
if(BT1_V_num_temp>10)
{
if(keyboard== 10)
{
keyboard=0;
BT1_V_num_temp-=10;
EEPROMReadBytes(BT1_V_num_temp*2, & bt1_v_temp_1, sizeof (bt1_v_temp_1));
}
}
LCD_write_number(0,1,3,bt1_v_temp_1,"V",8);
LCD_write_number(0,0,0,BT1_V_num_temp,"min",8);
LCD_write_number(10,0,0,BT1_V_num,"min",15);
LCD_write_number(10,1,3,BT1_V,"V",15);
}
}
void desktop4(void)
{
unsigned char ID=4;
if(RunTab==ID)
{
if(PWM<250)
{
if(keyboard== 1)
{
keyboard=0;
PWM+=5;
(*(volatile unsigned int *)0x4A)=PWM-1;
LCD_write_number(0,1,3,534/1*PWM/25,"V",0);
}
}
if(PWM>5)
{
if(keyboard== 2)
{
keyboard=0;
PWM-=5;
(*(volatile unsigned int *)0x4A)=PWM-1;
LCD_write_number(0,1,3,534/1*PWM/25,"V",0);
}
}
LCD_write_time(8,1,hour,min,sec);
LCD_write_number(7,0,0,PWM,"PWM",15);
LCD_write_number(0,0,3,BT1_P,"V",0);
}
}
void BT1_I_Ctrl (void)
{
if(BT1_I_SET!=0)
{
if(BT1_I>BT1_I_SET+1)
{
if(PWM!=0)
PWM-=1;
(*(volatile unsigned int *)0x4A)=PWM;
}
else if(BT1_I<BT1_I_SET-1)
{
if(PWM!=1900)
PWM+=1;
(*(volatile unsigned int *)0x4A)=PWM;
}
}
else
{PWM=300;(*(volatile unsigned int *)0x4A)=PWM;}
}
#line 434 "E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c"
void timer(void)
{
++time;
if(time==125)
{
time=0;
++sec;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -