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

📄 newboy.c

📁 使用emc单片机控制家用小电跑的面板控制程序,是学习EM78x447系列单片机c语言入门的好帮手
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "EM78x447xx.h"
#define Byte unsigned int
#define Word unsigned short
#define DWord unsigned long
#define Data_pin R50
#define Clock_pin R51
#define Start_stop_key R70
#define Speed_up_key R71
#define Speed_down_key R72
#define Speed_3km_key R73
#define Speed_6km_key R74
#define beeper_pin R53
#define trans_pin R52
#define receive_pin R75
#define safe_key R77
#define ENI()	_asm{ENI}
#define DISI()	_asm{DISI}
#define _nop()   _asm{nop}
#define WDTC()   _asm{wdtc}

Word speed;
Word distance;
Byte second,ten_second,minute,ten_minute;
Byte count_num,h,k,display_on;
Byte bee_num,beeper_time,be_nud;
Byte three_dao_ji;





Byte key_scan_ss,key_scan_safe;
Byte key_scan_up,key_scan_down,key_scan_three,key_scan_six,key_scan_zero;
Byte realistic_shi_fen,realistic_fen,realistic_shi_miao,realistic_miao;
Byte realistic_tenkilometer,realistic_kilometer,realistic_hundredmeter;
Byte realistic_shi_wei,realistic_ge_wei,realistic_fen_wei;

bit on_off;
bit power_on;
bit bee_flag;
bit start_time;
bit dao_ji_shi;
bit t_zero;
bit former_second;
bit trans_flag;
Byte trans_time;
Byte trans_num;

Word former_speed;




Byte test_number_no_dot[13]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xD8,0x80,0x90,0xBF,0xFF,0x86};


void System_Setup(void)
{

	_asm
	{
		mov	a,@0x87
		contw 
	}
    IMR=0X01;
	WDTCR&=0xbf;	//P66 and P77 Disable open-drain,Disable WDT
	
	P5CR=0;		//Port5 is output
	P6CR=0;	    //Port6 is output
	P7CR=0xff;	//P0~3 is input,P4~7 is input

	PORT5=0xff;
	PORT6=0xff;
	
	TCC=0;
	count_num=91;
}

void clean_display(void)
{
	speed=0;
	distance=0;
	second=0;
	ten_second=0;
	minute=0;
	ten_minute=0;
}

void delayms(Word n)
{
	Word i;
	for(i=0;i<n;i++)
	{
		_nop();
	}
}


void time_count(void)
{
	      
      if(second==10)
      {
           ten_second=ten_second+1;
           second=0;
           if(ten_second==6)
           {
               	minute++;

               	ten_second=0;
                if(minute==10)
               	{
                       ten_minute++;
                        minute=0;
                 }
                   	
             }
              
       }
         
           
}

void bee_sound_scan(void)
{      
      if(bee_num!=0)
      {
           if(bee_flag==1)
           {    
                beeper_pin=0;
           		beeper_time++;
           		if(beeper_time==120)
           		{
           			beeper_time=0;
           			     bee_flag=0;
           			     bee_num--;	
           		}
           }
           if(bee_flag==0)
           {
                beeper_pin=1;
                beeper_time++;
           		if(beeper_time==120)
           		{
           		    beeper_time=0;
           			     bee_flag=1;
           		}
           }
      }
      else{bee_flag=0;}
}

void led_write_eight(Byte num_eight)
{
    Byte write_number,cou,i;
    
    write_number=num_eight;
    cou=8;
    for(i=0;i<cou;i++)
    {
        Clock_pin=0;
        write_number<<=1;
        Data_pin=C;
        Clock_pin=1;
        
    }
}

void time_speed_distance_displayer_count(void)
{
    Byte show_speed;
    Byte w1,w2,w3,w4;
    Byte b_bai_wei,b_shi_wei,b_ge_wei;//speed
  
   if(display_on==0)                 //运行显示
    {
         
          show_speed=(Byte)(speed);
          b_bai_wei=show_speed/100;
          b_shi_wei=(show_speed%100)/10;
          b_ge_wei=show_speed%10;
           
          w1=distance/1000;
          w2=(distance%1000)/100;
          w3=(distance%100)/10;
          w4=(distance%10); 
        
          realistic_shi_fen=test_number_no_dot[ten_minute];
          realistic_fen=test_number_no_dot[minute];
          realistic_shi_miao=test_number_no_dot[ten_second];
          realistic_shi_miao=realistic_shi_miao&0x7f;
          realistic_miao=test_number_no_dot[second];
          realistic_miao=realistic_miao&0x7f;
          
          if((former_second==1)&&(start_time==1))
          {
          
                realistic_shi_fen=test_number_no_dot[ten_minute];
                realistic_fen=test_number_no_dot[minute];
                realistic_shi_miao=test_number_no_dot[ten_second];
                realistic_miao=test_number_no_dot[second];
                
          }

          if(ten_minute==0) 
          {
            	realistic_shi_fen=test_number_no_dot[11];
          }

          if(b_bai_wei==0)
          {
            	b_bai_wei=11;
                realistic_shi_wei=test_number_no_dot[b_bai_wei];
                realistic_ge_wei=test_number_no_dot[b_shi_wei];
                realistic_ge_wei=realistic_ge_wei&0x7f;
                realistic_fen_wei=test_number_no_dot[b_ge_wei];
           }
           else
          {
    	        realistic_shi_wei=test_number_no_dot[b_bai_wei];
                realistic_ge_wei=test_number_no_dot[b_shi_wei];
                realistic_ge_wei=realistic_ge_wei&0x7f;
                realistic_fen_wei=test_number_no_dot[b_ge_wei];
           }
    
           if(w1==0)
          {
                realistic_tenkilometer=test_number_no_dot[w2];
                realistic_tenkilometer=realistic_tenkilometer&0x7f;
                realistic_kilometer=test_number_no_dot[w3];
                realistic_hundredmeter=test_number_no_dot[w4];
          }
           else
          {
            	realistic_tenkilometer=test_number_no_dot[w1];
                realistic_kilometer=test_number_no_dot[w2];
                realistic_kilometer=realistic_kilometer&0x7f;
                realistic_hundredmeter=test_number_no_dot[w3];
          }
    }
    
   else if(display_on==1)                  //安全开关
    {
        realistic_shi_fen=test_number_no_dot[0];
        realistic_fen=test_number_no_dot[0];
       
        realistic_shi_miao=test_number_no_dot[0];
        realistic_shi_miao=realistic_shi_miao&0x7f;
        realistic_miao=test_number_no_dot[0];
        realistic_miao=realistic_miao&0x7f;
    
    	realistic_shi_wei=test_number_no_dot[10];
        realistic_ge_wei=test_number_no_dot[10];
        realistic_fen_wei=test_number_no_dot[10];
        
        realistic_tenkilometer=test_number_no_dot[0];
        realistic_tenkilometer=realistic_tenkilometer&0x7f;
        realistic_kilometer=test_number_no_dot[0];
        realistic_hundredmeter=test_number_no_dot[0];
    }
    
   else if(display_on==4)                     //下控板保护停机
    {
          realistic_shi_wei=test_number_no_dot[11];
          realistic_ge_wei=test_number_no_dot[12];
          realistic_fen_wei=test_number_no_dot[1];
        
          realistic_shi_fen=test_number_no_dot[ten_minute];
          realistic_fen=test_number_no_dot[minute];
          realistic_shi_miao=test_number_no_dot[ten_second];
          realistic_shi_miao=realistic_shi_miao&0x7f;
          realistic_miao=test_number_no_dot[second];
          realistic_miao=realistic_miao&0x7f;
    }
   else if(display_on==8)                     //上电显示
   {
        realistic_shi_fen=0x00;
        realistic_fen=0x00;
        realistic_shi_miao=0x00;
        realistic_miao=0x00;
    
    	realistic_shi_wei=0x00;
        realistic_ge_wei=0x00;
        realistic_fen_wei=0x00;
        
        realistic_tenkilometer=0x00;
        realistic_kilometer=0x00;
        realistic_hundredmeter=0x00;
   }
   else if(display_on==16)                     //安下开始键倒计时3秒
   {
        realistic_shi_fen=0xff;
        realistic_fen=0xff;
        realistic_shi_miao=0xff;
        realistic_miao=test_number_no_dot[three_dao_ji];
    
    	realistic_shi_wei=0xff;
        realistic_ge_wei=0xff;
        realistic_fen_wei=0xff;
        
        realistic_tenkilometer=0xff;
        realistic_kilometer=0xff;
        realistic_hundredmeter=0xff;
   }

}



void communication_trans_data(Byte com_data)
{
    Byte trans_number,i,j;
    
    trans_number=com_data;
    trans_pin=1;
 
    for(i=0;i<20;i++)
    {
    	_nop();
    }
    
    for(i=0;i<4;i++)
    {
        
        
    	trans_number<<=1;
    	trans_pin=C;
    	
     	 for(j=0;j<20;j++)
        {
            _nop();
        }
    
    }
    
     trans_pin=0;
     for(j=0;j<20;j++)
     {
          _nop();
     }
     trans_pin=1;
     for(j=0;j<20;j++)
     {
         _nop();
     }
     for(i=0;i<4;i++)
     {
        
        
    	trans_number<<=1;
    	trans_pin=C;
    	
     	 for(j=0;j<20;j++)
        {
            _nop();
        }
    
     }
     trans_pin=1;
}

void receive_com(void)
{
    Byte j;
    if(receive_pin==0)
    {   
		   for(j=0;j<30;j++)
           {
              _nop();
           }
		   if(receive_pin==0)
		    {
		      
		       t_zero=1;
		        _nop();
		     
		    }		  	  		  
     }
}
	
void main(void)@page 0
{
     Byte sw,cs_times,all_play;
     Word on_all_display;
     
     delayms(10);
     System_Setup();
     
     display_on=8;
     on_all_display=0;
     bee_num=1;
     three_dao_ji=3;
     on_off=0;
   	 cs_times=0;
	 sw=0;
	 k=0;
	 h=0;
	 t_zero=0;
	 trans_flag=0;
	 trans_time=0;
	 
	 former_speed=8;
	
	 
	key_scan_ss=0;
	key_scan_up=0;
	key_scan_down=0;
	key_scan_three=0;
	key_scan_six=0;
	key_scan_zero=0;
	


    for(;;)
	{
	    WDTC();
	    if((power_on==1)&&(display_on==1)){display_on=0;}
	    if((safe_key==1)&&(display_on!=8)){display_on=1;}
	    if(safe_key==0){key_scan_safe++;}
	    if((safe_key==1)&&(power_on==1)){trans_flag=1;trans_num=207;}
	    if(key_scan_safe>250){power_on=1;key_scan_safe=0;}
        else if(safe_key==1){power_on=0;on_off=0;DISI();}  
        
	    if(Start_stop_key==0)
    	{
    		key_scan_ss++;
    	}	
        else if((Speed_up_key==0)&&(Speed_down_key==1))

⌨️ 快捷键说明

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