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

📄 chendp.c

📁 工控计数器ICCAVR的MAGE8程序LED数码显示+4键
💻 C
📖 第 1 页 / 共 2 页
字号:
#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          0
#define     cp          1
#define    sh_cp      2
#define    scl_set     50
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
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};                                                   
unsigned char    dlotemp[ ]={0,0,0,0,0,0,0};                                                  
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, pontdata,resettemp, intemp,inmtemp;        
                                                        
                                                                                                                        
                                                        
                                                       
                                                     
extern       long                                timeset[ ];                                          
extern       long                                Contdata ;                                           
extern      unsigned    int             ti[],ticnt ;
extern     unsigned   char           kt[];
unsigned    char                            tbit=0;                                                    
//---------------------------------------------------------------------------------------------------------------------------------------------------
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)
{   
    CLI();
	ACSR    = 0X01;	
    MCUCR = 0x0e;
    EMCUCR = 0x00;
    GICR = 0xE0;
    TCCR1B = 0x00; //stop
    TCNT1H = 0xEC; //setup
    TCNT1L = 0x78;
    OCR1AH = 0x13;
     OCR1AL = 0x88;
    OCR1BH = 0x13;
     OCR1BL = 0x88;
     TCCR1A = 0x00;
     TCCR1B = 0x02; //start Timer
     TIMSK = 0x80;
    DDRA  = 0xff;
    DDRB  = 0x00;
    DDRC  = 0xff;
	DDRD  = 0x00;
	DDRE  = 0x00;
	PORTA = 0xff;
	PORTB = 0xff;
	PORTD = 0xff;  
	PORTC = 0x00;
	PORTE = 0xFF;
	 pontdata = EEPROMread(0x10);
	resettemp = EEPROMread(0x11);
	intemp = EEPROMread(0x12); 
	trdata = EEPROMread(0x13);
	inmtemp = EEPROMread(0x14);
    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);
	sandchar_display(co,co);
	display_flash(135,0,1);    
    SEI(); 
	/*WDR(); 
    WDTCR = 0x1f;
    WDTCR = 0x0f;*/
}
//---------------------------------------------------------------------------------------------------------
void menu(void)                                        
{          
unsigned        char     pontmp,timebit, fbit,cbit,tdbit;
unsigned        char     reset_m,in_m,intm_m,key=0; 
pontmp=pontdata;
fbit=0;  cbit=0 ; tdbit=0; timebit=0;
key=GetKey();
switch (key)
		 {
		   case   set:
		   sandcnd_display(psx,timeset[0],0);
		   while(1)
		   {
            o=psx;
			o[1]=1;
		    key=display_flash(fbit,cbit,2); 	
		    switch (key)
		              {
						 case    set:
						 if(fbit==2) 
						 {
						 timeset[0]=process_add();
						 EEPROM_WRITE(0x40,timeset[0]);  
						 fbit=0;
						 }
						 else
						 { 
						 pontdata=1;
						 sandcnd_display(tr,trdata_x[0],1);
						 while(1)
						 {//-------------------------------------------------------------------------------trdata
               		      o=tr;
			              key=display_flash(fbit,cbit,2);  
		                  pontdata=pontmp;
						  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 
										  while(1)
						                  {//----------------------------------------------------------------pont
                		                  sandchar_display(pont,ponddd);
										  ponddd[cbit]+=25;
		                                  key=display_flash(fbit,cbit,2);  
										  ponddd[cbit]-=25;
										  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;	  
										  }
										}
						                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;
									 }   //---------------------------------------------------------------------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;
						    break;
							case     set3s:
							goto   menu2;
					   }
		   }//--------------------------------------------------------------------------------------------------------------------------------------------------------2222222
		   break;
		   case   set3s:
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;
			    while (1)
		      {
               pontmp=pontdata;
		       pontdata=1;
		       sandcnd_display(tr_x,trdata_x[tdbit],1);
                o[1]=tdbit+1;
			   key=display_flash(fbit,cbit,2);  
		       pontdata=pontmp;
		      switch (key)
			                {//------------------------------------2-2-22-2-2
							case   set:
							if(fbit==2)
						      {
							   trdata=0;
							   trdata+= ((p[1]-25)*10);
                               trdata+= p[0];
							   trdata_x[tdbit]=trdata;
							   EEPROM_WRITE(0x30,trdata_x); 
							   fbit=0;    }
							else
							  {
							  if(tdbit==2) 
							    {     
								 while (1)
						         {//------------------------------------------------------------scl
         		          	    if(fbit!=2){sandcnd_display(scl,scldata[0],0); 
                                o=scl;
                                o[0]=scl_set;
		                        key=display_flash(fbit,cbit,2);  
							    switch (key)
		                               {
						                case    set:
									    if(fbit==2)
												{
												 scldata[scl_set-50]=process_add();
												 EEPROM_WRITE(0x20,scldata); 
												 fbit=100;
												}
										else {if(tdbit<2) tdbit++;
							                    else       
												  { tdbit=0;
		                                            reset_m=resettemp;
                                                    in_m=intemp ;
							                        intm_m=inmtemp;
		                                            while(1) 
		                                             {
                                                      sandchar_display(in,inm);
		                                              p[0]=intm_m+13;
			                                          o[0]=in_m+13;
	                                                  key=display_flash(fbit,0,2);   //11111111
			                                         switch (key)
		                                                   {
									                       case    set:
										                   if(fbit==2)
										                     { 
										                      inmtemp=intm_m;
							                                  intemp=in_m;
							                                  EEPROMwrite(0x14,inmtemp );
	                                                          EEPROMwrite(0x12,intemp);
										                      fbit=0;
										                     }
										                   else    while (1)
										                    {
												             sandchar_display(rst,comtep);
		                                                     o[0]=reset_m+13;
												             key=display_flash(fbit,0,2);  
			 										         switch (key)
												                  {
												                  case    up:
													              if(fbit==2)
													                {
							                                        if(reset_m<2)      reset_m++;
							                                        else                  reset_m=0;
													                 }
						                                          break;
													              case    left:
													              fbit=2;
													              break;
							                                      case    set:
													              if(fbit==2)
													                {
							                                        resettemp=reset_m;
							                                        EEPROMwrite(0x11,resettemp);
                                                                    fbit=0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -