📄 main.lss
字号:
fb8: 39 07 cpc r19, r25
fba: 49 f0 breq .+18 ; 0xfce <wait+0x1c>
for(j=0;j<6;j++){
__asm__(" WDR");
fbc: a8 95 wdr
fbe: a8 95 wdr
fc0: a8 95 wdr
fc2: a8 95 wdr
fc4: a8 95 wdr
fc6: a8 95 wdr
fc8: 2f 5f subi r18, 0xFF ; 255
fca: 3f 4f sbci r19, 0xFF ; 255
fcc: f4 cf rjmp .-24 ; 0xfb6 <wait+0x4>
fce: 08 95 ret
00000fd0 <__vector_10>:
}
}
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
int main(void)
{
unsigned int ms = 0;
unsigned int msa = 0;
unsigned int msb = 0;
unsigned int msc = 0;
unsigned int msf = 0;
unsigned int msg = 0;
volatile unsigned char null = 0;
unsigned char ka = 0,kb = 0;
// unsigned char k = 0;
// const unsigned char *p = name;
vInit(); //初始化片内设备
null = LCD_INIT();//LCD初始化
vLCD_Page_Change(1);
wait(10000);
wait(10000);
wait(10000);
vDataInit();
vDisplay();
//vLCD_Page_Change(1);
//vLCD_Page_Change(2);
while(1)
{
__asm__(" WDR");
if(TIFR&(1<<OCF0))//1KHz---1000us
{
TIFR |=1<<OCF0;
ms +=1;
if(TimeOut>0)TimeOut--;
if(ms >3999)ms=0;
}
if(((ms%2000)==99)&&(msf!=ms))
{
msf=ms;
msg++;
if(msg>10)
{
LCD_page1();
LCD_page2();
msg=0;
}
}
if(((ms%20)==5)&&(msa!=ms))
{
msa = ms;
//TODO: the code below will be execute every 30ms
ka = cKey(cKeyScan());
if(kb != ka)
{
kb = ka;
if(kb < 0x14)vMenu(kb);
}
vSetPara();
if((LowStatus&0x00ff)==0x0009)
{
if(Stepchange==0x0f)Stepchange=0x00;
}
if((LowStatus&0x00ff)==0x0021)
{
if(Stepchange==0x00)
{
Stepchange=0x0f;
N_step = N_step+1;
NS_state = XS_state[N_step];
CVoltage = XVoltage[N_step];
CCurrent = XCurrent[N_step];
StopCurrent = XStopCurrent[N_step];
StopTime = XStopTime[N_step];
StopCapacitor = XStopCapacitor[N_step];
N_flag = S_number[N_step];
WorkStatus = 0x30;
vWork();
dis_fige=1;
if(NS_state==0)
{
WorkStatus = 0x10;
Work_commend=0xff00;
vStop();
dis_fige=0;
}
if(NS_state==5)
{
N_step = N_flag-1;
N_cycle++;
WorkStatus = 0x12;
}
}
}
}
if(((ms%100)==15)&&(msb!=ms))
{
msb = ms;
//TODO: the code below will be execute every 100ms
DisNum(0,0);
}
if(((ms%10)==3)&&(msc!=ms))
{
msc = ms;
AVE_current();
}
}
return(-1);
}
//////////////////////////////////////////////////////////////////////
void vDisplay(void)
{
DisNum(0,0);
DisNum(XVoltage[number],5);
DisNum(XCurrent[number],6);
DisNum(XStopCurrent[number],7);
DisNum(XStopTime[number],8);
DisNum(XStopCapacitor[number],9);
DisNum(S_number[number],10);
vSet_state(XS_state[number]);
}
//中断服务函数区/////////////////////////////////////////////////////////
/*ISR(SPI_STC_vect)
{
unsigned char val = 0x00;
unsigned int tout= 0X0000;
val=SPSR;
val = SPDR;
SPDR=0x55;
}*/
ISR(SPI_STC_vect)
{
fd0: 1f 92 push r1
fd2: 0f 92 push r0
fd4: 0f b6 in r0, 0x3f ; 63
fd6: 0f 92 push r0
fd8: 11 24 eor r1, r1
fda: 2f 93 push r18
fdc: 3f 93 push r19
fde: 8f 93 push r24
fe0: 9f 93 push r25
fe2: ef 93 push r30
fe4: ff 93 push r31
volatile static unsigned char bn = 0xff;
static unsigned char kk = 0x00;
static unsigned char k = 0x00;
static unsigned char mp = 0x00;
unsigned char val = 0x00;
val = SPDR;
fe6: 2f b1 in r18, 0x0f ; 15
if(TimeOut == 0)
fe8: 80 91 60 00 lds r24, 0x0060
fec: 88 23 and r24, r24
fee: 11 f4 brne .+4 ; 0xff4 <__vector_10+0x24>
{
bn = 0;
ff0: 10 92 63 00 sts 0x0063, r1
}
switch(bn)
ff4: 80 91 63 00 lds r24, 0x0063
ff8: 81 30 cpi r24, 0x01 ; 1
ffa: a1 f1 breq .+104 ; 0x1064 <__vector_10+0x94>
ffc: 81 30 cpi r24, 0x01 ; 1
ffe: 20 f0 brcs .+8 ; 0x1008 <__vector_10+0x38>
1000: 82 30 cpi r24, 0x02 ; 2
1002: 09 f0 breq .+2 ; 0x1006 <__vector_10+0x36>
1004: e9 c0 rjmp .+466 ; 0x11d8 <__vector_10+0x208>
1006: 78 c0 rjmp .+240 ; 0x10f8 <__vector_10+0x128>
{
case 0:
{
k = val;
1008: 20 93 83 00 sts 0x0083, r18
switch(k)
100c: 23 30 cpi r18, 0x03 ; 3
100e: d9 f0 breq .+54 ; 0x1046 <__vector_10+0x76>
1010: 24 30 cpi r18, 0x04 ; 4
1012: 28 f4 brcc .+10 ; 0x101e <__vector_10+0x4e>
1014: 21 30 cpi r18, 0x01 ; 1
1016: 81 f0 breq .+32 ; 0x1038 <__vector_10+0x68>
1018: 22 30 cpi r18, 0x02 ; 2
101a: 90 f4 brcc .+36 ; 0x1040 <__vector_10+0x70>
101c: 0a c0 rjmp .+20 ; 0x1032 <__vector_10+0x62>
101e: 25 30 cpi r18, 0x05 ; 5
1020: c1 f0 breq .+48 ; 0x1052 <__vector_10+0x82>
1022: 25 30 cpi r18, 0x05 ; 5
1024: 98 f0 brcs .+38 ; 0x104c <__vector_10+0x7c>
1026: 26 30 cpi r18, 0x06 ; 6
1028: b9 f0 breq .+46 ; 0x1058 <__vector_10+0x88>
102a: 27 30 cpi r18, 0x07 ; 7
102c: 09 f0 breq .+2 ; 0x1030 <__vector_10+0x60>
102e: d4 c0 rjmp .+424 ; 0x11d8 <__vector_10+0x208>
1030: 16 c0 rjmp .+44 ; 0x105e <__vector_10+0x8e>
{
case 0:
{
SPDR = Work_commend%0x100;//发送命令的低字节
1032: 80 91 6e 00 lds r24, 0x006E
1036: 02 c0 rjmp .+4 ; 0x103c <__vector_10+0x6c>
}break;
case 1:
{
SPDR = StopCurrent%0x100;//发送涓流电流
1038: 80 91 0f 01 lds r24, 0x010F
103c: 8f b9 out 0x0f, r24 ; 15
103e: cc c0 rjmp .+408 ; 0x11d8 <__vector_10+0x208>
}break;
case 2:
{
SPDR = CVoltage%0x100;//发送恒压
1040: 80 91 85 00 lds r24, 0x0085
1044: fb cf rjmp .-10 ; 0x103c <__vector_10+0x6c>
}break;
case 3:
{
SPDR = CCurrent%0x100;//发送恒流
1046: 80 91 11 01 lds r24, 0x0111
104a: f8 cf rjmp .-16 ; 0x103c <__vector_10+0x6c>
}break;
case 4:
{
SPDR = StopTemp%0x100;//发送温度上限
104c: 80 91 7a 00 lds r24, 0x007A
1050: f5 cf rjmp .-22 ; 0x103c <__vector_10+0x6c>
}break;
case 5:
{
SPDR = StopTime%0x100;//发送时间上限
1052: 80 91 e5 00 lds r24, 0x00E5
1056: f2 cf rjmp .-28 ; 0x103c <__vector_10+0x6c>
}break;
case 6:
{
SPDR = StopCapacitor%0x100;//发送容量上限
1058: 80 91 a7 00 lds r24, 0x00A7
105c: ef cf rjmp .-34 ; 0x103c <__vector_10+0x6c>
}break;
case 7:
{
SPDR = NS_state%0x100;//发送停止电压
105e: 80 91 6c 00 lds r24, 0x006C
1062: ec cf rjmp .-40 ; 0x103c <__vector_10+0x6c>
}break;
case 8:
{
}break;
default: break;
}
}break;
case 1:
{
switch(k)
1064: 80 91 83 00 lds r24, 0x0083
1068: 84 30 cpi r24, 0x04 ; 4
106a: 69 f1 breq .+90 ; 0x10c6 <__vector_10+0xf6>
106c: 85 30 cpi r24, 0x05 ; 5
106e: 50 f4 brcc .+20 ; 0x1084 <__vector_10+0xb4>
1070: 81 30 cpi r24, 0x01 ; 1
1072: b9 f0 breq .+46 ; 0x10a2 <__vector_10+0xd2>
1074: 81 30 cpi r24, 0x01 ; 1
1076: 80 f0 brcs .+32 ; 0x1098 <__vector_10+0xc8>
1078: 82 30 cpi r24, 0x02 ; 2
107a: d9 f0 breq .+54 ; 0x10b2 <__vector_10+0xe2>
107c: 83 30 cpi r24, 0x03 ; 3
107e: 09 f0 breq .+2 ; 0x1082 <__vector_10+0xb2>
1080: ab c0 rjmp .+342 ; 0x11d8 <__vector_10+0x208>
1082: 1c c0 rjmp .+56 ; 0x10bc <__vector_10+0xec>
1084: 86 30 cpi r24, 0x06 ; 6
1086: 49 f1 breq .+82 ; 0x10da <__vector_10+0x10a>
1088: 86 30 cpi r24, 0x06 ; 6
108a: 10 f1 brcs .+68 ; 0x10d0 <__vector_10+0x100>
108c: 87 30 cpi r24, 0x07 ; 7
108e: 51 f1 breq .+84 ; 0x10e4 <__vector_10+0x114>
1090: 88 30 cpi r24, 0x08 ; 8
1092: 09 f0 breq .+2 ; 0x1096 <__vector_10+0xc6>
1094: a1 c0 rjmp .+322 ; 0x11d8 <__vector_10+0x208>
1096: 2d c0 rjmp .+90 ; 0x10f2 <__vector_10+0x122>
{
case 0:
{
SPDR = Work_commend/0x100;//发送命令的高字节
1098: 80 91 6e 00 lds r24, 0x006E
109c: 90 91 6f 00 lds r25, 0x006F
10a0: 04 c0 rjmp .+8 ; 0x10aa <__vector_10+0xda>
kk = val;
}break;
case 1:
{
SPDR = StopCurrent/0x100;//发送涓流电流
10a2: 80 91 0f 01 lds r24, 0x010F
10a6: 90 91 10 01 lds r25, 0x0110
10aa: 89 2f mov r24, r25
10ac: 99 27 eor r25, r25
10ae: 8f b9 out 0x0f, r24 ; 15
10b0: 20 c0 rjmp .+64 ; 0x10f2 <__vector_10+0x122>
kk = val;
}break;
case 2:
{
SPDR = CVoltage/0x100; //发送恒压
10b2: 80 91 85 00 lds r24, 0x0085
10b6: 90 91 86 00 lds r25, 0x0086
10ba: f7 cf rjmp .-18 ; 0x10aa <__vector_10+0xda>
kk = val;
}break;
case 3:
{
SPDR = CCurrent/0x100; //发送恒流
10bc: 80 91 11 01 lds r24, 0x0111
10c0: 90 91 12 01 lds r25, 0x0112
10c4: f2 cf rjmp .-28 ; 0x10aa <__vector_10+0xda>
kk = val;
}break;
case 4:
{
SPDR = StopTemp/0x100; //发送温度上限
10c6: 80 91 7a 00 lds r24, 0x007A
10ca: 90 91 7b 00 lds r25, 0x007B
10ce: ed cf rjmp .-38 ; 0x10aa <__vector_10+0xda>
kk = val;
}break;
case 5:
{
SPDR = StopTime/0x100; //发送时间上限
10d0: 80 91 e5 00 lds r24, 0x00E5
10d4: 90 91 e6 00 lds r25, 0x00E6
10d8: e8 cf rjmp .-48 ; 0x10aa <__vector_10+0xda>
kk = val;
}break;
case 6:
{
SPDR = StopCapacitor/0x100; //发送容量上限
10da: 80 91 a7 00 lds r24, 0x00A7
10de: 90 91 a8 00 lds r25, 0x00A8
10e2: e3 cf rjmp .-58 ; 0x10aa <__vector_10+0xda>
kk = val;
}break;
case 7:
{
SPDR = NS_state/0x100;//发送停止电压
10e4: 80 91 6c 00 lds r24, 0x006C
10e8: 90 91 6d 00 lds r25, 0x006D
10ec: 89 2f mov r24, r25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -