📄 macohbak.c
字号:
#define MACOH_C
#include "main.h"
#define set 0xe0
#define left 0xd0
#define down 0xb0
#define up 0x70
#define set3s 0xe1
#define left3s 0xd1
#define set_up 0x61
#define set_down 0xa1
#define ds 3
#define cp 4
#define sh_cp 5
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
unsigned char co[ ] ={33,33,33,33,33,33}; //--------字符数组
unsigned char in[ ] ={20,12,12,12,20,1};
unsigned char inm[ ] ={13,54,52,53,52,53};
unsigned char rst[ ] ={20,12,12,24,5,23};
unsigned char so_1[ ] ={12,12,12,12,12,12};
unsigned char psx[ ] ={10,1,12,5,22,10};
unsigned char tr[ ] ={10,10,23,24,10,10};
unsigned char tr_x[ ] ={10,1,12,23,24,10};
unsigned char scl[ ] ={50,12,12,19,15,5};
unsigned char pont[ ] ={10,24,20,21,22,10};
unsigned char ponddd[ ]={0,0,0,0,0,0};
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
unsigned char dhitemp[ ]={0,0,0,0,0,0,0}; //高6位显存
unsigned char dlotemp[ ]={0,0,0,0,0,0,0}; //低6位显存
unsigned char comtep[ ] ={10,10,10,10,10,10};
unsigned char *v=comtep;
unsigned char *p=dhitemp;
unsigned char *o=dlotemp;
long tempcnt;
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
unsigned int scldata[ ] = {10,5}; //倍率值
unsigned char trdata_x[ ]={1,2,3};
unsigned char trdata=0; //动作保持值
unsigned char pontdata=0; //小数点位置值
unsigned char resettemp=0; //复归模式值
unsigned char intemp=0; //信号范围设定值
unsigned char inmtemp=0; //加减算设定值
extern long timeset[ ]; //计数设定值
extern long CNT ; //计数现在值
extern unsigned int ti[],ticnt ;
extern unsigned char kt[];
unsigned char tbit=0; //ps现在显示第几组
//----------------------------------------------------------------------------------------------------------------
unsigned char table[56]= //-------------------------------------------------------------------------------显示表
{
/* 0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff, */
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,
// 1--------------------------------------------10 //
0X80, /*. 11*/ 0X40, /*- 12*/ 0X77, /*a 13*/ 0X7c, /*b 14*/ 0X39, /*c 15*/ 0X5e, /*d 16*/
0X79, /*e 17*/ 0X71, /*f 18*/ 0X38, /*l 19*/ 0X54, /*n 20*/ 0X5c, /*o 21*/ 0X73, /*p 22*/
0X50, /*r 23*/ 0X78, /*t 24*/
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x80,0x80,//36
0xbf,0X77,0X7c,0X39,0X5e,0X79,0X71,0X38,0X54,0X5c,0X73,0X50,0X78,0x64,0x76,0xd4,0x88,0x08,0xc0//55
// 1--------------------------------------------10 //
};
//-------------------------------------------------------------------------------------------------------------------------------------------------------
void InitIo(void)
{
unsigned char xb;
CLI();
ACSR = 0X01;
GICR |= (1 << INT0)|(1 << INT1);
MCUCR |= (0<<ISC10)|(1<<ISC11)|(0<<ISC00)|(1<<ISC01);
DDRA = 0xff;
DDRB = 0x00;
DDRC = 0xff;
DDRD = 0x00;
PORTA = 0xff;
PORTB = 0xff;
PORTD = 0xff;
PORTC = 0x00;
pontdata = EEPROMread(0x10);
resettemp = EEPROMread(0x11);
intemp = EEPROMread(0x12);
trdata = EEPROMread(0x13);
inmtemp = EEPROMread(0x14);
EEPROM_READ(0x80,scldata);
EEPROM_READ(0x30,trdata_x);
EEPROM_READ(0x40,timeset[0]);
EEPROM_READ(0x50,timeset[1]);
EEPROM_READ(0x60,timeset[2]);
if(pontdata>5) pontdata=0;
if(resettemp>2) resettemp=0;
if(intemp>2) intemp=0;
if (trdata>99)trdata=0;
if(scldata[0]>1999) scldata[0]=1999;
if(scldata[1]>1999) scldata[1]=1999;
if (trdata_x[0]>99) trdata_x[0]=0;
if (trdata_x[1]>99) trdata_x[1]=0;
if (trdata_x[2]>99) trdata_x[2]=0;
if (timeset[0]>999999) timeset[0]=0;
if (timeset[1]>999999) timeset[1]=0;
if (timeset[2]>999999) timeset[2]=0;
sandchar_display(co,co);
display_flash(135,0,1);
SEI();
}
//--------------------------------------------------------------------------------------------------------------------------------------------按键菜单
void menu(void)
{
unsigned char pontmp=0 ;
unsigned char timebit=0 ;
unsigned char fbit=1 ;
unsigned char cbit=0 ;
unsigned char scl_set=50 ;
unsigned char pssda=5;
unsigned char tdbit=0;
unsigned char b, key=0;
unsigned char reset_m=0;
unsigned char in_m=0;
unsigned char intm_m=0;
key=GetKey();
switch (key)
{
case set3s:
while(1)
{
trset_1:
pontmp=pontdata;
pontdata=1;
sandcnd_display(tr,trdata,1);
key=display_flash(135,0,1);
pontdata=pontmp;
switch (key)
{
case set:
while(1)
{
psxset_1: sandcnd_display(psx,timeset[timebit],0);
o[1]=timebit+1;
key=display_flash(135,0,2);
switch (key)
{
case set:
while(1)
{
sclset_1: sandcnd_display(scl,scldata[scl_set-50],0);
o[0]=scl_set;
key=display_flash(135,0,1);
switch (key)
{
case set:
while(1)
{
pontset_1: sandchar_display(pont,ponddd);
fbit=1;
cbit=0;
p[cbit]=25;
if(cbit!=0) p[cbit-1]=0;
key=display_flash(135,cbit,1);
switch (key)
{
case up:
while(1)
{
pontset:
sandchar_display(pont,ponddd);
p[cbit]=25;
if(cbit!=0) p[cbit-1]=0;
else p[cbit+5]=0;
key=display_flash(fbit,cbit,2);
switch (key)
{
case left:
fbit=2;
if(cbit<5) cbit++;
else cbit=0;
break;
case set:
goto menu_end;
case left3s:
pontdata=cbit;
ponddd[cbit]=0;
EEPROMwrite(0x10,pontdata);
goto trset_1;
}
}
break;
case down:
goto pontset;
break;
case set:
goto menu_end ;
case set3s:
goto menu_end;
}
}
break;
case down:
sclset: fbit=1;
cbit=0;
sandcnd_display(scl,scldata[scl_set-50],0);
while(1)
{
o=scl;
o[0]=scl_set;
key=display_flash(fbit,cbit,2);
switch (key)
{
case up:
fbit=2;
if(p[cbit]<9) p[cbit]++;
else { p[cbit]=0;
if(cbit==2) p[3]=1;
}
break;
case down:
fbit=2;
if(p[cbit]>0) p[cbit]--;
else { p[cbit]=9;
if(cbit==2) p[3]=10;
};
break;
case left:
fbit=2;
if(cbit<2) cbit++;
else cbit=0;
if(p[cbit]==10) p[cbit]=0;
break;
case left3s:
scldata[scl_set-50]=process_add();
EEPROM_WRITE(0x20,scldata);
goto sclset_1;
case set:
goto pontset_1;
case set3s:
goto menu_end;
}
}
break;
case up:
goto sclset;
case left:
if(scl_set==50) scl_set++;
else scl_set=50;
break;
case set3s:
goto menu_end;
}
}
break;
case down:
psxset11: sandcnd_display(psx,timeset[timebit],0);
while(1)
{
o=psx;
o[1]=timebit+1;
key=display_flash(fbit,cbit,2);
switch (key)
{
case up:
fbit=2;
if(p[cbit]<9) p[cbit]++;
else p[cbit]=0;
break;
case down:
fbit=2;
if(p[cbit]>0) p[cbit]--;
else p[cbit]=9;
break;
case left:
fbit=2;
if(cbit<5) cbit++;
else cbit=0;
if(p[cbit]==10) p[cbit]=0;
break;
case left3s:
timeset[timebit]=process_add();
EEPROM_WRITE(0x40,timeset[0]);
EEPROM_WRITE(0x50,timeset[1]);
EEPROM_WRITE(0x60,timeset[2]);
goto psxset_1;
case set:
goto sclset_1;
case set3s:
goto menu_end;
}
}
case up:
goto psxset11;
case left:
if(timebit<2)timebit++;
else timebit=0;
break;
case set3s:
goto menu_end;
}
}
break;
case up:
pontmp=pontdata;
pontdata=1;fbit=1; cbit=0;
sandcnd_display(tr,trdata,1);
while(1)
{
trset: o=tr;
key=display_flash(fbit,cbit,2);
pontdata=pontmp;
switch (key)
{
case up:
fbit=2;
if(cbit==1) p[cbit]-=25;
if(p[cbit]<9) p[cbit]++;
else p[cbit]=0;
if(cbit==1) p[cbit]+=25;
break;
case down:
fbit=2;
if(cbit==1) p[cbit]-=25;
if(p[cbit]>0) p[cbit]--;
else p[cbit]=9;
if(cbit==1) p[cbit]+=25;
break;
case left:
if(cbit<1) cbit++;
else cbit=0;
break;
case left3s:
trdata=0;
trdata+= ((p[1]-25)*10);
trdata+= p[0];
trdata_x[0]=trdata;
trdata_x[1]=trdata;
trdata_x[2]=trdata;
EEPROMwrite(0x13,trdata);
EEPROM_WRITE(0x30,trdata_x);
goto psxset_1;
case set:
goto psxset_1 ;
case set3s:
goto menu_end;
}
}
break;
case left:
goto trset;
case down:
goto trset;
case set3s:
goto menu_end;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -