gmumain.c

来自「该程序实现六位LED的动态扫描显示,能设置波特率,」· C语言 代码 · 共 985 行 · 第 1/3 页

C
985
字号
                                             switch(set_point){
                                                              case 0:disvalue_big_asc("P  600");
                                                                     break;
                                                              case 1:disvalue_big_asc("P 1200");
                                                                     break;
                                                              case 2:disvalue_big_asc("P 2400");
                                                                     break;
                                                              case 3:disvalue_big_asc("P 4800");
                                                                     break;
                                                              case 4:disvalue_big_asc("P 9600");
                                                                     break;
                                                              case 5:disvalue_big_asc("P19200");
                                                                     break;
                                                              default:break;
                                                              }
                                             delay(1);
                                             temp = key_scan();
                                             if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                  {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                      }
                         if(breakflag == 1) break;
                         flash_times = flash_times - 1;
                         if(flash_times<0) {
                                           menu_exit_flag = 1;
                                           return;
                                           }
                         //**********************************************************
                         for(i = 0;i <2000; i++){
                                 disvalue_big_asc("P     ");
                                 delay(1);
                                 temp = key_scan();
                                 if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                 {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                 }
                         if(breakflag == 1) break;
                         }
             flash_times = 10;
             menu_exit_flag = 0;
             if(temp==set_value){//执行到下一步设置状态了,保存当前设置的波特率值
                                 write(50,set_point);
                                 return;
                                 }
             if(temp==up_value){
                                set_point = set_point + 1;
                                if(set_point>5) set_point = 0;
                                switch(set_point){
                                                  case 0:disvalue_big_asc("P  600");
                                                         break;
                                                  case 1:disvalue_big_asc("P 1200");
                                                         break;
                                                  case 2:disvalue_big_asc("P 2400");
                                                         break;
                                                  case 3:disvalue_big_asc("P 4800");
                                                         break;
                                                  case 4:disvalue_big_asc("P 9600");
                                                         break;
                                                  case 5:disvalue_big_asc("P19200");
                                                         break;
                                                  default:break;
                                                  }
                                }
             if(temp ==left_value){
                                 set_point = set_point + 1;
                                 if(set_point>5) set_point = 0;
                                 switch(set_point){
                                                  case 0:disvalue_big_asc("P  600");
                                                         break;
                                                  case 1:disvalue_big_asc("P 1200");
                                                         break;
                                                  case 2:disvalue_big_asc("P 2400");
                                                         break;
                                                  case 3:disvalue_big_asc("P 4800");
                                                         break;
                                                  case 4:disvalue_big_asc("P 9600");
                                                         break;
                                                  case 5:disvalue_big_asc("P19200");
                                                         break;
                                                  default:break;
                                                  }
                                }
             }
     }
//**************************************************************************************
void setmenu_e(void)
             {
             unsigned char temp;
             unsigned char tht_temp[6];
             unsigned char set_point;
  //           unsigned char dot_ffflag;
             unsigned char breakflag;
             unsigned int  i;
             unsigned char save_address;
             flash_times = 10;
             menu_exit_flag = 0;
             save_address = read(40);
             disvalue_big_asc("      ");
             tht_temp[5] = save_address%10;
             display_bit(tht_temp[5],5,0);
             save_address = save_address/10;
             tht_temp[4] = save_address%10;
             display_bit(tht_temp[4],4,0);
             save_address = save_address/10;
             tht_temp[3] = save_address%10;
             display_bit(tht_temp[3],3,0);
             dis_big_value[5] = 0x86;       //h
             set_point = 5;
             while(1){
                 breakflag = 0;
                 while(1){
                         for(i = 0;i <2000; i++){
                                 display_bit(tht_temp[set_point],set_point,0);
                                 delay(3);
                                 temp = key_scan();
                                 if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                 {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                 }
                         if(breakflag == 1) break;
                         flash_times = flash_times - 1;
                         if(flash_times<0) {
                                           menu_exit_flag = 1;
                                           return;
                                           }
                         //**********************************************************
                         for(i = 0;i <2000; i++){
                                 display_bit(10,set_point,0);
                                 delay(3);
                                 temp = key_scan();
                                 if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                 {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                 }
                         if(breakflag == 1) break;
                         }
             flash_times = 10;
             menu_exit_flag = 0;
             if(temp==set_value) {//执行到下一步设置状态了,保存当前设置的地址值
                                  save_address = 0;
                                  save_address = tht_temp[3]*100;
                                  save_address = save_address + tht_temp[4]*10;
                                  save_address = save_address + tht_temp[5];
                                  write(40,save_address);
                                  return;
                                  }
             if(temp==up_value){
                                 tht_temp[set_point] = tht_temp[set_point] + 1;
                                 if(tht_temp[set_point]>9) tht_temp[set_point] = 0;
                                 if(tht_temp[3]>2) tht_temp[3]=0;
                                 if((tht_temp[3]==2)&&(tht_temp[4]>5)) tht_temp[4]=0;
                                 if((tht_temp[3]==2)&&(tht_temp[4]==5)&&(tht_temp[5]>5)) tht_temp[5]=0;
                                 }

             if(temp ==left_value){
                                 display_bit(tht_temp[set_point],set_point,0);
                                 set_point = set_point + 1;
                                 if(set_point>5) set_point = 3;
                                 }
             }
     }

void menu_list(void)
     {
     setmenu_hld(0);
     if(menu_exit_flag ==1){
                            disvalue_big_asc("      ");
                            initial();
                            return;
                            }
     setmenu_hld(1);
     if(menu_exit_flag ==1){
                            disvalue_big_asc("      ");
                            initial();
                            return;
                            }
     setmenu_b();
     if(menu_exit_flag ==1){
                            disvalue_big_asc("      ");
                            initial();
                            return;
                            }
     setmenu_e();
     if(menu_exit_flag ==1){
                            disvalue_big_asc("      ");
                            initial();
                            return;
                            }
     setmenu_p();
     if(menu_exit_flag ==1){
                            disvalue_big_asc("      ");
                            initial();
                            return;
                            }
     setmenu_hld(2);
     disvalue_big_asc("      ");
     initial();
     return;
     }
//**********************************************************************
//**********************************************************************
//**********************************************************************
void s24(void) {
	_nop_();scl=0;sda=1;scl=1;_nop_();sda=0;_nop_();scl=0;
}
void p24(void) {
	sda=0;scl=1;_nop_();sda=1;
}
unsigned char rd24(void) {
	sda=1;
	scl=1;a7=sda;scl=0;
	scl=1;a6=sda;scl=0;
	scl=1;a5=sda;scl=0;
	scl=1;a4=sda;scl=0;
	scl=1;a3=sda;scl=0;
	scl=1;a2=sda;scl=0;
	scl=1;a1=sda;scl=0;
	scl=1;a0=sda;scl=0;
	sda=1;scl=1;scl=0;
	return(ACC);
}

void wd24(unsigned char dd) {
	ACC=dd;
	sda=a7;scl=1;scl=0;
	sda=a6;scl=1;scl=0;
	sda=a5;scl=1;scl=0;
	sda=a4;scl=1;scl=0;
	sda=a3;scl=1;scl=0;
	sda=a2;scl=1;scl=0;
	sda=a1;scl=1;scl=0;
	sda=a0;scl=1;scl=0;
	sda=1;scl=1;
}

unsigned char read(unsigned int address){
	unsigned char dd;
	dd=((address&0x7ff)/256)<<1;
	s24();wd24(0xa0|dd);scl=0;wd24(address);scl=0;
	s24();wd24(0xa1|dd);scl=0;dd=rd24();p24();return(dd);
}

void write(unsigned int address,unsigned char dd){
	unsigned char ddd;
        unsigned char time;
	ddd=((address&0x7ff)/256)<<1;
	s24();wd24(0xa0|ddd);scl=0;wd24(address);scl=0;wd24(dd);scl=0;p24();
	time=0;					//time为定时器时间参考,time增加1代表1ms,如果没有用定时器,取消该行
	while (1) {
		s24();
		wd24(0xa0|ddd);
		sda=1;
		if (sda==0) break;
		if (time>10){
                             time = time + 1;
                             delayms(300);
                             break;	//此行防止由于eeprom器件损坏后的死循环
                             }
		scl=0;
	}
}
unsigned int read_int(unsigned int address)
        {
        unsigned int temp;
        union{
              unsigned char aaa[2];
              unsigned int  bbb;
              }ccc;
        temp = address;
        ccc.aaa[0] = read (temp);
        ccc.aaa[1] = read (temp+1);
        temp = ccc.bbb;
        return(temp);
        }
void write_int(unsigned int address,unsigned int dd)
       {
        unsigned int temp;
        union{
              unsigned char aaa[2];
              unsigned int  bbb;
              }ccc;
        temp = address;
        ccc.bbb = dd;
        write(temp,ccc.aaa[0]);
        write(temp + 1,ccc.aaa[1]);
        }
//*********************************************************
//*********************************************************
long read_long(unsigned int address)
        {
        unsigned int temp;
        long temp1;
        union{
              unsigned char aaa[4];
              long  bbb;
              }ccc;
        temp = address;
        ccc.aaa[0] = read (temp);
        ccc.aaa[1] = read (temp+1);
        ccc.aaa[2] = read (temp+2);
        ccc.aaa[3] = read (temp+3);
        temp1 = ccc.bbb;
        return(temp1);
        }
void write_long(unsigned int address,long dd)
       {
        unsigned int temp;
        union{
              unsigned char aaa[4];
              long  bbb;
              }ccc;
        temp = address;
        ccc.bbb = dd;
        write(temp,ccc.aaa[0]);
        write(temp + 1,ccc.aaa[1]);
        write(temp + 2,ccc.aaa[2]);
        write(temp + 3,ccc.aaa[3]);
        }

⌨️ 快捷键说明

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