📄 macoh.c
字号:
#define MACOH_C
#include "main.h"
#define set 0x07
#define left 0x0b
#define set_left 0x03
#define down 0x0d
#define up 0x0e
#define set3s 0x17
#define left3s 0x1b
#define set_left3s 0x13
#define down_up 0x0c
#define ds 0
#define cp 1
#define sh_cp 2
#define scl_set 50
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
unsigned char co[ ] ={33,33,33,33,33,33}; //--------字符数组
unsigned char in[ ] ={19,13,5,12,20,1};
unsigned char inm[ ] ={44,14,12,16,16,13};
unsigned char in_msa[ ] ={16,16,13,10,10,10};
unsigned char in_msb[ ] ={44,14,10,10,10,10};
unsigned char in_10k[ ] ={51,54,0,1,10,10};
unsigned char in_2k[ ] ={51,54,2,10,10,10};
unsigned char in_25h[ ] ={51,5,2,10,10,10};
unsigned char rst[ ] ={10,24,5,23,10,10};
unsigned char lock[ ] ={10,54,15,0,19,10};
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 nega[ ] ={10,13,45,17,20,10};
unsigned char off[ ] ={18,18,21,10,10,10};
unsigned char on[ ] ={20,21,10,10,10,10};
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,negaon_off; //显示值
unsigned int lockda,scldata[ ] = {10,5}; //倍率值
unsigned char trdata_x[ ]={1,2,3}; //动作保持值123
unsigned char trdata, pontdata,resettemp, intemp,inmtemp,negdata,key=0;
//动作保持值
//小数点位置值
//复归模式值
//信号范围设定值
//加减算设定值
extern long timeset[ ]; //计数设定值
extern long Contdata ; //计数现在值
extern unsigned int ti[],ticnt,keytime ;
extern unsigned char keybit,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,0X6e,0X3d,0X5c,0X73,0X37,0X7b,0x64,0x76,0xd4,0x88,0x7a,0xc0//55
// 1--------------------------------------------10 //
};
//-------------------------------------------------------------------------------------------------------------------------------------------------------
void InitIo(void)
{
CLI();
WDR();
WDTCSR = 0x1f;
WDTCSR = 0x29;
ACSR = 0X01;
EICRA = 0x0e;
EIMSK = 0x03;
TCCR1B = 0x00; //stop
TCNT1H = 0xFD; //setup
TCNT1L = 0x8F;
OCR1AH = 0x02;
OCR1AL = 0x71;
OCR1BH = 0x02;
OCR1BL = 0x71;
ICR1H = 0x02;
ICR1L = 0x71;
TCCR1A = 0x00;
TCCR1B = 0x03; //start Timer
TIMSK0 = 0x10; //timer 0 interrupt sources
TIMSK1 = 0x01; //timer 1 interrupt sources
TIMSK2 = 0x00; //timer 2 interrupt sources
PCMSK0 = 0x10; //pin change mask 0
PCMSK1 = 0x00; //pin change mask 1
PCMSK2 = 0x00; //pin change mask 2
PCICR = 0x01; //pin change enable
DDRB = 0x00;
PORTB = 0xff;
DDRC = 0xff;
PORTC = 0x00;
DDRD = 0b00110000;
PORTD = 0b11001111;
pontdata = EEPROMread(0x10);
resettemp = EEPROMread(0x11);
intemp = EEPROMread(0x12);
trdata = EEPROMread(0x13);
inmtemp = EEPROMread(0x14);
negdata =EEPROMread(0x16);
EEPROM_READ(0x20,scldata);
EEPROM_READ(0x30,trdata_x);
EEPROM_READ(0x40,timeset[0]);
EEPROM_READ(0x50,timeset[1]);
EEPROM_READ(0x60,timeset[2]);
EEPROM_READ(0x93,Contdata);
EEPROM_READ(0xa0,lockda);
EEPROM_READ(0xb0, kt[0]);
if(negdata==0) negaon_off=0;
else negaon_off=-100000;
if(intemp==1) { PORTD|= BIT(4);}
if(intemp>=2) { PORTD|= BIT(5);}
sandchar_display(co,co);
display_flash(135,0,1);
SEI();
}
//--------------------------------------------------------------------------------------------------------------------------------------------按键菜单
void menu(void)
{
unsigned char pontmp,timebit, fbit,cbit,tdbit,ccc;
unsigned char reset_m,in_m,intm_m;
pontmp=pontdata;
fbit=0; cbit=5 ; tdbit=0; timebit=0;
key=GetKey();
keybit=0; keytime=0;
switch (key)
{
case set:
sandcnd_display(psx,timeset[0],0);
while(1)
{
o=psx;
o[1]=10;
o[2]=10;
key=display_flash(fbit,cbit,2);
psx[2]=12;
switch (key)
{
case set:
if(fbit==2)
{
timeset[0]=process_add();
EEPROM_WRITE(0x40,timeset[0]);
fbit=0;
}
else
{
cbit=1;
sandcnd_display(tr,trdata_x[0],0);
while(1)
{//-------------------------------------------------------------------------------trdata
o=tr;
p[1]+=25;
key=display_flash(fbit,cbit,2);
p[1]-=25;
if(keybit==0xf7) {keybit=0; keytime=0; return;}
switch (key)
{
case set:
if(fbit==2)
{
trdata=0;
trdata+= ((p[1]-25)*10);
trdata+= p[0];
trdata_x[0]=trdata;
EEPROM_WRITE(0x30,trdata_x);
fbit=0;
}
else
{ cbit=pontdata;
while(1)
{//----------------------------------------------------------------pont
sandchar_display(pont,ponddd);
ponddd[cbit]+=25;
key=display_flash(fbit,cbit,2);
ponddd[cbit]-=25;
if(keybit==0xf7) {keybit=0; keytime=0; return;}
switch (key)
{
case left:
fbit=2;
if(cbit<5) {cbit++;}
else {cbit=0;}
break;
case set:
if(fbit==2)
{
pontdata=cbit;
ponddd[cbit]=0;
EEPROMwrite(0x10,pontdata);
fbit=100;
}
else return ;
break;
case set3s:
goto menu2;
case set_left3s:
goto menu3;
}
}
}
break;
case up:
if(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:
if(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:
fbit=2;
if(cbit<1) cbit++;
else cbit=0;
break;
case set3s:
goto menu2;
case set_left3s:
goto menu3;
} //---------------------------------------------------------------------trdata
}
}
break;
case up:
if(fbit==2)
{
if(p[cbit]<9) p[cbit]++;
else p[cbit]=0;
}
break;
case down:
if(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 set3s:
goto menu2;
case set_left3s:
goto menu3;
}
}
break;
case set3s:
menu2:
if((PINB&0X0f)!=0x0f) goto menu2;
while(1)
{
psxsetmu2:
if(fbit!=2) sandcnd_display(psx,timeset[tdbit],0);
o=psx;
o[1]=tdbit+1;
key=display_flash(fbit,cbit,2);
switch (key)
{
case set:
if(fbit==2)
{
timeset[tdbit]=process_add();
EEPROM_WRITE(0x40,timeset[0]);
EEPROM_WRITE(0x50,timeset[1]);
EEPROM_WRITE(0x60,timeset[2]);
fbit=0;
}
else
{
if(tdbit==2)
{ tdbit=0;
sandcnd_display(tr_x,trdata_x[tdbit],1);
while (1)
{
o=tr_x;
o[1]=tdbit+1;
p[1]+=25;
key=display_flash(fbit,cbit,2);
p[1]-=25;
switch (key)
{//------------------------------------2-2-22-2-2
case set:
if(fbit==2)
{
trdata=0;
trdata+= p[1]*10;
trdata+= p[0];
trdata_x[tdbit]=trdata;
EEPROM_WRITE(0x30,trdata_x);
fbit=0; }
else
{
if(tdbit==2)
{
tdbit=0;
sandcnd_display(scl,scldata[tdbit],0);
while (1)
{
o=scl;
o[0]=scl_set+tdbit;
key=display_flash(fbit,cbit,2);
switch (key)
{
case set:
if(fbit==2)
{
scldata[scl_set-50+tdbit]=process_add();
EEPROM_WRITE(0x20,scldata);
fbit=0;
}
else {if(tdbit<1) {
tdbit++;
sandcnd_display(scl,scldata[tdbit],0);
}
else
{ tdbit=0;
reset_m=resettemp;
intm_m =inmtemp;
while(1)
{
if(intm_m==0) sandchar_display(inm,in_msa);
else sandchar_display(inm,in_msb);
key=display_flash(fbit,0,2); ///////////////////////////////////////////
switch (key)
{
case set:
if(fbit==2)
{
inmtemp=intm_m;
EEPROMwrite(0x14,inmtemp );
fbit=0;
}
else
while(1)
{
sandchar_display(rst,comtep);
if(reset_m==0) {p[0]=48;}
if(reset_m==1) {p[0]=49;}
if(reset_m>=2) {p[0]=15;}
key=display_flash(fbit,0,2);
comtep[0]=10;
cbit=5;
switch (key)
{
case set:
if(fbit==2)
{
resettemp=reset_m;
EEPROMwrite(0x11,resettemp);
fbit=0;
}
else
while(1)
{
ccc=0;
if(fbit!=2) process (ccc,p,0);
for(ccc=0;ccc<6;ccc++)
{if(p[ccc]==10) p[ccc]=0;}
o=lock;
key=display_flash(fbit,cbit,2);
switch (key)
{
case set:
if(fbit==2)
{ fbit=0;
lockda=process_add();
}
else
goto menu2;
break;
case up:
if(fbit==2)
{ if(p[cbit]<9) p[cbit]++;
else p[cbit]=0;}
break;
case down:
if(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 set3s:
return;
case set_left3s:
goto menu3;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -