亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mcs51-項目開發經典.c

?? 高端數碼管驅動芯片
?? C
?? 第 1 頁 / 共 2 頁
字號:
// 串口UART操作相關程序
//=================================================================================================
//函數功能:串口發射1個字節
void uart_byte_out(uchar uart_data_out)
{ SBUF = uart_data_out;
  while(TI==0);
  TI=0;
}
//-------------------------------------------------------------------------------------------------
//函數功能:串口發射字符數組。通常將要發送的字符數組定義在CODE代碼區。
void uart_string_out(char * char_array)
{  uchar i;
   for(i=0; i<strlen(char_array) ;i++)
     {
	  uart_byte_out(char_array[i]);
	 }
}
//-------------------------------------------------------------------------------------------------
//函數功能:串口輸出數據十進制到PC機屏幕上
//形參:范圍 0-65535 ;例如:data_to_out=12345(或0x3039),則計算機屏幕就顯示12345
void uart_data_decimalist_out(uint data_to_out)
{  bit   entrance;
   uchar ge,shi,bai,qian,wan;
   wan  = (data_to_out/10000)     ;//拆分萬位,并轉化為ASKII碼
   qian = (data_to_out%10000)/1000;//拆分千位,并轉化為ASKII碼
   bai  = (data_to_out%1000)/100  ;//拆分百位,并轉化為ASKII碼
   shi  = (data_to_out%100)/10    ;//拆分十位,并轉化為ASKII碼
   ge   = (data_to_out%10)        ;//拆分個位,并轉化為ASKII碼
   entrance=1;//開放個、十、百、千、萬的判斷傳輸入口
   if(wan && entrance)
     {uart_byte_out(change_hex_to_askii(wan));
	  uart_byte_out(change_hex_to_askii(qian));
	  uart_byte_out(change_hex_to_askii(bai));
	  uart_byte_out(change_hex_to_askii(shi));
	  uart_byte_out(change_hex_to_askii(ge));
	  entrance=0;//如果萬位不為0,則不再判斷其它位
	 }
   else if(qian && entrance)
     {uart_byte_out(change_hex_to_askii(qian));
	  uart_byte_out(change_hex_to_askii(bai));
	  uart_byte_out(change_hex_to_askii(shi));
	  uart_byte_out(change_hex_to_askii(ge));
	  entrance=0;//如果千位不為0,則不再判斷其它位
	 }
   else if(bai && entrance)
     {uart_byte_out(change_hex_to_askii(bai));
	  uart_byte_out(change_hex_to_askii(shi));
	  uart_byte_out(change_hex_to_askii(ge));
	  entrance=0;//如果百位不為0,則不再判斷其它位
	 }
   else if(shi && entrance)
     {uart_byte_out(change_hex_to_askii(shi));
	  uart_byte_out(change_hex_to_askii(ge));
	  entrance=0;//如果十位不為0,則不再判斷其它位
	 }
   else
     {uart_byte_out(change_hex_to_askii(ge));
	 }
}
//-------------------------------------------------------------------------------------------------
// 函數功能:串口顯示的回車換行
// 形參:newline_number 表示一共換幾行
void uart_newline(uchar newline_number)
{ uchar i;
  for(i=0;i<newline_number;i++)
     {
	  uart_byte_out(0x0d);
      uart_byte_out(0x0a);
	 }
}
//-------------------------------------------------------------------------------------------------
// 函數功能:串口顯示的空格
// 形參:space_number 表示空幾個格
void uart_space(uchar space_number)
{ uchar i;
  for(i=0;i<space_number;i++)
     {
	  uart_byte_out(0x20);
	 }  
}
//=================================================================================================
// 數制轉換相關程序
//=================================================================================================
uchar change_bcd_to_hex(uchar shu)//轉換BCD碼成十進制數
{ uchar shu_h;
  uchar shu_l;
  shu_l=shu&0x0f;
  shu_h=shu&0xf0;
  shu_h=shu_h>>4;
  return (shu_h*10+shu_l);
}
//-------------------------------------------------------------------------------------------------
uchar change_hex_to_bcd(uchar shu)//轉換十進制數成BCD碼
{ uchar shu_h;
  uchar shu_l;
  shu_l=shu%10;
  shu_h=shu/10;
  return ((shu_h<<4)|shu_l);
}
//-------------------------------------------------------------------------------------------------
uchar change_askii_to_hex(uchar askii)//轉換ASKII碼成HEX,實參范圍:30-39、41-46
{ if(askii<=0x39) return(askii-0x30);
  else return(askii-0x37);
}
//-------------------------------------------------------------------------------------------------
uchar change_hex_to_askii(uchar data_hex)//HEX轉換成ASKII,實參范圍:0-9、A-F
{ if(data_hex<=0x09) return(data_hex+0x30);
  else return(data_hex+0x37);
}
//=================================================================================================
// 函數功能:將格式為"data1,data2,...datan#" 的字符串中的data數據全部取出,并存儲于temporary_data[]
//=================================================================================================
void get_data(uchar * how_much_data)
{ 
  uchar i;
  uchar j=0;
  uchar k=0;
  uchar how_much_temp_askii=0;
  uchar temp_askii[5];
  uint  return_data;

  for(i=0; i<strlen(how_much_data); i++)
    {
	 if( (how_much_data[i] != ',') && (how_much_data[i] != '#') )
	   {
	    temp_askii[j] = how_much_data[i];
   		j=j+1;
        how_much_temp_askii=how_much_temp_askii+1;
	   }
	 else
	   {j=0;
	    switch (how_much_temp_askii)
		  {case 1:{return_data = change_askii_to_hex(temp_askii[0]);
				   break;
				  }
		   case 2:{return_data = change_askii_to_hex(temp_askii[0])*10+
	                             change_askii_to_hex(temp_askii[1]);
				   break;
				  }
		   case 3:{return_data = change_askii_to_hex(temp_askii[0])*100+
		                         change_askii_to_hex(temp_askii[1])*10 +
							     change_askii_to_hex(temp_askii[2]);
				   break;
				  }
		   case 4:{return_data = change_askii_to_hex(temp_askii[0])*1000+
	                             change_askii_to_hex(temp_askii[1])*100 +
							     change_askii_to_hex(temp_askii[2])*10  +
							     change_askii_to_hex(temp_askii[3]);
				   break;
				  }
		   case 5:{return_data = change_askii_to_hex(temp_askii[0])*10000+
	                             change_askii_to_hex(temp_askii[1])*1000 +
								 change_askii_to_hex(temp_askii[2])*100  +
								 change_askii_to_hex(temp_askii[3])*10   +
								 change_askii_to_hex(temp_askii[4]);
				   break;
				  }
		   default:break;
		  }
	    temporary_data[k] = return_data;
		k=k+1;
	    how_much_temp_askii=0;
	   }
    }
}
//=================================================================================================
// 函數功能:字符串匹配函數
//=================================================================================================
char * strstr(char * haystack, char * needle)
{  char *ptr1, *ptr2;
   weizhi=0;
   // Protect against NULL pointer
   if (*needle == 0) return(haystack);
   for( ; *haystack; haystack++ ,weizhi++)
	 {// Look for needle in haystack.  If there is a
      // match then this will continue all the way
      // until ptr1 reaches the NULL at the end of needle 
	  for(ptr1 = needle, ptr2 = haystack; *ptr1 && (*ptr1 == *ptr2); ++ptr1, ++ptr2);
	  // If there is a match then return pointer to needle in haystack
      if(*ptr1 == 0) return(haystack);
	 }
   return NULL;// no matching string found
}
//=================================================================================================
// 串口UART中斷服務程序
// 可以自動接收格式為"@xxx...xxx#"的字符串,長度小于等于30
//=================================================================================================
void UART_interrupt (void) interrupt 4
{ RI=0;
  if( SBUF == '@' ) //判斷頭
    {uart_buffer_address = 0;
  	 uart_buffer[uart_buffer_address] = SBUF;
	 uart_buffer_address++;
     uart_receive_start = 1; //置uart0接收啟動標志
     return;
    }
  if( uart_receive_start == 1 ) //接收中間數據
    {uart_buffer[uart_buffer_address] = SBUF;
     uart_buffer_address++; //每接收1字節緩沖區地址加1
    }
  if( (uart_receive_start == 1)&&(SBUF == '#') ) //判斷尾
    {uart_buffer[uart_buffer_address] = 0;//置字符串結束符號 \0,為字符串處理函數提供標準格式
	 uart_buffer_address = 0; //清緩沖區地址指針
     uart_receive_start  = 0; //清uart0接收啟動標志
	 uart_receive_ok     = 1; //置已接收完整串口命令標志
     return;
    }
  if(uart_buffer_address>39)  //uart0接收緩沖區地址溢出故障處理:
    {uart_buffer_address = 0; //清緩沖區地址指針
     uart_receive_start  = 0; //清uart0接收啟動標志
     uart_receive_ok     = 0; //清已接收完整串口命令標志
    }
}

//=================================================================================================
// T1中斷服務程序
//=================================================================================================
void T1_interrupt(void) interrupt 3
{   
    uchar key_value;
	TH1=0x4c;//11.0592M晶振時T1定時時間長度為50毫秒
	TL1=0x00;
	t1_delay_time++;//在需要延時的地方清空并判斷該變量
    key_value=0xff;
//=================================================================================================
// 按住放手發射
//=================================================================================================
/*if(KEY_7279==0)
	{key_press_counter++;
	 if(key_press_counter==4)
		{key_value_previous=HD7279_GetKey();
		}
	}
else
	{if(key_press_counter>4)
		{key_value_main=key_value_previous;
		}
	 key_press_counter=0;
	}
*/
//=================================================================================================
//0.5秒延時發送
//=================================================================================================
if(KEY_7279==0)
  { key_press_timer++;
    if(key_press_counter==0)
  	  {key_value_previous=HD7279_GetKey();
	  }
	if(key_press_timer>10)
 	  {key_value=HD7279_GetKey();
	   if(key_value!=key_value_previous)
         {key_value_main=0xff;
		  key_value=0xff;
		  key_value_previous=0xff;
		  key_press_timer=0;
		  key_press_counter=0;
		 }
	   else
	     {key_value_main=key_value_previous;
		  key_press_timer=0;
		  key_press_counter=0;
		 }
      }
   }
//=================================================================================================
//老師給通用延時
//=================================================================================================

/* 	if(!KEY_7279)//如果有按鍵觸發,則取出該鍵鍵值
       {key_value=HD7279_GetKey();
	   }
 	if(key_value!=0xff)//有鍵觸發
	   {
	    if(key_press_counter==0)//如果上一次T1中斷沒發現按鍵觸發,而本次T1中斷發現了,做如下處理
		  {key_value_previous=key_value;//保存本次鍵值
		   key_press_counter+=1;//按鍵計數器加1
	      }
		else//如果再次T1中斷時key_press_counter不為0且鍵值與上次鍵值相等,則按鍵完成了50毫秒延時消抖
		  {if(key_value_previous==key_value) 
		     {key_value_main=key_value;}//key_value_main中存儲的鍵值在主程序中使用和清除
		  }
       }
    else//不管上次是否有鍵觸發,只要本次無鍵觸發就清空按鍵計數器,即如果按鍵時間不能持續50毫秒以上則重新判斷
       {key_press_counter=0;
	   }
*/
}
//=================================================================================================
//                           end of the file 
//=================================================================================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99视频精品全部免费在线| 日韩免费高清av| 精品国产污网站| 亚洲综合久久久| 激情久久久久久久久久久久久久久久| 成人免费黄色大片| 日韩精品在线看片z| 亚洲黄色av一区| 成人一区二区视频| 欧美成人三级在线| 亚洲第一成人在线| 一本大道av伊人久久综合| 久久久久久久综合| 久久99国内精品| 678五月天丁香亚洲综合网| 亚洲国产精品影院| 成人一区二区三区视频| 日韩一区二区在线看| 亚洲卡通动漫在线| 国产河南妇女毛片精品久久久| 在线电影一区二区三区| 亚洲国产视频一区二区| 色天天综合久久久久综合片| 中文字幕一区二区三区不卡| 国产91高潮流白浆在线麻豆| 日韩欧美国产三级电影视频| 天天影视色香欲综合网老头| 欧美探花视频资源| 亚洲一区二区三区四区五区中文| 91网址在线看| 亚洲人妖av一区二区| 成人国产精品免费观看动漫| 国产精品免费aⅴ片在线观看| 国产剧情一区二区三区| 久久蜜桃一区二区| 国产91丝袜在线播放| 国产午夜精品一区二区 | 精品国内片67194| 日韩成人精品在线观看| 69成人精品免费视频| 日韩av一区二区三区四区| 91麻豆精品国产91久久久更新时间 | 久久狠狠亚洲综合| 日韩欧美一区在线观看| 久久精品国产免费看久久精品| 日韩你懂的在线观看| 韩国三级在线一区| 欧美国产精品久久| 一本色道久久综合狠狠躁的推荐| 伊人色综合久久天天人手人婷| 欧美午夜电影网| 天堂久久久久va久久久久| 欧美一区二区二区| 岛国一区二区三区| 亚洲综合色视频| 精品国产乱码久久久久久久久| 成人永久看片免费视频天堂| 亚洲一区二区综合| 日韩精品最新网址| 成人精品一区二区三区四区| 亚洲欧美一区二区三区极速播放| 欧美日韩免费在线视频| 精品一区二区三区久久久| 亚洲欧洲日韩在线| 欧美精品日韩精品| 福利一区二区在线| 亚洲成人av一区二区| 337p日本欧洲亚洲大胆精品| 91天堂素人约啪| 蜜臀av性久久久久蜜臀av麻豆| 国产欧美日韩另类视频免费观看| 一本大道av一区二区在线播放| 日韩黄色免费电影| 最新日韩在线视频| 精品成人佐山爱一区二区| 91一区二区在线| 久久精品久久99精品久久| 成人欧美一区二区三区视频网页| 欧美日韩久久一区| 99久久精品久久久久久清纯| 久久成人久久爱| 亚洲欧美日韩人成在线播放| 日韩精品中午字幕| 欧美视频一二三区| av在线一区二区| 国产在线一区二区综合免费视频| 亚洲精品老司机| 国产视频一区在线观看| 欧美一级精品大片| 精品污污网站免费看| 99天天综合性| 国产精品一品二品| 麻豆成人av在线| 亚洲bdsm女犯bdsm网站| 亚洲天堂a在线| 国产精品女主播av| 精品国产乱码91久久久久久网站| 91精品一区二区三区久久久久久 | 美女久久久精品| 亚洲国产精品久久人人爱| 亚洲激情中文1区| 国产精品麻豆视频| 日本一区二区三区高清不卡| 精品国产三级电影在线观看| 欧美一级在线视频| 欧美日本国产一区| 欧美午夜理伦三级在线观看| 色综合久久中文字幕| 97精品久久久午夜一区二区三区 | 另类中文字幕网| 蜜臀久久久久久久| 偷拍一区二区三区| 天堂久久久久va久久久久| 午夜av电影一区| 亚洲成人av免费| 日韩黄色一级片| 日韩高清在线电影| 久久99国产精品久久| 美女视频黄 久久| 国产剧情一区在线| 成人v精品蜜桃久久一区| 成人av综合在线| yourporn久久国产精品| 99视频一区二区三区| 色久优优欧美色久优优| 欧美少妇性性性| 日韩一二三区不卡| 日韩欧美中文字幕制服| 欧美tickle裸体挠脚心vk| 久久久国产综合精品女国产盗摄| 国产亚洲va综合人人澡精品 | 成人毛片老司机大片| av午夜精品一区二区三区| 色综合夜色一区| 久久毛片高清国产| 久久久久成人黄色影片| 国产精品久久久久三级| 一区二区不卡在线播放 | 久久aⅴ国产欧美74aaa| 国产精品1区2区3区在线观看| 国产999精品久久久久久| eeuss鲁片一区二区三区在线观看| 91久久精品一区二区二区| 日韩一级大片在线观看| 欧美激情中文字幕一区二区| 亚洲日本乱码在线观看| 日韩专区中文字幕一区二区| 精品在线观看免费| 99re这里只有精品首页| 欧美精品丝袜中出| 国产午夜精品一区二区三区四区| 一区二区欧美视频| 麻豆精品视频在线观看| caoporn国产一区二区| 欧美精品视频www在线观看 | 欧美一级夜夜爽| 中文字幕成人av| 青娱乐精品在线视频| 成人av网站免费观看| 欧美午夜精品一区二区三区| 久久久久久久久久电影| 亚洲午夜在线电影| 国产精品系列在线播放| 欧美三级欧美一级| 国产精品国产三级国产| 久久精品国产免费| 欧洲精品中文字幕| 国产精品视频一二三区| 蜜桃视频在线观看一区二区| eeuss鲁片一区二区三区在线看| 欧美成人在线直播| 亚洲综合一区二区| 成人国产免费视频| 久久精品综合网| 久热成人在线视频| 欧美日产在线观看| 亚洲精品欧美在线| 99精品视频在线免费观看| 精品国产乱码久久久久久图片 | 欧美国产激情二区三区 | 日韩视频免费观看高清在线视频| 亚洲日本免费电影| 成人精品免费看| 国产欧美精品在线观看| 美洲天堂一区二卡三卡四卡视频| 欧美亚洲一区二区在线| 国产精品成人一区二区艾草| 国产一区二区成人久久免费影院 | 色网站国产精品| 国产女同互慰高潮91漫画| 久久激情综合网| 欧美一级日韩不卡播放免费| 亚洲一区二区三区不卡国产欧美| 99v久久综合狠狠综合久久| 国产精品欧美一区喷水| 成人免费黄色大片| 国产精品蜜臀av| youjizz久久| 中文字幕五月欧美| 99精品国产99久久久久久白柏 |