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

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

?? main.c

?? 一個采用C8051F020+CH372實現的帶USB功能的流量測控系統
?? C
?? 第 1 頁 / 共 3 頁
字號:
  XBR2 = 0x44;                              // 允許交叉開關和弱上位
  USB_INT = 1;

  // ADC和DAC(取默認值)轉換初始化
  AMX0CF = 0x00;                            // 配置AIN00-AIN07均為單端輸入方式(默認)
  AMX0SL = 0x00;                            // 選擇AIN00通道進行AD轉換(默認)
  ADC0CF = 0x50;                            // ADC0轉換時鐘為2MHz,PGA增益為1
  ADC0CN = 0x84;                            // 允許ADC0,正常跟蹤模式,Timer3溢出啟動ADC0轉換,ADC0數據右對齊
  DAC0   = 0x0000;                          // 默認DAC0輸出為0
  DAC0CN = 0x80;                            // 允許DAC0輸出,寫DAC0H時DAC0更新輸出,DAC0H3-0保存高4位,DAC0L7-0保存低8位(默認)

  // ADC和DAC參考電壓初始化
  REF0CN = 0x03;                            // ADC0電壓基準取至VREF0,禁止溫度傳感器,內部偏壓發生器和基準電壓緩沖器打開

  // 串口UART0和UART1初始化
  SCON0     = 0x50;                         // UART0為8位可變波特率模式,允許接收
  SCON1     = 0x50;                         // UART1為8位可變波特率模式,允許接收

  // 定時器初始化
  CKCON     = 0x10;                         // TIMER1時鐘源為SYSCLK,TIMER4、TIMER2、TIMER0時鐘源為SYSCLK/12
  TMOD      = 0x21;                         // TIMER1為8位自動重裝載模式,TIMER0為16位定時器方式
  TH1       = 0xDC;                         // TIMER1作為UART0和UART1的波特率發生器,波特率均為19200bps
  TCON      = 0x40;                         // 允許TIMER1定時
  RCAP2H    = 0xB8;                         // TIMER2自動重裝載值(定時10ms,RCAP2L=0x00)
  TH2       = 0xB8;                         // TIMER2計數寄存器初值(定時10ms,TL2=0x00)
  T2CON     = 0x04;                         // TIMER2作為10ms定時器,16位自動重裝載模式,允許定時
  TMR3RLL   = 0x9A;                         // TIMER3自動重裝載值(定時1ms)
  TMR3RLH   = 0xA9;
  TMR3L     = 0x9A;                         // TIMER3計數寄存器初值(定時1ms)
  TMR3H     = 0xA9;
  TMR3CN    = 0x06;                         // TIMER3作為1ms定時器,控制ADC,使用SYSCLK,允許定時

  // 中斷初始化
  EIE2      = 0x42;                         // 允許UART1和ADC0中斷
  IE        = 0xB0;                         // 允許TIMER2、UART0中斷,開總中斷
}

// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函數名稱: SysInit
** 功能描述: ADC0轉換結束中斷服務程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:略
** 調用模塊:略
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 版    本:V1.00,原始版本
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SysInit(void)
{
  gbCanGetKey  = TRUE;
  gnTxdBuf1[0] = 0xFF;
  gnTxdBuf1[1] = 0xFF;
  gnCntAdjust  = ADJUST_WAIT;
  USB_DATA = 0xFF;
  CH375_Init();
}

// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函數名稱: ADC0_ISR
** 功能描述: ADC0轉換結束中斷服務程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:略
** 調用模塊: 略
** 其它說明:ADC0轉換結果與工程量(氣體壓力)之間的轉換原理如下:
**           由于電氣比例閥ITV2000的信號輸出與壓力之間的對應關系為:1-5V對應于0-0.5MPa,假設1-5V信號經
**           2.5倍分壓后(即0.4-2V)進入單片機,其對應的ADC0數字量(即mADC0Res變量的值)為:
**               0.4V===0.4*4096/VREF0,2V===2*4096/VREF0,
**           其中,4096為ADC0的轉換位數(12位),VREF0為ADC0的參考電壓(典型值為2.43V)。
**           將壓力信號擴大10000倍,則0-0.5MPa對應數字0-5000(單位為0.1KPa)。為了便于計算,這里采用直線
**           方程來得到壓力與電壓數字量之間的關系:
**               P1 = 0 = COEF0*0.4*4096/VREF0 + COEF1
**               P2 = 5000 = COEF0*2*4096/VREF0 + COEF1
**           因VREF0可以測得,因此可以解上述方程組。為便于進行整數運算,將VREF0擴大1000倍,則上述方程組可
**           表述為:
**               P1 = 0 = COEF0*400*4096/VREF0 + COEF1
**               P2 = 5000 = COEF0*2000*4096/VREF0 + COEF1
**           解方程組得系數COEF0和COEF1分別為:
**               COEF0 = VREF0*25/32768
**               COEF1 = -1250
**           故壓力方程為:
**               P = D*VREF0*25/32768 - 1250
**           式中,P為待測壓力,單位為0.1KPa,D為ADC0測得的對于輸入電壓的數字量。如果P<0,則應將其置0。
**
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 版    本:V1.00,原始版本
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void ADC0_ISR(void) interrupt INT_ADC0
{
  static INT8U nADC0Cnt=ADC0_SAMPLE_NUMS;   // ADC0采樣次數計數器定義及初始化
  INT32U nPress;

  AD0INT = FALSE;                           // 清除ADC0轉換結束標志
  gnADC0Res += ADC0;                        // 累加ADC0轉換結果并取平均
  nADC0Cnt--;                               // ADC0連續轉換ADC0_SAMPLE_NUMS次,完成后暫停轉換(不響應中斷)
  if (nADC0Cnt == 0)                        // 同時將結果轉換為工程量值(氣體壓力)
  {
    nADC0Cnt = ADC0_SAMPLE_NUMS;
	AD0EN = FALSE;
    gnADC0Res = gnADC0Res/(ADC0_SAMPLE_NUMS+1);
    nPress = gnADC0Res*VREF0*25/32768;         // 進行工程量轉換,如果值小于0,則認為是0
	if (nPress <= 1250)
	  gnPressGet = 0;
    else
	  gnPressGet = nPress - 1250;
  }
}

/********************************************************************************************************
** 函數名稱: UART1_ISR
** 功能描述: 串行口UART0中斷服務程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:無
** 調用模塊:無
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 版    本:V1.00,原始版本
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UART1_ISR(void) interrupt INT_UART1
{
  if (SCON1&0x01)                           // 數據接收中斷
  {
    SCON1 &= ~0x01;                         // 清除接收中斷標志,允許下次接收數據
    if (gbSyncTwoOK1)                       // 檢查同步字節是否接收完畢
	{
      if (SBUF1 == 0xFF)                    // 同步字節已接收完畢,但仍接收到了0xFF,說明出現了最糟糕
	    return;                             // 的情況,即有3個0xFF,因此需將該字節舍棄。
      gnRxdBuf1[gnRxdID1++] = SBUF1;
      // 接收設定參數及系數命令(0xFF,0xFF,0x00,0x02,Data,共44個字節,數據按先低后高的順序發送)
      if (gnRxdID1 >= 32)             // 檢查數據是否接收完畢(包括兩個命令字節)
      {
        gnPressSet = gnRxdBuf1[1]*256 + gnRxdBuf1[0];     // 預設測試壓力值(單位:0.1KPa)
	    gnPressMax = gnRxdBuf1[3]*256 + gnRxdBuf1[2];     // 允許的最高壓力值(單位:0.1KPa)
	    gnPressMin = gnRxdBuf1[5]*256 + gnRxdBuf1[4];     // 允許的最低壓力值(單位:0.1KPa)
	    gnLeakMax  = gnRxdBuf1[7]*256 + gnRxdBuf1[6];     // 允許的最高流量值(單位:0.01L/min)
	    gnFillTime = gnRxdBuf1[9]*256 + gnRxdBuf1[8];   // 充氣時間(單位:0.1S)
	    gnTestTime = gnRxdBuf1[11]*256 + gnRxdBuf1[10];   // 測試時間(單位:0.1S)
		// 由于流量測量的最小值為0,因此其下限始終為0,盡管觸摸屏傳了值(即gnRxdBuf1[13]*256 + gnRxdBuf1[12]),
        // 但該值始終為0,因此這里并不讀取它
		gnLeakAreaMax[0]  = gnRxdBuf1[15]*256 + gnRxdBuf1[14];  // 流量校線階段1對應的最大流量
        gnLeakAreaCoef[0] = gnRxdBuf1[17]*256 + gnRxdBuf1[16];  // 流量校線階段1對應的流量修正系數
		gnLeakAreaMax[1]  = gnRxdBuf1[19]*256 + gnRxdBuf1[18];  // 流量校線階段2對應的最大流量
        gnLeakAreaCoef[1] = gnRxdBuf1[21]*256 + gnRxdBuf1[20];  // 流量校線階段2對應的流量修正系數
		gnLeakAreaMax[2]  = gnRxdBuf1[23]*256 + gnRxdBuf1[22];  // 流量校線階段3對應的最大流量
        gnLeakAreaCoef[2] = gnRxdBuf1[25]*256 + gnRxdBuf1[24];  // 流量校線階段3對應的流量修正系數
		gnLeakAreaMax[3]  = gnRxdBuf1[27]*256 + gnRxdBuf1[26];  // 流量校線階段4對應的最大流量
        gnLeakAreaCoef[3] = gnRxdBuf1[29]*256 + gnRxdBuf1[28];  // 流量校線階段4應的流量修正系數
        SetRxd1OK();                    // 重新初始化同步字節檢測標志及串口接收緩沖區索引
        gnTxdBuf1[0] = 0xFF;            // 發送測量數據及開關狀態至觸摸屏命令(0xFF,0xFF,0x00,0x01,共4個字節)
		gnTxdBuf1[1] = 0xFF;
		gnTxdBuf1[2] = 0x01;            // 準備發送命令的低8位字節
        gnTxdBuf1[3] = 0x00;            // 準備發送命令的高8位字節
        gnTxdBuf1[4] = gnPressGet % 256;// 準備發送測試壓力的低8位字節
        gnTxdBuf1[5] = gnPressGet / 256;// 準備發送測試壓力的高8位字節
        gnTxdBuf1[6] = gnLeakGet % 256; // 準備發送氣體流量的低8位字節
        gnTxdBuf1[7] = gnLeakGet / 256;	// 準備發送氣體流量的高8位字節
        gnTxdID1 = 0;
        gnTxdNums1 = 7;                 // 指示要向觸摸屏發送的數據個數為8個(含幀頭,因下面將先發送一個字節,故為7)
		SBUF1 = gnTxdBuf1[0];           // 開始發送數據至觸摸屏        
	  }
	}
    else                                    // 同步字節還未接收完畢,繼續檢測
	{
      if (SBUF1 == 0xFF)                    // 如果是同步字節,則設置相應的同步字節接收到標志
      {
	    if (gbSyncOneOK1)
		  gbSyncTwoOK1 = TRUE;
		else
		  gbSyncOneOK1 = TRUE;
	  }
      else                                  // 接收到的字節既非同步字節又非正常的測量數據,舍棄重來。
		SetRxd1OK();                        // 重新初始化同步字節檢測標志及串口接收緩沖區索引
	}
  }
  else                                      // 數據發送中斷
  {
    SCON1 &= ~0x02;                         // 清除發送中斷標志,允許下次接收數據    
    if (gnTxdID1 < gnTxdNums1)              // 將發送緩沖區中的gnTxdNums0個數據發送至觸摸屏
	{
	  gnTxdID1++;
	  SBUF1 = gnTxdBuf1[gnTxdID1];
    }
  }
}

/********************************************************************************************************
** 函數名稱: UART0_ISR
** 功能描述: 串行口UART1中斷(僅處理數據接收中斷)服務程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:無
** 調用模塊: 無
** 其它說明:1、RIDen A50流量傳感器的通訊協議
**           1)波特率:19200bps;
**           2)數據位:8位;
**           3)停止位:1位;
**           4)奇偶校驗:none;
**           5)協  議:none;
**           6)回 波:傳感器保證一個回波。
**           7)數據格式:接收到的數值是一個表示兩種含義的有符號的16位整型數。標定后的數據是原始接收數據除
**             以一個常系數而得來的,由此轉成小數。對于A50_V型,流量系數為128,溫度系數為100。例:接收到
**             的數值為+1234(十進制),在流量模式中表示的相應流量值為9.641Ln/min,在溫度模式中表示的溫度
**             為12.34℃。
**           8)幀格式:0x7F,0x7F,MSB,LSB
**             由于最大量程為0x7852,高位字節不包含0x7F。因此,最糟糕的情況就是較低位的字節中包含有0x7F。
**             在這種情況下,0x7F在一行中出現3次。例如:
**             值為:7C 7F,則接收數串為:7F 7F 7C 7F 7F 7F 7C 7F。在假碼中找出同步的最好方法如下:
**             如果Buf[i]=7F,且Buf[i+1]=7F,且Buf[i+2]<>7F,則Buf[i]和Buf[i+1]就是同步字節。
**           9)對整型數值的解釋如下:
**           接收值(16進制)  接收值(10進制)  流量(Ln/min)  溫度(℃)
**                    0x7852             30802        overflow        ----
**                    0x7851             30801   peak overflow        ----
**                    0x7850             30800        +240.600     +308.00
**                    ......             .....        ........     .......
**                    ......             .....        ........     .......
**                    0x0001                 1       +0.007813        0.01
**                    0x0000                 0        0.000000        0.00
**                    0xFFFF                -1       -0.007813       -0.01
**                    ......             .....        ........     .......
**                    ......             .....        ........     .......
**                    0x87B0            -30800        -240.600     -380.00
**           *************************************************************
**           負數與正數是對稱的,可用以下公式計算負數A對應的正數B:
**           B = ~(A-1)
**
**           2、工程量(流量)轉換問題
**           對于A50_V型,流量系數為128。為了不使用浮點數進行計算,且又希望保留2位小數精度,因此可采用將
**           串口接收值先乘以100,再除以128(用右移7位實現)的方法來實現。這樣,如果接收到的數值為十進制
**           的+1234,則在流量模式中利用上述方法計算的流量值為9.64Ln/min,所得的測量精度為±0.01Ln/min,
**           可以滿足使用要求。
**
**           3、顯示與儲存沖突防治
**           由于串口接收數據是隨機的,且數據有多字節(至少為2字節),在顯示過程中,如果主程序剛訪問了第1
**           個字節,這時發生了串口中斷,并且更新了要顯示的數據,當串口中斷返回時,主程序繼續顯示第2個字
**           節,這時顯示結果將可能是不正確的。
**           為防止上述沖突現象的發生,可采用Win32 API中的“臨界區”思想來實現,即在主程序中讀取數據前,
**           先關閉串口中斷允許標志ES,在讀取完數據后再打開串口中斷允許標志ES的方法。
**
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 修 改 者:羅建                                                                日  期:2007年03月23日
** 修 改 者:羅建                                                                日  期:2007年12月09日
** 歷史版本:V1.00,原始版本
**           V1.01,修改了流量計算方式
** 版    本:V1.02,適應C8051F020單片機的串口UART1
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UART0_ISR(void) interrupt INT_UART0
{
  INT8U  i;
  INT32U nRes;
  static INT8U nLeakCnt=LEAK_SAMPLE_NUMS;   // ADC0采樣次數計數器定義及初始化

  if (RI0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香桃色午夜亚洲一区二区三区| 亚洲一二三区在线观看| 日韩视频一区在线观看| 欧美放荡的少妇| 欧美日韩www| 日韩一区二区三区在线| 日韩欧美在线1卡| 日韩精品专区在线| 国产喂奶挤奶一区二区三区| 国产人成一区二区三区影院| 久久亚洲二区三区| 欧美韩日一区二区三区四区| 国产精品久久久久久户外露出 | 国产一区二区三区观看| 麻豆91精品91久久久的内涵| 精品一区二区三区久久久| 国产一区在线看| 不卡的av电影| 欧美在线看片a免费观看| 欧美日本一道本在线视频| 日韩小视频在线观看专区| 久久久久久黄色| 亚洲视频一区在线观看| 亚洲国产wwwccc36天堂| 久久99精品久久久久久国产越南 | 色欧美片视频在线观看| 欧美日韩一区二区在线观看视频| 欧美成人在线直播| 国产精品久久久久久亚洲毛片| 亚洲精品精品亚洲| 久久99最新地址| 色婷婷综合在线| 欧美一区二区观看视频| 中文字幕精品在线不卡| 午夜激情一区二区三区| 国产mv日韩mv欧美| 3d成人动漫网站| 中文字幕制服丝袜一区二区三区| 日日噜噜夜夜狠狠视频欧美人 | 精品免费国产二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 午夜影视日本亚洲欧洲精品| 国产乱码字幕精品高清av| 欧美性videosxxxxx| 国产免费久久精品| 青青国产91久久久久久| 色综合中文字幕国产 | 久久亚洲综合av| 午夜在线电影亚洲一区| 97se亚洲国产综合自在线观| 欧美大片一区二区三区| 亚洲国产综合在线| 91小视频免费看| 国产视频不卡一区| 日本不卡在线视频| 欧美自拍偷拍午夜视频| 国产女人18水真多18精品一级做| 毛片av一区二区| 在线观看免费视频综合| 亚洲欧美激情在线| 成人午夜免费电影| 精品美女在线观看| 蜜臀精品一区二区三区在线观看 | 国产精品激情偷乱一区二区∴| 蜜臀a∨国产成人精品| 欧美日韩一级二级| 亚洲国产综合91精品麻豆| 北岛玲一区二区三区四区| 欧美高清在线视频| 成人禁用看黄a在线| 国产亚洲福利社区一区| 国产成人精品1024| 久久久久久亚洲综合影院红桃| 久久精品国产第一区二区三区| 91精品国产乱| 秋霞av亚洲一区二区三| 欧美成人精品二区三区99精品| 日韩国产高清在线| 欧美精品久久久久久久多人混战| 亚洲你懂的在线视频| 色国产综合视频| 午夜私人影院久久久久| 91精品在线一区二区| 老司机一区二区| 久久久久久免费毛片精品| 成人免费视频免费观看| 中文字幕一区在线观看| 色天使色偷偷av一区二区| 一区二区免费在线| 91精品黄色片免费大全| 国产麻豆视频一区| 中文字幕一区三区| 欧美视频一区在线| 日本在线不卡视频一二三区| 欧美不卡一二三| 成人久久18免费网站麻豆| 尤物av一区二区| 欧美一级片免费看| 国产馆精品极品| 一区二区三区国产精华| 欧美剧情片在线观看| 国产一区二区看久久| 成人欧美一区二区三区在线播放| 欧美中文字幕亚洲一区二区va在线 | 国产高清视频一区| 亚洲精品高清在线观看| 日韩欧美一卡二卡| 成人h动漫精品| 性久久久久久久| 欧美激情一区在线| 欧美一区二区视频在线观看2020| 欧美久久久影院| 亚洲综合久久久| 777午夜精品免费视频| 国产精品一区二区在线播放| 成人免费在线视频| 日韩免费观看高清完整版在线观看| 国产精品 日产精品 欧美精品| 一区二区视频在线看| 日韩欧美一区电影| 欧美午夜影院一区| 成人午夜激情影院| 久久99精品国产麻豆婷婷| 综合亚洲深深色噜噜狠狠网站| 91麻豆精品国产综合久久久久久 | 久久一二三国产| 欧美午夜不卡在线观看免费| 懂色av一区二区三区免费观看 | 欧美成人免费网站| 欧美影院午夜播放| av中文一区二区三区| 久久99精品国产91久久来源| 亚洲电影中文字幕在线观看| 欧美高清在线一区二区| 精品国产免费人成在线观看| 欧美网站大全在线观看| 91在线观看下载| 国产成人啪免费观看软件| 日韩一区精品视频| 午夜影视日本亚洲欧洲精品| 亚洲激情自拍偷拍| 亚洲欧美怡红院| 国产精品久久久久久久第一福利| 欧美不卡一区二区三区四区| 欧美久久久久中文字幕| 欧美日韩国产首页| 欧美三级日韩在线| 欧美日本在线看| 欧美美女一区二区在线观看| 欧美视频你懂的| 欧美性猛交xxxx黑人交| 欧美伊人精品成人久久综合97| 99国产欧美久久久精品| a亚洲天堂av| 91网站在线播放| 91天堂素人约啪| 91农村精品一区二区在线| 99视频热这里只有精品免费| av在线不卡观看免费观看| 99久久精品情趣| 91丨porny丨最新| 欧美性videosxxxxx| 4438x成人网最大色成网站| 制服丝袜成人动漫| 久久这里只有精品视频网| 久久精品视频一区二区三区| 日本一区二区三区久久久久久久久不 | www.亚洲人| 色菇凉天天综合网| 91精品国产全国免费观看| 日韩精品一区二区三区中文不卡 | 91麻豆精品国产91久久久更新时间| 欧美丰满少妇xxxxx高潮对白 | 亚洲日本丝袜连裤袜办公室| 亚洲一区在线观看免费| 日本免费在线视频不卡一不卡二 | 综合在线观看色| 亚洲mv在线观看| 久久激情五月激情| voyeur盗摄精品| 欧美日本在线播放| 国产日韩视频一区二区三区| 亚洲欧美日韩一区二区 | 国产酒店精品激情| 色综合久久88色综合天天6 | 亚洲欧美国产高清| 肉色丝袜一区二区| 东方aⅴ免费观看久久av| 国产欧美一区二区三区在线老狼| 亚洲三级久久久| 麻豆精品视频在线观看| 成人av先锋影音| 4hu四虎永久在线影院成人| 国产精品乱人伦| 日韩中文欧美在线| 成人国产视频在线观看| 日韩精品一区二区三区蜜臀 | 欧美成人综合网站| 一区二区视频在线| 国产91富婆露脸刺激对白|