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

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

?? main.#1

?? 一個采用C8051F020+CH372實現(xiàn)的帶USB功能的流量測控系統(tǒng)
?? #1
?? 第 1 頁 / 共 3 頁
字號:
/********************************************************************************************************
**				                                  RidenFlow
**
**                                          版權所有 (c) 2008,羅建
**                                               保留所有權利
**
**                                                  V1.0
**
**
**-------------------------------------------------文件信息----------------------------------------------
**文   件   名: Main.C
**設   計   者: 羅建
**最后修改日期: 2008年05月31日
**描        述: 第五代Riden A50流量計源程序,繼承自第三代軟件,根據硬件的不同修改了部分代碼。
**其        它:MCU采用C8051F020,外部晶振為22.1184MHz,采用臺達3.8'LCD觸摸屏顯示測量數據和輸入配置信息,
**              并控制電磁閥和比例閥,以實現(xiàn)氣體壓力和流量的控制。
**所屬項目概述:RIDEN FLOW流量計是用于測試氣體流量的裝置,其工作原理為:壓縮空氣經空氣過濾器到達比例控制閥,
**              經比例控制閥調壓穩(wěn)定后,通過氣路通斷控制閥,到達氣體流量計,然后進入產品。該裝置功能就是測
**              量流過氣體的質量流量。
**              各部件的作用如下:
**              1、比例控制閥:其作用是調節(jié)前端的高壓氣體以使其穩(wěn)定在設置的壓力值附近,為測試提供一個穩(wěn)定的
**                 氣源。
**              2、氣路通斷控制閥:在每一個測量周期內,此閥通斷一次,即在測試檢測過程中打開,測試完成后關閉,
**                 直到下一個測試開始。
**              3、氣體流量計:用于測量流經該傳感器的壓縮空氣的流量。
**基本技術參數:1、被測介質:            壓縮空氣,<0.8MPa;
**              2、氣體流量范圍:        0-50L/min(超量程50% 顯示 Out Range);
**              3、流量精度:            0.01L/min;
**              4、采集及顯示頻率:      3Hz;
**              5、測試壓力:            0-50KPa(自動調節(jié),穩(wěn)壓);
**              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 <Intrins.h>
//#include <String.h>
#include "GlobeDef.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;                            /* 指示規(guī)定的定時間隔時間(100ms)時否到,0~未到,1~已到 */
bit       gbTestOver;                            /* 指示當前是否已完成或退出了檢測狀態(tài),0~非檢測狀態(tài)或檢測過程未結束,1~檢測完成(但未退出檢測進程) */
bit       gbSyncOneOK0;                          /* 指示串口0數據幀的第一個同步字節(jié)是否接收完畢,0~未收到,1~收到 */
bit       gbSyncTwoOK0;                          /* 指示串口0數據幀的第二個同步字節(jié)是否接收完畢,0~未收到,1~收到 */
bit       gbSyncOneOK1;                          /* 指示串口1數據幀的第一個同步字節(jié)是否接收完畢,0~未收到,1~收到 */
bit       gbSyncTwoOK1;                          /* 指示串口1數據幀的第二個同步字節(jié)是否接收完畢,0~未收到,1~收到 */
bit       gbStarted;                             /* 指示<啟動鍵>是否按下,0~未按下,1~按下 */
bit       gbFilling;                             /* 指示當前是否工作于充氣狀態(tài),0~否,1~是 */
bit       gbTesting;                             /* 指示當前是否工作于測試狀態(tài),0~否,1~是 */

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

/* 定義字變量 */

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();                             // 初始化片上系統(tǒng)外圍設備   
  EIP2|=0x40;
  SysInit();                                // 初始化系統(tǒng)變量
  DRV_PASS = 0;
  DRV_FAIL = 0;
  DRV_WARN = 0;
  DRV_VALVE= 0;
  //DAC0L = 0xFF;
  //DAC0H = 0x07;

  while (TRUE)                              // 主程序循環(huán)
  {
    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)            // 當壓力超出設定值的時間持續(xù)10秒后,輸出報警指示
	  {
	    gbReadyWarn = FALSE;
        DRV_WARN = OPEN;        
	  }
    }
	else                                    // 壓力在設定值區(qū)間內,不用報警
	{
	  gbReadyWarn = FALSE;
      gnCntWarn = 0;
      DRV_WARN = CLOSE;
    }
    AdjustPress();                          // 進行壓力調節(jié)
    DoneKey();                              // 按鍵檢測處理
    DoneTest();                             // 執(zhí)行流量測試
  }
}

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

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

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区不卡在线观看| 国产成人午夜精品影院观看视频 | 久久国产精品色| 国产精品香蕉一区二区三区| 在线不卡免费av| 中文字幕不卡在线观看| 久久精品国产77777蜜臀| 欧美在线观看视频一区二区三区| 国产日韩欧美精品一区| 久久99在线观看| 欧美精品自拍偷拍动漫精品| 亚洲欧美国产毛片在线| 大桥未久av一区二区三区中文| 777久久久精品| 亚洲电影视频在线| 色婷婷综合久久久中文字幕| 国产精品欧美极品| 丁香啪啪综合成人亚洲小说 | 欧美视频中文一区二区三区在线观看 | 丝袜亚洲另类欧美| 在线观看免费一区| 亚洲综合在线五月| 日本精品一级二级| 一区二区三区日韩精品视频| 色综合久久99| 亚洲黄色小视频| 91视频.com| 伊人色综合久久天天| av亚洲产国偷v产偷v自拍| 亚洲国产精品精华液2区45| 国产精品一线二线三线精华| 久久一日本道色综合| 国产一区二区美女诱惑| 国产日韩欧美麻豆| jlzzjlzz亚洲日本少妇| 中文字幕日韩精品一区| 色偷偷久久一区二区三区| 亚洲综合在线电影| 欧美日韩色一区| 丝袜美腿亚洲色图| 日韩精品一区二区三区在线观看| 久久疯狂做爰流白浆xx| 久久女同性恋中文字幕| 成人美女视频在线观看| 亚洲欧美经典视频| 欧美三级中文字幕在线观看| 日本成人在线一区| 精品美女一区二区三区| 成人激情av网| 亚洲成人资源在线| 精品国内二区三区| 91影视在线播放| 调教+趴+乳夹+国产+精品| 欧美精品1区2区3区| 国产在线不卡一区| 亚洲女人****多毛耸耸8| 在线成人免费视频| 激情综合网av| 亚洲欧美国产毛片在线| 91精品免费观看| 成人国产在线观看| 三级欧美韩日大片在线看| 久久久www成人免费无遮挡大片| 99久久婷婷国产| 秋霞午夜鲁丝一区二区老狼| 欧美高清在线视频| 欧美日本韩国一区| 国产99久久精品| 天天综合天天综合色| 国产午夜精品一区二区| 欧美日韩精品欧美日韩精品一| 99久久精品国产麻豆演员表| 亚洲福利一区二区| 99久久久精品| 亚洲在线免费播放| 久久新电视剧免费观看| 91成人免费电影| 韩国av一区二区三区在线观看| 成人欧美一区二区三区小说| 日韩一区二区不卡| 91网站在线播放| 久久精品国产久精国产| 亚洲男帅同性gay1069| 2014亚洲片线观看视频免费| 欧美唯美清纯偷拍| 成人激情校园春色| 久草这里只有精品视频| 亚洲国产欧美另类丝袜| 国产精品美女久久久久久| 日韩精品一区二区三区在线| 欧美熟乱第一页| 一本色道久久综合亚洲91| 国产成人综合网站| 精品一区二区成人精品| 亚洲成av人片一区二区梦乃| 亚洲色图一区二区| 欧美国产精品专区| 久久精品夜夜夜夜久久| 日韩一区二区精品| 欧美一级生活片| 欧美日韩国产欧美日美国产精品| 91色婷婷久久久久合中文| 成人高清视频免费观看| 懂色av中文一区二区三区| 美女视频网站久久| 男男视频亚洲欧美| 日韩激情视频在线观看| 日本特黄久久久高潮| 日韩中文字幕91| 五月婷婷激情综合| 日韩综合在线视频| 蜜臀国产一区二区三区在线播放| 日韩高清中文字幕一区| 日韩不卡免费视频| 蜜臀久久99精品久久久久久9 | 国产一区欧美一区| 激情图片小说一区| 国产xxx精品视频大全| 国产成人午夜99999| 大陆成人av片| 91视频.com| 欧美日韩视频在线观看一区二区三区| 在线免费av一区| 欧美精品日韩一区| 日韩午夜激情av| 久久亚洲免费视频| 国产精品日韩成人| 一区二区三区四区高清精品免费观看| 亚洲一区二区在线观看视频| 午夜婷婷国产麻豆精品| 另类小说视频一区二区| 国产激情91久久精品导航| av一区二区三区黑人| 欧美中文字幕一区| 日韩一区二区三区av| 欧美经典一区二区三区| 一区二区三区美女视频| 美日韩一区二区三区| 国产乱国产乱300精品| 99国产精品国产精品毛片| 欧美喷潮久久久xxxxx| 2020国产精品久久精品美国| 亚洲人成影院在线观看| 日日摸夜夜添夜夜添国产精品| 国产精品影音先锋| 欧美亚洲日本国产| 久久中文字幕电影| 亚洲五码中文字幕| 国产自产2019最新不卡| 在线视频国内一区二区| 日韩久久久精品| 亚洲精品免费一二三区| 麻豆91在线看| 色综合久久天天综合网| 日韩欧美一区二区免费| 亚洲女性喷水在线观看一区| 久久se这里有精品| 在线看国产日韩| 国产欧美精品国产国产专区| 亚洲va欧美va人人爽| 国产精品香蕉一区二区三区| 欧美日韩国产一区二区三区地区| 国产女同互慰高潮91漫画| 日韩国产精品91| 欧美最新大片在线看| 中文字幕精品一区二区三区精品| 日韩精品免费专区| 欧美亚洲动漫精品| 国产精品久久久久7777按摩 | 日本欧美在线观看| 色综合久久久久久久久久久| 久久精品一区二区| 美女爽到高潮91| 欧美日本韩国一区| 一区二区欧美在线观看| 成人h动漫精品一区二区| 精品久久久久一区二区国产| 婷婷久久综合九色国产成人| 91黄视频在线观看| 亚洲六月丁香色婷婷综合久久| 国产成人精品免费一区二区| 日韩精品中文字幕一区二区三区| 亚洲一区二区三区四区五区中文| 成人免费毛片片v| 久久久久久电影| 久久精品国产精品青草| 3d动漫精品啪啪1区2区免费 | 日韩欧美高清一区| 日韩电影在线观看网站| 欧美日韩免费电影| 亚洲国产精品久久人人爱| 欧美在线高清视频| 一区二区三区四区亚洲| 在线观看三级视频欧美| 亚洲精品福利视频网站| 欧美又粗又大又爽| 偷拍与自拍一区| 欧美一区二区三区影视| 奇米影视在线99精品| 精品久久免费看|