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

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

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

?? 18b20底層子函數
?? C
字號:
//=================================================================================================
// 項目名:MCS51-項目開發經典
// 硬件文件名:51Studay.DDB
// 程序組目錄名:MCS51-項目開發經典
// 開始時間:2007年5月21日
// 完成時間:2007年6月10日
//-------------------------------------------------------------------------------------------------
// 程序中用到哪些C51標準函數,就需要把該函數對應的頭文件包含進來
//-------------------------------------------------------------------------------------------------
#include <intrins.h>
#include <string.h>
#include <absacc.h>
#include <reg52.h>
//-------------------------------------------------------------------------------------------------
// 為提高書寫效率做以下宏定義
//-------------------------------------------------------------------------------------------------
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
#define CLOSE 1
#define OPEN  0


sbit   dq =P2^4;
bit  flag;
//-------------------------------------------------------------------------------------------------
// 操作UART串口相關的全局變量
//-------------------------------------------------------------------------------------------------
uchar idata uart_buffer[40];//串口接收緩沖區,可接收字符串的最大長度為40
uchar uart_buffer_address;//串口接收緩沖區地址計數器
bit   uart_receive_start; //串口接收啟動
bit   uart_receive_ok;    //串口接收(UART0)中斷里已接收完整消息標志

//-------------------------------------------------------------------------------------------------
uint t1_delay_time;//50毫秒計數器累加變量,在T1中斷里累加
// 函數聲明
//-------------------------------------------------------------------------------------------------
void  init_cpu(void);
void  uart_byte_out(uchar uart_data_out);
void  uart_string_out(char * char_array);
void  uart_data_decimalist_out(uint data_to_out);
void  uart_newline(uchar newline_number);
uchar change_hex_to_askii(uchar data_hex);

void init_18b20 (void);
uint read_word (void);
void write (uchar wr);
float get_temp (void);
void delay(unsigned int i);
//=================================================================================================
//=================================================================================================
//=================================================================================================
//=====================                            ================================================
//=====================          主程序            ================================================
//=====================                            ================================================
//=================================================================================================
void main (void)
{		
    float temperature=0;
	uint ttttt;
	init_cpu();
	init_18b20 ();
  
wqyloop:

		t1_delay_time=0;
		temperature=get_temp ();//讀溫度
		ttttt=(uint)(temperature*10+0.5);
		uart_string_out("The wendu is :");
		uart_data_decimalist_out(ttttt);
		uart_newline(2);
		
		for(t1_delay_time=0;t1_delay_time<50;);//延時500毫秒

goto wqyloop;
}//The end of main()

//##########################  主程序結束  #########################################################
//##########################  子程序開始  #########################################################

//=================================================================================================
// 函數功能:CPU初始化函數
// 串口波特率可以由T1或T2產生,本例中用T1產生波特率
// T2用于50毫秒精確定時
// T0用于PWM控制中頻率的時基
//=================================================================================================
void init_cpu(void)
{ 
  TMOD=0x12;//T1為16位計數器,T0為8位自動重裝載計數器

  ET1=1;
  TH1=0x4c;//11.0592M晶振時T1定時時間長度為50毫秒
  TL1=0x00;
  TR1=1;//T1開始定時

  T2CON=0x30;//定時器T2工作于波特率發生器方式
  RCAP2H=0xff;//11.0592M晶振,9600bps初值
  RCAP2L=0xdc;
  TH2=0xff;
  TL2=0xdc;
  TR2=1;//允許T2中斷

  SCON=0x40;//串口工作于方式1,啟動串口接收

  EA=1;//CPU中斷開放
}

//=================================================================================================
// 串口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);
	 }
}


//=================================================================================================
// 數制轉換相關程序
//=================================================================================================

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);
}

//=================================================================================================
//18B20_________溫度
//=================================================================================================
//初始化函數
//=================================================================================================
void init_18b20 (void)
{  dq=1;
  _nop_();
  dq=0;
  delay(90);            //delay 530 uS
  dq=1;
  delay(6);            //delay 100 uS
  if(dq==0)
     flag=1;            //detect 1820 success!
  else
     flag=0;             //detect 1820 fail!
  delay(20);
  dq=1;
}
//=================================================================================================
//讀2個字節
//=================================================================================================
uint read_word (void)
{
  uchar i;
  uint u=0;
  for(i=0;i<16;i++)
   {
     dq=0;
     u>>=1;
     dq=1;
     if(dq==1)
        u|=0x8000;
     delay (4);
   }
  return(u);
}
//=================================================================================================
//寫一個字節
//=================================================================================================
void write (uchar wr)
{
  uchar i;
  for (i=0;i<8;i++)
   {
     dq=0;
     _nop_();
     dq=wr&0x01;
     delay(5);            //delay 45 uS
     dq=1;
     wr>>=1;
   }
}
//=================================================================================================
//讀取溫度
//=================================================================================================
float get_temp (void)
{
  uint temp;
  float tem;
  init_18b20();
  if (flag)
   { write (0xcc);            //skip rom
     write (0x44);            //temp convert
     init_18b20 ();
     write (0xcc);            //skip rom
     write (0xbe);            //read temp
     temp=read_word();            //read
     if(temp<0x8000)
       tem=(float)temp*0.0625;            //temperature>=0
     else
       tem=((float)(~temp)+0x01)*(-0.0625);         //temperature< 0
    }
	 return(tem);
 }
//=================================================================================================
//延時函數-----------------------------------------------------------------------------------------
//=================================================================================================
void delay(unsigned int i)
                  {
                   while(i--);
                  }

//=================================================================================================
// T1中斷服務程序
//=================================================================================================
void T1_interrupt(void) interrupt 3
{ 
  TH1=0x4c;//11.0592M晶振時T1定時時間長度為50毫秒
  TL1=0x00;
  t1_delay_time++;//在需要延時的地方清空并判斷該變量
}
//=================================================================================================
//                           end of the file 
//=================================================================================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品热久久久久夜色精品三区| 精品美女被调教视频大全网站| 91国偷自产一区二区三区成为亚洲经典| 免费高清在线视频一区·| 日韩理论片一区二区| 国产精品久久777777| 日本一区二区在线不卡| 亚洲国产成人私人影院tom| 精品成a人在线观看| 国产日韩精品一区二区三区| 中文字幕精品一区| 中文字幕一区在线| 亚洲高清在线精品| 秋霞国产午夜精品免费视频| 激情综合色丁香一区二区| 国产一区亚洲一区| 成人毛片在线观看| 91黄色激情网站| 欧美一区二区三级| 国产清纯美女被跳蛋高潮一区二区久久w | 3d动漫精品啪啪一区二区竹菊| 欧美日本精品一区二区三区| 日韩精品一区二区三区在线| 久久久综合激的五月天| 亚洲蜜桃精久久久久久久| 午夜精品福利一区二区三区av| 精品一区二区在线看| 国产suv精品一区二区6| 91浏览器打开| 日韩美女一区二区三区四区| 国产精品久久夜| 天堂va蜜桃一区二区三区漫画版| 久久丁香综合五月国产三级网站| 成人一区二区三区在线观看| 欧美日韩一区二区在线观看视频| 久久亚区不卡日本| 五月天久久比比资源色| 国产一区二区三区国产| 在线视频国内自拍亚洲视频| 精品入口麻豆88视频| 亚洲欧美日韩国产手机在线| 狠狠网亚洲精品| 欧美日韩一区二区三区视频| 国产欧美一区二区三区在线看蜜臀| 亚洲午夜免费福利视频| 国产不卡一区视频| 日韩欧美一区中文| 亚洲已满18点击进入久久| 国产精品18久久久久久久久| 欧美午夜精品久久久久久超碰| 欧美r级电影在线观看| 一区二区三区欧美日| 国产成人啪免费观看软件| 欧美日韩激情一区二区| 日韩一区日韩二区| 国产一区欧美日韩| 日韩精品一区二区三区中文不卡| 亚洲欧美在线视频观看| 欧美日韩一区视频| 成人欧美一区二区三区小说| 九色|91porny| 精品少妇一区二区三区视频免付费| 亚洲激情av在线| av成人老司机| 一色屋精品亚洲香蕉网站| 国产一区二区三区四区五区美女| 日韩免费高清av| 久久精品国内一区二区三区| 欧美日韩电影在线播放| 亚洲一区二区在线播放相泽| 欧美在线三级电影| 亚洲成人av中文| 欧美日韩在线三级| 日韩精品一级中文字幕精品视频免费观看 | 国产在线不卡一区| xf在线a精品一区二区视频网站| 奇米色一区二区| 9191成人精品久久| 石原莉奈一区二区三区在线观看| 欧美亚洲愉拍一区二区| 午夜精品国产更新| 日韩一卡二卡三卡国产欧美| 免费高清成人在线| 久久综合狠狠综合久久激情| 国产精品1024| 亚洲欧美福利一区二区| 在线观看亚洲精品视频| 亚洲国产精品欧美一二99| 69堂精品视频| 经典三级一区二区| 国产农村妇女毛片精品久久麻豆 | 91污在线观看| 亚洲成av人片www| 3751色影院一区二区三区| 国产在线国偷精品产拍免费yy| 中文一区一区三区高中清不卡| 91影视在线播放| 视频一区在线播放| 精品国产一区二区三区久久影院| 国产福利一区二区三区视频 | 国产老女人精品毛片久久| 国产精品天干天干在线综合| 色婷婷激情一区二区三区| 日本成人超碰在线观看| 欧美经典三级视频一区二区三区| 欧美在线观看你懂的| 国产精品一品二品| 亚洲曰韩产成在线| 国产精品网站一区| 欧美精品自拍偷拍| 成人教育av在线| 美女看a上一区| 亚洲精品欧美激情| 国产午夜亚洲精品午夜鲁丝片| 色婷婷久久一区二区三区麻豆| 久久国产尿小便嘘嘘| 亚洲高清一区二区三区| 国产精品免费av| 日韩欧美一级二级| 欧美日韩在线三级| 成人av电影在线播放| 美女视频黄久久| 亚洲高清免费一级二级三级| 国产欧美日本一区视频| 欧美一级生活片| 欧美日韩精品电影| 色婷婷av一区| 91在线视频免费91| 国产精品一区二区不卡| 蜜臀久久99精品久久久久久9| 伊人开心综合网| 国产欧美日本一区视频| 精品福利二区三区| 91精品国产aⅴ一区二区| 日本国产一区二区| bt欧美亚洲午夜电影天堂| 国产一区中文字幕| 精品一区二区三区欧美| 日韩av成人高清| 亚洲3atv精品一区二区三区| 综合在线观看色| 国产精品国产三级国产aⅴ入口 | 日韩伦理av电影| 国产精品久久久久久久久免费相片 | 日韩一区二区视频| 欧美乱妇15p| 欧美肥大bbwbbw高潮| 欧美在线你懂得| 欧美久久久影院| 欧美美女喷水视频| 91精品国产一区二区| 91精品国产综合久久福利| 欧美体内she精视频| 欧美亚洲动漫精品| 欧美日韩精品二区第二页| 欧美丰满少妇xxxbbb| 制服丝袜激情欧洲亚洲| 日韩一区二区三区观看| 日韩久久久久久| 久久婷婷国产综合精品青草| 久久综合九色综合97婷婷女人 | 午夜电影一区二区| 日韩在线一二三区| 国内外成人在线| 99久久伊人网影院| 欧美午夜视频网站| 欧美本精品男人aⅴ天堂| 精品国产123| 亚洲欧洲日韩av| 亚洲国产成人av好男人在线观看| 日本伊人色综合网| 国产又黄又大久久| 一本到高清视频免费精品| 欧美卡1卡2卡| 国产日韩欧美电影| 亚洲成av人影院在线观看网| 奇米888四色在线精品| 国产福利一区二区三区视频在线 | 亚洲精选视频免费看| 天天操天天干天天综合网| 精品系列免费在线观看| 国产成人av一区| 欧美日韩在线播| 国产亚洲欧美在线| 亚洲国产综合色| 国产成人自拍网| 一本大道久久a久久综合| 91精品国产黑色紧身裤美女| 中文字幕av在线一区二区三区| 亚洲精品视频在线观看网站| 免费观看一级欧美片| 91视视频在线观看入口直接观看www| 欧美日本韩国一区二区三区视频| 国产欧美日韩在线看| 亚洲成人高清在线| 成人国产精品视频| 日韩美女视频在线| 亚洲成人三级小说| 91浏览器在线视频| 国产欧美精品区一区二区三区|