⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macoh.c

📁 工控计数器ICCAVR的MAGE8程序LED数码显示+4键
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -