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

📄 macohbak.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           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 + -