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

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

?? main.c

?? 一個采用C8051F020+CH372實現的帶USB功能的流量測控系統
?? C
?? 第 1 頁 / 共 3 頁
字號:
/********************************************************************************************************
**				                                  RidenFlow
**
**                                          版權所有 (c) 2008,羅建
**                                               保留所有權利
**
**                                                  V1.0
**
**
**-------------------------------------------------文件信息----------------------------------------------
**文   件   名: Main.C
**設   計   者: 羅建
**最后修改日期: 2008年05月31日
**描        述: 第五代Riden A50流量計源程序,繼承自第三代軟件,根據硬件的不同修改了部分代碼。
**其        它:MCU采用C8051F020,外部晶振為22.1184MHz,采用臺達3.8'LCD觸摸屏顯示測量數據和輸入配置信息,
**              并控制電磁閥和比例閥,以實現氣體壓力和流量的控制。
**所屬項目概述:RIDEN FLOW流量計是用于測試氣體流量的裝置,其工作原理為:壓縮空氣經空氣過濾器到達比例控制閥,
**              經比例控制閥調壓穩定后,通過氣路通斷控制閥,到達氣體流量計,然后進入產品。該裝置功能就是測
**              量流過氣體的質量流量。
**              各部件的作用如下:
**              1、比例控制閥:其作用是調節前端的高壓氣體以使其穩定在設置的壓力值附近,為測試提供一個穩定的
**                 氣源。
**              2、氣路通斷控制閥:在每一個測量周期內,此閥通斷一次,即在測試檢測過程中打開,測試完成后關閉,
**                 直到下一個測試開始。
**              3、氣體流量計:用于測量流經該傳感器的壓縮空氣的流量。
**基本技術參數:1、被測介質:            壓縮空氣,<0.8MPa;
**              2、氣體流量范圍:        0-50L/min(超量程50% 顯示 Out Range);
**              3、流量精度:            0.01L/min;
**              4、采集及顯示頻率:      3Hz;
**              5、測試壓力:            0-50KPa(自動調節,穩壓);
**              6、測試壓力精度:        0.1KPa;
**              7、充氣時間:            0-999.9S;
**              8、測試時間:            0-999.9S;
**              9、校準系數:            5段;
**              10、通訊接口(To PC):  RS232。
**
**-----------------------------------------------歷史版本信息--------------------------------------------
** 設計者: 羅建
** 版  本: V1.00
** 日 期: 2007年11月24日
** 描 述: 原始版本
**
**-----------------------------------------------當前版本修訂--------------------------------------------
** 修改者: 羅建
** 版  本: V1.01
** 日 期: 2008年05月31日
** 描 述: 在第三代流量計軟件基礎上針對硬件的變化作了適應性修改。
**
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include <c8051f020.h>                      // SFR declarations
#include "GlobeDef.h"
#include "Ch372Drv.h"

//-------------------------------------------------------------------------------------------------------
/* C8051F02x單片機的16位SFR定義 */
sfr16 DP          =  0x82;                  // data pointer
sfr16 TMR3RL      =  0x92;                  // Timer3 reload value
sfr16 TMR3        =  0x94;                  // Timer3 counter
sfr16 ADC0        =  0xbe;                  // ADC0 data
sfr16 ADC0GT      =  0xc4;                  // ADC0 greater than window
sfr16 ADC0LT      =  0xc6;                  // ADC0 less than window
sfr16 RCAP2       =  0xca;                  // Timer2 capture/reload
sfr16 T2          =  0xcc;                  // Timer2
sfr16 RCAP4       =  0xe4;                  // Timer4 capture/reload
sfr16 T4          =  0xf4;                  // Timer4
sfr16 DAC0        =  0xd2;                  // DAC0 data
sfr16 DAC1        =  0xd5;                  // DAC1 data

//-------------------------------------------------------------------------------------------------------
/* 本項目對C8051F02x單片機的引腳重定義,其中,XBR0 = 0x05,XBR1 = 0x04,XBR2 = 0x44,P0MDOUT = 0x91,
   P1MDOUT = 0x00,P2MDOUT = 0x00,P3MDOUT = 0x03, P74OUT = 0x00 */
// P0
sbit  UART0_TX    =  P0^0;                  // XBR0.2 = 1(UART0EN = 1),P0MDOUT.0 = 1,TX0作為推挽方式輸出
sbit  UART0_RX    =  P0^1;                  //                          P0MDOUT.1 = 0, RX0作為漏極開路方式輸入
sbit  I2C_SDA     =  P0^2;                  // XBR0.0 = 1(SMB0EN = 1), P0MDOUT.2 = 0, SDA作為漏極開路方式輸入或輸出
sbit  I2C_SCL     =  P0^3;                  //                         P0MDOUT.3 = 0, SCL作為漏極開路方式輸入或輸出
sbit  UART1_TX    =  P0^4;                  // XBR2.2 = 1(UART1EN = 1),P0MDOUT.4 = 1,TX1作為推挽方式輸出
sbit  UART1_RX    =  P0^5;                  //                          P0MDOUT.5 = 0, RX1作為漏極開路方式輸入
sbit  USB_INT     =  P0^6;                  // XBR1.2 = 1(INT0EN = 1), P0MDOUT.6 = 0, INT0作為漏極開路方式輸入
sbit  USB_A0      =  P0^7;                  // P0MDOUT.7 = 1, 推挽方式, 數字輸出
// P1
sbit  KEY_START   =  P1^0;                  // P1MDOUT.0 = 0,漏極開路方式,并使KEY_START = 1將其配置為數字輸入
sbit  KEY_STOP    =  P1^1;                  // P1MDOUT.1 = 0,漏極開路方式,并使KEY_STOP = 1將其配置為數字輸入
sbit  DRV_PASS    =  P1^2;                  // P1MDOUT.2 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  DRV_FAIL    =  P1^3;                  // P1MDOUT.3 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  DRV_WARN    =  P1^4;                  // P1MDOUT.4 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  DRV_VALVE   =  P1^5;                  // P1MDOUT.5 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定

// P2
sbit  KEY_RCK     =  P2^0;                  // P2MDOUT.0 = 0,漏極開路方式,并使KEY_RCK = 1將其配置為數字輸入
sbit  KEY_SCK     =  P2^1;                  // P2MDOUT.1 = 0,漏極開路方式,并使KEY_SCK = 1將其配置為數字輸入
sbit  KEY_SER     =  P2^2;                  // P2MDOUT.2 = 0,漏極開路方式,并使KEY_SER = 1將其配置為數字輸入
sbit  LED_PASS    =  P2^3;                  // P2MDOUT.3 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LED_FAIL    =  P2^4;                  // P2MDOUT.4 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LED_WARN    =  P2^5;                  // P2MDOUT.5 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  KEY_IN1     =  P2^6;                  // P2MDOUT.6 = 0,漏極開路方式,并使KEY_IN1 = 1將其配置為數字輸入
sbit  KEY_IN2     =  P2^7;                  // P2MDOUT.7 = 0,漏極開路方式,并使KEY_IN2 = 1將其配置為數字輸入

// P3
sbit  USB_WR      =  P3^0;                  // P3MDOUT.0 = 1,推挽方式,作為數字輸出
sbit  USB_RD      =  P3^1;                  // P3MDOUT.1 = 1,推挽方式,作為數字輸出

// P4
sfr   USB_DATA    =  0x84;                  // P74OUT = 0x00,P4口被配置為漏極開路方式,使USB_DATA = 0xFF將其配置為數字輸入


// ------------------------------------------------------------------------------------------------------
/* 定義位變量 */
bit       gbReadyWarn;                           /* 指示是否進入告警超時檢測過程,0~否,1~是 */
bit       gbCanGetKey;                           /* 指示是否可以再次檢測按鍵,0~否,1~是 */
bit       gbTimeOver;                            /* 指示規定的定時間隔時間(100ms)時否到,0~未到,1~已到 */
bit       gbTestOver;                            /* 指示當前是否已完成或退出了檢測狀態,0~非檢測狀態或檢測過程未結束,1~檢測完成(但未退出檢測進程) */
bit       gbSyncOneOK0;                          /* 指示串口0數據幀的第一個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbSyncTwoOK0;                          /* 指示串口0數據幀的第二個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbSyncOneOK1;                          /* 指示串口1數據幀的第一個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbSyncTwoOK1;                          /* 指示串口1數據幀的第二個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbStarted;                             /* 指示<啟動鍵>是否按下,0~未按下,1~按下 */
bit       gbFilling;                             /* 指示當前是否工作于充氣狀態,0~否,1~是 */
bit       gbTesting;                             /* 指示當前是否工作于測試狀態,0~否,1~是 */

/* 定義字節變量 */
INT8U     data  gnCntADC;                        /* ADC0采集間隔時間計數器(為了降低LCD的刷新率) */
INT8U     data  gnCntWarn;                       /* 壓力告警超時計數器 */
INT8U     data  gnCntAdjust;                     /* 壓力調節時間計數器 */
INT8U     data  gnCnt10ms;                       /* 10ms定時計數器,用于實現100ms定時 */
INT8U     data  gnCntGetKey;                     /* 兩次檢測按鍵之間的時間間隔(實際間隔是該值乘以100ms */
INT8U     data  gnTxdID1;                        /* 串口UART1發送緩沖區數組索引 */
INT8U     data  gnRxdID0;                        /* 串口UART0接收緩沖區數組索引 */
INT8U     data  gnRxdID1;                        /* 串口UART1接收緩沖區數組索引 */
INT8U     data  gnTxdNums1;                      /* 串口UART1發送緩沖區數組中的數據個數,即要發送的數據個數 */
INT8U     data  gnT0OverCnt;                     /* 代表T0中斷溢出的次數 */
INT8U     idata gnRxdBuf0[2];                    /* 代表串口UART0接收緩沖區數組 */
INT8U     idata gnRxdBuf1[64];                   /* 代表串口UART1接收緩沖區數組,高字節在前 */
INT8U     idata gnTxdBuf1[16];                   /* 代表串口UART1發送緩沖區數組 */

/* 定義字變量 */
INT16U    data  gnPressGet=0;                    /* 測得的氣體壓力(單位為0.1KPa) */
INT16U    data  gnLeakGet=0;                     /* 測得的氣體流量(單位為0.01L/min) */
INT16U    data  gnPressSet=0;                    /* 用戶通過觸摸屏設定的氣體壓力(單位為0.1KPa) */
INT16U    data  gnPressMax=0;                    /* 用戶通過觸摸屏設定的允許最大氣體壓力(單位為0.1KPa) */
INT16U    data  gnPressMin=0;                    /* 用戶通過觸摸屏設定的允許最小氣體壓力(單位為0.1KPa) */
INT16U    data  gnLeakMax =0;                    /* 用戶通過觸摸屏設定的允許最大氣體流量(單位為0.01L/min) */
INT16U    data  gnCurrTime=0;                    /* 代表當前操作正在進行的時間 */
INT16U    data  gnFillTime=0;                    /* 用戶通過觸摸屏設定的充氣時間 */
INT16U    data  gnTestTime=0;                    /* 用戶通過觸摸屏設定的測試時間 */
INT16U    idata gnLeakAreaMax[6];                /* 用戶通過觸摸屏設定的分段修正流量最大值(單位為0.01L/min) */
INT16U    idata gnLeakAreaCoef[6];               /* 用戶通過觸摸屏設定的分段修正流量系數 */
INT16U    data  gnPressOut=0;                    /* 輸出到比例控制閥的壓力信號值(單位為0.1KPa) */

INT32U    data  gnADC0Res=0;                     /* ADC0的轉換結果(數字量) */
INT32U    data  gnLeakRes=0;
// ------------------------------------------------------------------------------------------------------
/* 函數聲明 */
void DeviceInit(void);
void SysInit(void);
void SetRxd0OK(void);
void SetRxd1OK(void);
void AdjustPress(void);
void DoneKey(void);
void DoneTest(void);

// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函數名稱: main
** 功能描述: 主程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:略
** 調用模塊:略
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 版    本:V1.00,原始版本
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void main(void)
{
  WDTCN = 0xDE;                             // 禁止看門狗定時器
  WDTCN = 0xAD;
  DeviceInit();                             // 初始化片上系統外圍設備   
  SysInit();                                // 初始化系統變量
  DRV_PASS = 0;
  DRV_FAIL = 0;
  DRV_WARN = 0;
  DRV_VALVE= 0;
  //DAC0L = 0xFF;
  //DAC0H = 0x07;
  gnLeakGet = 123;
  CH375_Init();

  while (TRUE)                              // 主程序循環
  {
    while (!gbTimeOver);                    // 檢查定時間隔是否到(0.1秒)
    gbTimeOver = FALSE;                     // 準備重新延時
	if (gnCntADC-- == 0)
	{
	  gnCntADC = ADC_WAIT;
      AD0EN = TRUE;
    }
	// 檢查壓力是否超出設定的最大與最小值,是則警告  
    if ((gnPressGet > gnPressMax) || (gnPressGet < gnPressMin))
	{
	  if (!gbReadyWarn)                     // 當首次檢測到壓力超出設定值時,開始計時
	  {
	    gbReadyWarn = TRUE;
	    gnCntWarn = WARN_WAIT;
      }
      else if (gnCntWarn-- == 0)            // 當壓力超出設定值的時間持續10秒后,輸出報警指示
	  {
	    gbReadyWarn = FALSE;
        DRV_WARN = OPEN;        
	  }
    }
	else                                    // 壓力在設定值區間內,不用報警
	{
	  gbReadyWarn = FALSE;
      gnCntWarn = 0;
      DRV_WARN = CLOSE;
    }
    AdjustPress();                          // 進行壓力調節
    DoneKey();                              // 按鍵檢測處理
    DoneTest();                             // 執行流量測試
  }
}

// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函數名稱: DeviceInit
** 功能描述: 片上系統外圍設備初始化子程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:略
** 調用模塊:略
** 其它說明:外部系統時鐘啟動過程建議為:
**           1)允許外部振蕩器;
**           2)等待至少1ms;
**           3)查詢XTLVLD是否由“0”=>“1”;
**           4)將系統時鐘切換到外部振蕩器。
**
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 版    本:V1.00,原始版本
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void DeviceInit(void)
{
  int i;                                    // 延時計數器

  // 系統時鐘初始化
  OSCXCN = 0x67;                            // 啟動外部22.1184MHz晶體振蕩器
  for (i=0;i<3000;i++);                     // 等待XTLVLD消隱期(>1ms)
  while ((OSCXCN & 0x80) == 0);             // 等待外部晶振穩定
  OSCICN = 0x08;                            // 選擇外部振蕩器作為系統時鐘SYSCLK,同時禁止時鐘丟失檢測功能

  // 數字量輸入輸出端口初始化
  P0MDOUT = 0x91;
  P1MDOUT = 0x00;
  P2MDOUT = 0x00;
  P3MDOUT = 0x03;
  P74OUT  = 0x00;
  XBR0 = 0x05;                              // 允許UART0、SMBus、UART1
  XBR1 = 0x04;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合色噜噜狠狠| 成人丝袜18视频在线观看| 国产福利不卡视频| 欧美性xxxxxxxx| 中文字幕在线观看一区二区| 亚洲成va人在线观看| 成人高清视频在线观看| 精品国产百合女同互慰| 水蜜桃久久夜色精品一区的特点| 国产精品热久久久久夜色精品三区| 亚洲福利国产精品| 成人91在线观看| 久久久精品免费观看| 免费成人av在线播放| 欧美日韩在线播放一区| 国产精品传媒视频| 成人晚上爱看视频| 26uuu精品一区二区在线观看| 日日摸夜夜添夜夜添精品视频| 99综合电影在线视频| 中文字幕欧美激情一区| 国产精品夜夜爽| 26uuu精品一区二区在线观看| 七七婷婷婷婷精品国产| 欧美一级免费大片| 日韩精品乱码av一区二区| 欧美日韩另类一区| 亚洲一卡二卡三卡四卡无卡久久| 色素色在线综合| 亚洲自拍偷拍九九九| 欧美综合亚洲图片综合区| 亚洲品质自拍视频网站| 99re视频精品| 一区二区三区在线视频观看58| 99精品欧美一区二区三区小说 | 国产精品亚洲第一| 欧美zozo另类异族| 国产综合成人久久大片91| 精品国产亚洲一区二区三区在线观看| 美日韩一区二区三区| 欧美成人精精品一区二区频| 久草这里只有精品视频| 国产日韩欧美精品一区| 从欧美一区二区三区| 亚洲色图一区二区三区| 欧美最猛黑人xxxxx猛交| 无码av免费一区二区三区试看 | 美国一区二区三区在线播放| 精品国一区二区三区| 国产电影精品久久禁18| 国产精品美女久久久久久| 91年精品国产| 蜜臀久久99精品久久久久宅男| 精品国产伦一区二区三区观看方式| 精品中文av资源站在线观看| 亚洲国产精品二十页| 99国产欧美另类久久久精品| 亚洲国产中文字幕| 日韩精品自拍偷拍| 91丨porny丨蝌蚪视频| 午夜精品福利久久久| 国产亚洲精品免费| 色屁屁一区二区| 国产精品亚洲专一区二区三区| 亚洲图片激情小说| 日韩一卡二卡三卡| 91视频com| 国产综合色在线视频区| 亚洲男人天堂一区| 久久久91精品国产一区二区精品| 一本一道久久a久久精品综合蜜臀| 婷婷久久综合九色国产成人 | 精品国产三级a在线观看| 成人午夜视频网站| 午夜电影一区二区三区| 亚洲国产成人自拍| 日韩免费观看高清完整版在线观看| 国产91丝袜在线播放| 日本大胆欧美人术艺术动态 | 欧美亚洲免费在线一区| 国产精品资源网| 视频一区二区欧美| 亚洲天堂久久久久久久| 精品国产髙清在线看国产毛片| 日本韩国精品在线| 国产激情一区二区三区四区| 五月婷婷激情综合网| 日韩美女久久久| 久久精品日产第一区二区三区高清版| 欧美老女人第四色| 91麻豆国产精品久久| 国产大陆精品国产| 蜜桃av噜噜一区二区三区小说| 亚洲伊人伊色伊影伊综合网| 国产精品剧情在线亚洲| 国产无一区二区| 精品国产免费久久| 日韩一级欧美一级| 欧美精品aⅴ在线视频| 在线一区二区三区四区| 99视频一区二区三区| 成人免费高清视频| 国产高清精品久久久久| 国产一区二区在线观看视频| 免费观看日韩电影| 蜜桃av噜噜一区| 裸体一区二区三区| 老司机午夜精品| 奇米影视一区二区三区小说| 五月激情综合婷婷| 日本一区中文字幕| 另类小说综合欧美亚洲| 久久精品国产久精国产| 另类中文字幕网| 激情综合网最新| 国产在线播精品第三| 国产精品小仙女| thepron国产精品| 色av一区二区| 欧美精品亚洲二区| 日韩一区二区麻豆国产| 久久综合久久综合九色| 日本一区二区免费在线观看视频| 久久久午夜精品理论片中文字幕| 国产亚洲精品久| 亚洲免费电影在线| 亚洲高清免费观看高清完整版在线观看| 亚洲一区自拍偷拍| 视频在线在亚洲| 国内成+人亚洲+欧美+综合在线| 国产一区二区精品久久91| 成人涩涩免费视频| 色就色 综合激情| 欧美一级高清片在线观看| 精品成人a区在线观看| 国产女同性恋一区二区| 一区二区三区日韩欧美精品| 五月激情综合婷婷| 国产福利一区二区三区视频在线| 91久久精品国产91性色tv| 91麻豆精品国产91久久久资源速度 | 成人自拍视频在线| 在线中文字幕一区二区| 日韩欧美成人午夜| 国产精品国模大尺度视频| 亚洲最色的网站| 国模大尺度一区二区三区| av激情综合网| 欧美狂野另类xxxxoooo| 中文字幕欧美区| 日本vs亚洲vs韩国一区三区二区| 国v精品久久久网| 欧美日韩三级视频| 国产视频一区在线播放| 五月天精品一区二区三区| 国产精品 日产精品 欧美精品| 欧美亚洲动漫精品| 亚洲国产成人午夜在线一区| 五月激情六月综合| 91老司机福利 在线| 精品国产91乱码一区二区三区 | 亚洲人成7777| 裸体歌舞表演一区二区| 91偷拍与自偷拍精品| 26uuu国产电影一区二区| 亚洲女爱视频在线| 成人中文字幕合集| 精品国产3级a| 天堂在线一区二区| 一本色道**综合亚洲精品蜜桃冫| 精品日韩欧美一区二区| 亚洲r级在线视频| 91麻豆产精品久久久久久| 国产丝袜欧美中文另类| 激情五月婷婷综合网| 欧美日韩国产综合久久| 亚洲黄色在线视频| 成人精品免费看| 久久久久久日产精品| 卡一卡二国产精品| 欧美一区二区三区公司| 亚洲一二三区不卡| 成人免费观看视频| 精品日产卡一卡二卡麻豆| 午夜精品福利在线| 欧美日韩国产一二三| 一卡二卡三卡日韩欧美| 色婷婷精品大视频在线蜜桃视频 | 日韩精品一区二区三区在线播放 | 国产成人免费视频精品含羞草妖精| 欧美一区二区三区在线视频| 亚洲免费av在线| 91一区二区在线| ...中文天堂在线一区| 成人黄色网址在线观看| 国产精品卡一卡二| 色综合天天天天做夜夜夜夜做| 亚洲欧洲韩国日本视频| www.日本不卡| 一区二区三区在线视频免费观看|