📄 jyzno1.c
字号:
FlashWriteUchar((uchar*)adr_start,xlh[i]);
adr_start++;
}
for(i=3;i>0;i--)
{
FlashWriteUchar((uchar*)adr_start,ganh[i-1]);
adr_start++;
}
FlashWriteUchar((uchar*)adr_start,ganx);adr_start++;
FlashWriteUchar((uchar*)adr_start,(xiangb-11));adr_start++;
FlashWriteUchar((uchar*)adr_start,chuanh[0]);adr_start++;
FlashWriteUchar((uchar*)adr_start,chuanh[1]);adr_start++;
FlashWriteUchar((uchar*)adr_start,pianh[0]);adr_start++;
FlashWriteUchar((uchar*)adr_start,pianh[1]);adr_start++;
for(i=0;i<pian_num;i++)
{
for(j=0;j<3;j++)
{
FlashWriteUchar((uchar*)adr_start,voltage[i][j]);adr_start++;
}
}
FlashWriteUchar((uchar*)adr_start,0x55);adr_start++;
FlashWriteUchar((uchar*)adr_start,0xaa);adr_start++;
FlashErase((uint*)0x1000);
FlashWriteInt((uint*)0x1000,adr_start);//这里默认不会超出存储区,最好有个存储区溢出报警!
//xlh[0-3] ganh[3] ganx xiangb chuanh[2] pian_num voltage[30,3] ---5+3+1+1+2+1+90+30=133字节
//最好还是要有个内存清除键。
}
//*****************************
void fcsave_dat(void)
{
uchar adr_tmp[2];
uchar i,j;
// FlashErase((uint*)0x1000);
read_Flash((uchar*)0x1000,adr_tmp,2);
adr_start = adr_tmp[1]*256+adr_tmp[0];
if(adr_start==0xffff){adr_start=0x4000;}//起始地址
FlashWriteUchar((uchar*)adr_start,fc_pianh);adr_start++;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
FlashWriteUchar((uchar*)adr_start,fc_voltage[i][j]);adr_start++;
}
}
FlashErase((uint*)0x1000);
FlashWriteInt((uint*)0x1000,adr_start+1);//这里默认不会超出存储区,最好有个存储区溢出报警!
}
//*****************************
void taskfun_mainloop(void)
{
if(fkeyfun)
{
P3OUT &= ~BIT0;//灭
P4OUT &= ~BIT2;
P2OUT |=BIT7;// /EN=0;片选无效
P2OUT &= ~BIT6; // /OFF=0;关闭有效
// P2OUT |= BIT6; // /OFF=1;关闭无效
// P2OUT &= ~BIT7;// /EN=0;片选有效
f_232 =0;
TACCTL0 &= ~CM_3; // 禁止捕获
TACTL &= ~MC_3; // 停止定时器---将MC0,MC1置成0
fkeyfun=0;
mode=0;
lcd_off();
fun_dat=1;
LCDMEM[1] =LCD_TAB1[fun_dat];
blink_dat=fun_dat;f_blink=1;blink_address=1;//闪烁
}
}
void taskok_mainloop(void)
{
uchar *addr;
uchar adr_tmp[3];
uchar i;
if(fkeyok)
{
fkeyok=0;
switch(mode)
{
case 0: mode=fun_dat;
f_blink=0;
switch(mode)
{
case 1: lcd_off();//线路号
xlh_cnt=0;
xlh[0]=0;xlh[1]=0;xlh[2]=0;xlh[3]=0;
LCDMEM[1]=LCD_TAB1[0];LCDMEM[2]=LCD_TAB1[0];LCDMEM[3]=LCD_TAB1[0];LCDMEM[4]=LCD_TAB1[0];
blink_dat=0;f_blink=1;blink_address=1;//闪烁
break;
case 2: lcd_off();//杆号
LCDMEM[1]=LCD_TAB1[xlh[0]];LCDMEM[2]=LCD_TAB1[xlh[1]];LCDMEM[3]=LCD_TAB1[xlh[2]];LCDMEM[4]=LCD_TAB1[xlh[3]];
ganh_cnt=2;
ganh[0]=0;ganh[1]=0;ganh[2]=0;
LCDMEM[15] =LCD_TAB2[10];//mem15
LCDMEM[14] =LCD_TAB2[0];//mem14
LCDMEM[13] =LCD_TAB2[0];//mem13
LCDMEM[12] =LCD_TAB2[0];//mem12
blink_dat=0;f_blink=3;blink_address=14;//最左(高)位闪烁
break;
case 3: lcd_off();//杆型
LCDMEM[1]=LCD_TAB1[xlh[0]];LCDMEM[2]=LCD_TAB1[xlh[1]];LCDMEM[3]=LCD_TAB1[xlh[2]];LCDMEM[4]=LCD_TAB1[xlh[3]];
LCDMEM[15]=LCD_TAB2[10];LCDMEM[14]=LCD_TAB2[ganh[2]];LCDMEM[13]=LCD_TAB2[ganh[1]];LCDMEM[12]=LCD_TAB2[ganh[0]];
ganx=1;
LCDMEM[11] =LCD_TAB2[10];//mem11
LCDMEM[10] =LCD_TAB2[ganx];//mem10
blink_dat=ganx;f_blink=3;blink_address=10;//ganxin闪烁
break;
case 4: lcd_off();//相别--第二页
xiangb=12;//12-a 13-b 14-c
LCDMEM[1] =LCD_TAB1[xiangb];//mem10
blink_dat=xiangb;f_blink=1;blink_address=1;//最右(低)位闪烁
break;
case 5: lcd_off();//串号
LCDMEM[1] =LCD_TAB1[xiangb];
chuanh_cnt=0;
if(ganx==1)//直杆
{
chuanh[0]=1;chuanh[1]=11;//第一位1,第二位灭
}
else//耐张杆
{
chuanh[0]=1;chuanh[1]=1; //11-24
}
blink_dat=chuanh[0];
f_blink=1;blink_address=3;//在第1位闪烁
LCDMEM[2]=LCD_TAB1[10];//-
LCDMEM[3] =LCD_TAB1[chuanh[0]];
LCDMEM[4] =LCD_TAB1[chuanh[1]];
chuanh_cnt=0;
break;
case 6: lcd_off();//片号
LCDMEM[1] =LCD_TAB1[xiangb];
LCDMEM[2] =LCD_TAB1[10];
LCDMEM[3] =LCD_TAB1[chuanh[0]];
LCDMEM[4] =LCD_TAB1[chuanh[1]];
LCDMEM[5] =LCD_TAB1[10];//-28
LCDMEM[6] =LCD_TAB1[2];
LCDMEM[7] =LCD_TAB1[8];
pianh[0]=2;pianh[1]=8;
pianh_cnt=0;//片号第一二位
blink_dat=pianh[0];f_blink=1;blink_address=pianh_cnt+6;//在第1位闪烁
break;
case 7: lcd_off();//片号
LCDMEM[1] =LCD_TAB1[xiangb];
LCDMEM[2] =LCD_TAB1[10];
LCDMEM[3] =LCD_TAB1[chuanh[0]];
LCDMEM[4] =LCD_TAB1[chuanh[1]];
LCDMEM[5] =LCD_TAB1[10];
LCDMEM[6] =LCD_TAB1[pian_num/10];
LCDMEM[7] =LCD_TAB1[pian_num%10];
pianh[0] = pian_num/10;pianh[1]=pian_num%10;
fc_pianh = pian_num;
blink_dat=pianh[1];f_blink=1;blink_address=7;//在第二位闪烁--连加连减
fcmea_cnt=0;
break;
case 8: LCDMEM[blink_address] =LCD_TAB1[blink_dat];//前面的闪烁正常结束
f_blink=0;
//P2OUT |=BIT7;// /EN=0;片选无效
//P2OUT &= ~BIT6; // /OFF=0;关闭有效
P2OUT |= BIT6; // /OFF=1;关闭无效
P2OUT &= ~BIT7;// /EN=0;片选有效
f_232=1;
delay(50);
//send8(0x55);
//send8(0xaa);
break;//通讯模式
//进入通讯模式,发送时关闭定时器B
}
break;
case 1: LCDMEM[blink_address] =LCD_TAB1[blink_dat];//前面的闪烁正常结束
f_blink=0;
mode=2;//进入杆号处理
ganh_cnt=2;
ganh[0]=0;ganh[1]=0;ganh[2]=0;
LCDMEM[15] =LCD_TAB2[10];//mem15
LCDMEM[14] =LCD_TAB2[0];//mem14
LCDMEM[13] =LCD_TAB2[0];//mem13
LCDMEM[12] =LCD_TAB2[0];//mem12
blink_dat=0;f_blink=3;blink_address=14;//最右(低)位闪烁
break;
case 2: LCDMEM[blink_address] =LCD_TAB2[blink_dat];//前面的闪烁正常结束
f_blink=0;
mode=3;//进入杆型处理
ganx=1;
LCDMEM[11] =LCD_TAB2[10];//mem11
LCDMEM[10] =LCD_TAB2[ganx];//mem10
blink_dat=ganx;f_blink=3;blink_address=10;//最右(低)位闪烁
break;
case 3: lcd_off();
f_blink=0;
mode=4;//进入相别处理
xiangb=12;//12-a 13-b 14-c
LCDMEM[1] =LCD_TAB1[xiangb];//mem10
blink_dat=xiangb;f_blink=1;blink_address=1;//最右(低)位闪烁
break;
case 4: LCDMEM[blink_address] =LCD_TAB1[blink_dat];//前面的闪烁正常结束
f_blink=0;
mode=5;//进入串号处理
chuanh_cnt=0;
if(ganx==1)//直杆
{
chuanh[0]=1;chuanh[1]=11;//1-2
}
else//耐张杆
{
chuanh[0]=1;chuanh[1]=1; //11-24
}
LCDMEM[2] =LCD_TAB1[10];
LCDMEM[3] =LCD_TAB1[chuanh[0]];
LCDMEM[4] =LCD_TAB1[chuanh[1]];
blink_dat =chuanh[0];f_blink =1;blink_address =3;//在第二位闪烁
break;
case 5: LCDMEM[blink_address] =LCD_TAB1[blink_dat];//前面的闪烁正常结束
f_blink=0;
mode=6;//进入片号处理
pianh_cnt=0;
LCDMEM[5] =LCD_TAB1[10];//-28
LCDMEM[6] =LCD_TAB1[pian_num/10];
LCDMEM[7] =LCD_TAB1[pian_num%10];
pianh[0]=pian_num/10;pianh[1]=pian_num%10;
pianh_cnt=0;
blink_dat=pianh[0];f_blink=1;blink_address=pianh_cnt+6;//在第二位闪烁
break;
case 6: LCDMEM[blink_address] =LCD_TAB1[blink_dat];//前面的闪烁正常结束
LCDMEM[6] =LCD_TAB1[0];
LCDMEM[7] =LCD_TAB1[1];
f_blink=0;
pian_num=pianh[0]*10+pianh[1];
timnew_dat=0;
timmin_dat=65535;
ccr0_old=0;
TAR=0;
cp_no1=1;
//计算比较表
addr=(uchar*)0x1080;
for(i=0;i<30;i++)
{
read_Flash(addr,adr_tmp,2);
addr+=2;
bj_dat[i]=adr_tmp[1]*256+adr_tmp[0];
}
TACCTL0 |= CM_1; // 启动俘获--上升沿
TACTL |= MC_2; // 选择连续增计数--启动定时器
lxf_mea=1;f_cap=0;
LCDMEM[14] =0x0;//00.0 0
LCDMEM[13] =LCD_TAB2[0]+LCD_P2;
LCDMEM[12] =LCD_TAB2[0];
LCDMEM[9] =LCD_TAB2[0];
f_5s=0;lxmea_cnt=1;
bj_dat1=bj_dat[lxmea_cnt-1];
cnt_20ms=INT20MSCOUNT;cnt_250ms=INT250MSCOUNT;cnt_500ms=INT500MSCOUNT;cnt_5s=INT5SCOUNT;//初始化5s定时器的计数器
break;
case 7:
if(++fcmea_cnt==1)//第一次按下复测
{
LCDMEM[blink_address] =LCD_TAB1[blink_dat];//前面的闪烁正常结束
f_blink=0;
addr=(uchar*)0x1080;
addr+=(fc_pianh-1)*2;
read_Flash(addr,adr_tmp,2);
bj_dat1=adr_tmp[1]*256+adr_tmp[0];
}
//fc_pianh;// 存储了待复测的片号
timnew_dat=0;
timmin_dat=65535;
ccr0_old=0;
TAR=0;
cp_no1=1;
TACCTL0 |= CM_1; // 启动捕获--上升沿
TACTL |= MC_2; // 选择连续增计数--启动定时器
LCDMEM[14] =0x0;//00.0 0
LCDMEM[13] =LCD_TAB2[2]+LCD_P2;
LCDMEM[12] =LCD_TAB2[1];
LCDMEM[9] =LCD_TAB2[0];
fcf_mea=1;f_cap=0;
f_5s=0;cnt_20ms=INT20MSCOUNT;cnt_500ms=INT500MSCOUNT;cnt_250ms=INT250MSCOUNT;cnt_5s=INT5SCOUNT;//初始化5s定时器的计数器
break;
case 8: break;
}
}
}
void taskleft_mainloop(void)
{
if(fkeyleft)
{
fkeyleft=0;
switch(mode)
{
case 0: break;
case 1: if(++xlh_cnt==4)xlh_cnt=0;
LCDMEM[blink_address] =LCD_TAB1[blink_dat];
blink_address=xlh_cnt+1;blink_dat=xlh[xlh_cnt];
break;
case 2: if(--ganh_cnt>2)ganh_cnt=2;//14 13 12
LCDMEM[blink_address] =LCD_TAB2[blink_dat];
blink_address=ganh_cnt+12;blink_dat=ganh[ganh_cnt];
break;
case 3: break;
case 4: break;
case 5: if(ganx==2)//耐张杆
{
if(++chuanh_cnt>1)chuanh_cnt=0;
LCDMEM[blink_address] =LCD_TAB1[blink_dat];
blink_address=chuanh_cnt+3;blink_dat=chuanh[chuanh_cnt];
}
break;
case 6: if(++pianh_cnt>1)pianh_cnt=0;
LCDMEM[blink_address] =LCD_TAB1[blink_dat];
blink_address=pianh_cnt+6;blink_dat=pianh[pianh_cnt];
break;
case 7: break;//连加减模式
case 8: break;//通讯模式
}
}
}
void taskup_mainloop(void)
{
if(fkeyup)
{
fkeyup=0;
switch(mode)
{
case 0: if(++fun_dat==9)fun_dat=1;
LCDMEM[1] =LCD_TAB1[fun_dat];
blink_dat=fun_dat;
break;
case 1: if(++xlh[xlh_cnt]>9)xlh[xlh_cnt]=0;
LCDMEM[xlh_cnt+1]=LCD_TAB1[xlh[xlh_cnt]];
blink_dat=xlh[xlh_cnt];
break;
case 2: if(++ganh[ganh_cnt]>9)ganh[ganh_cnt]=0;
LCDMEM[ganh_cnt+12]=LCD_TAB2[ganh[ganh_cnt]];
blink_dat=ganh[ganh_cnt];
break;
case 3: if(++ganx>2)ganx=2;
LCDMEM[10] =LCD_TAB2[ganx];
blink_dat=ganx;
break;
case 4: if(++xiangb>14)xiangb=12;
LCDMEM[1] =LCD_TAB1[xiangb];
blink_dat=xiangb;
break;
case 5: if(ganx==1)
{
if(++chuanh[0]==3)chuanh[0]=1;
}
else
{
if(chuanh_cnt==0)//no1
{
if(++chuanh[0]>2){chuanh[0]=0;}
}
else//no2
{
if(++chuanh[1]>4){chuanh[1]=1;}
}
}
LCDMEM[chuanh_cnt+3]=LCD_TAB1[chuanh[chuanh_cnt]];
blink_dat=chuanh[chuanh_cnt];
break;
case 6: if(pianh_cnt==0)//no1
{
if(pianh[0]==2)
{
pianh[0]=3;pianh[1]=0;
}
else if(pianh[0]==3)
{
pianh[0]=2;
}
}
else//no2
{
if(pianh[0]==2)//=3不处理
{
if(++pianh[1]>9){pianh[1]=0;}
}
}
//LCDMEM[pianh_cnt+6]=LCD_TAB1[pianh[pianh_cnt]];
LCDMEM[6]=LCD_TAB1[pianh[0]];
LCDMEM[7]=LCD_TAB1[pianh[1]];
blink_dat=pianh[pianh_cnt];
break;
case 7: //可在01 - 30 内进行设置
if(++fc_pianh>30)fc_pianh=1;
LCDMEM[6]=LCD_TAB1[fc_pianh/10];
LCDMEM[7]=LCD_TAB1[fc_pianh%10];
blink_dat=fc_pianh%10;
break;
case 8: break;//通讯模式
}
}
}
void taskdown_mainloop(void)
{
if(fkeydown)
{
fkeydown=0;
switch(mode)
{
case 0: if(--fun_dat==0)fun_dat=8;
LCDMEM[1] =LCD_TAB1[fun_dat];
blink_dat=fun_dat;
break;
case 1: if(--xlh[xlh_cnt]>10)xlh[xlh_cnt]=9;
LCDMEM[xlh_cnt+1]=LCD_TAB1[xlh[xlh_cnt]];
blink_dat=xlh[xlh_cnt];
break;
case 2: if(--ganh[ganh_cnt]>10)ganh[ganh_cnt]=9;
LCDMEM[ganh_cnt+12]=LCD_TAB2[ganh[ganh_cnt]];
blink_dat=ganh[ganh_cnt];
break;
case 3: if(--ganx==0)ganx=2;
LCDMEM[10] =LCD_TAB2[ganx];
blink_dat=ganx;
break;
case 4: if(--xiangb<12)xiangb=14;
LCDMEM[1] =LCD_TAB1[xiangb];
blink_dat=xiangb;
break;
case 5: if(ganx==1)
{
if(--chuanh[0]<1)chuanh[0]=2;
}
else
{
if(chuanh_cnt==0)//no1
{
if(--chuanh[0]>2){chuanh[0]=2;}//1-2
}
else//no2
{
if(--chuanh[1]<1){chuanh[1]=4;}
}
}
LCDMEM[chuanh_cnt+3]=LCD_TAB1[chuanh[chuanh_cnt]];
blink_dat=chuanh[chuanh_cnt];
break;
case 6: if(pianh_cnt==0)//no1
{
if(pianh[0]==2)
{
pianh[0]=3;pianh[1]=0;
}
else if(pianh[0]==3)
{
pianh[0]=2;
}
}
else//no2
{
if(pianh[0]==2)//=3不处理
{
if(--pianh[1]>9){pianh[1]=9;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -