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

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

?? f34x_adc0_externalinput_mux.c

?? C8051F16位單片機程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------
// F34x_ADC0_ExternalInput_Mux.c
//-----------------------------------------------------------------------------
// Copyright 2005 Silicon Laboratories, Inc.
// http://www.silabs.com
//
// This code example illustrates using the internal analog multiplexer to
// measure analog voltages on up to 8 different analog inputs.  Results are
// printed to a PC terminal program via the UART.
//
// The inputs are sequentially scanned, beginning with input 0 (P2.0), up
// to input number <ANALOG_INPUTS>-1 based on the values in <PIN_TABLE>.
//
//
// ADC Settling Time Requirements, Sampling Rate:
// ----------------------------------------------
//
// The total sample time per input is comprised of an input setting time
// (Tsettle), followed by a conversion time (Tconvert):
//
// Tsample  = Tsettle + Tconvert
//
// Settling and conversion times may overlap, as the ADC holds the value once
// conversion begins.  This program takes advantage of this to increase the
// settling time above the minimum required.  In other words, when
// converting the value from analog input Ain(n), the input mux is switched
// over to the next input Ain(n+1) to begin settling.
//
// |---Settling Ain(n)---|=Conversion Ain(n)=|
//                       |---Settling Ain(n+1)---|=Conversion Ain(n+1)=|
//                                               |---Settling Ain(n+2)---|
// ISR:  Timer 2         ^                       ^                       ^
// ISR:  ADC0                                ^                         ^
//
// The ADC input voltage must be allowed adequate time to settle before the
// conversion is made.  This settling depends on the external source
// impedance, internal mux impedance, and internal capacitance.
// Settling time is given by:
//
//                   | 2^n |
//    Tsettle =   ln | --- | * Rtotal * Csample
//                   | SA  |
//
// In this application, assume a 100kohm potentiometer as the voltage divider.
// The expression evaluates to:
//
//                   | 2^12 |
//    Tsettle =   ln | ---- | * 105e3 * 10e-12 = 10.2uS
//                   | 0.25 |
//
// In addition, one must allow at least 1.5 us after changing analog MUX
// inputs or PGA settings.  The settling time in this example, then, is
// dictated by the large external source resistance.
//
// The conversion is 16 periods of the SAR clock.  At 2.5 MHz,
// this time is 16 * 400nS = 6.4 uS.
//
//
// Tsample, minimum  = Tsettle + Tconvert
//                   = 10.2uS + 6.4uS
//                   = 16.6 uS
//
// Timer2 is set to change the MUX input and start a conversion every 20 us.
//
// General:
// --------
//
// The system is clocked using the internal 12MHz oscillator. Results are
// printed to the UART from a loop with the rate set by a delay based on
// Timer0. This loop periodically reads the ADC value from a global array,
// <RESULT>.
//
// The ADC makes repeated measurements at 20 us intervals based on Timer2.
// The end of each ADC conversion initiates an interrupt which calls an
// averaging function. <INT_DEC> samples are averaged, then the Result
// values updated.
//
// For each power of 4 of <INT_DEC>, you gain 1 bit of effective resolution.
// For example, <INT_DEC> = 256 gain you 4 bits of resolution: 4^4 = 256.
//
// The ADC input multiplexer is set for a single-ended input.  The example
// sequentially scans through the inputs, starting at P2.0.  <ANALOG_INPUTS>
// inputs are read.  The amplifier is set for unity gain so a voltage range of
// 0 to Vref (2.43V) may be measured.  Although voltages up to Vdd may be
// applied without damaging the device, only the range 0 to Vref may be
// measured by the ADC.
//
// A 100 kohm potentiometer may be connected as a voltage divider between
// VREF and AGND as shown below:
//
// ---------
//          |
//         o| AGND ----|
//         o| VREF ----|<-|
//         o| P2.x     |  |
//         o|    |        |
//         o|     --------
//         o|
//         o|
//         o|
//          |
// ---------
//
// How To Test:
//
// 1) Download code to a 'F34x device that is connected to a UART transceiver
// 2) Verify the TX and RX jumpers are populated on J3.
// 3) Connect a serial cable from the DB9 connector to a PC
// 4) On the PC, open HyperTerminal (or any other terminal program) and connect
//    to the COM port at <BAUDRATE> and 8-N-1
// 5) Connect a variable voltage source (between 0 and Vref) to the Port2 pins,
//    or a potentiometer voltage divider as shown above.
// 6) HyperTerminal will print the voltages measured by the device if
//    everything is working properly.  Note that some of the analog inputs are
//    floating and will return nonzero values.
//
// FID:            34X000092
// Target:         C8051F34x
// Tool chain:     Keil C51 7.50 / Keil EVAL C51
// Command Line:   None
//
// Release 1.0
//    -Initial Revision (SM / TP)
//    -19 OCT 2006
//


//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------

#include <C8051F340.h>                 // SFR declarations
#include <stdio.h>

//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F34x
//-----------------------------------------------------------------------------

sfr16 TMR2RL = 0xCA;                   // Timer2 reload value
sfr16 TMR2 = 0xCC;                     // Timer2 counter
sfr16 ADC0 = 0xBD;                     // 10-bit ADC0 result

//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------

#define SYSCLK        12000000         // SYSCLK frequency in Hz
#define BAUDRATE      115200           // Baud rate of UART in bps
#define ANALOG_INPUTS 6                // Number of AIN pins to measure,
                                       // skipping the UART0 pins
#define INT_DEC       256              // Integrate and decimate ratio

#define TIMER0_RELOAD_HIGH  0          // Timer0 High register
#define TIMER0_RELOAD_LOW 255          // Timer0 Low register

//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------

void Oscillator_Init (void);
void Port_Init (void);
void Timer2_Init(void);
void ADC0_Init(void);
void UART0_Init (void);

void Timer0_wait(int ms);

//-----------------------------------------------------------------------------
// Global Variables
//-----------------------------------------------------------------------------

long RESULT[ANALOG_INPUTS];            // ADC0 decimated value, one for each
                                       // analog input

// The <PIN_MUX_TABLE> values are the values to be written to the AMX0P
// register to select the P2.<PIN_TABLE> port pins.
// For the 'F340, the AMX0P settings correspond to the following port pins:
//
//    AMX0P      Port Pin
//    0x00         P2.0
//    0x01         P2.1
//    0x02         P2.2
//    0x03         P2.3
//    0x04         P2.5
//    0x05         P2.6
//
unsigned char idata PIN_TABLE[ANALOG_INPUTS] = {0,1,2,3,5,6};
unsigned char idata PIN_MUX_TABLE[ANALOG_INPUTS] = {0,1,2,3,4,5};

unsigned char AMUX_INPUT = 0;          // Index of analog MUX inputs

//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void)
{
   unsigned char i;
   unsigned long measurement;

   PCA0MD &= ~0x40;                    // WDTE = 0 (clear watchdog timer
                                       // enable)

   Oscillator_Init ();                 // Initialize system clock to
                                       // 12MHz
   Port_Init ();                       // Initialize crossbar and GPIO
   Timer2_Init();                      // Init Timer2 to generate
                                       // overflows to trigger ADC
   UART0_Init();                       // Initialize UART0 for printf's
   ADC0_Init();                        // Initialize ADC0

   EA = 1;                             // Enable global interrupts
   while (1)
   {
      EA = 0;                          // Disable interrupts
      printf("\f");
      for(i = 0; i < ANALOG_INPUTS; i++)
      {
         // The 10-bit ADC value is averaged across INT_DEC measurements.
         // The result is then stored in RESULT, and is right-justified
         // The measured voltage applied to the port pins is then:
         //
         //                           Vref (mV)
         //   measurement (mV) =   --------------- * Result (bits)
         //                        (2^10)-1 (bits)

         measurement =  RESULT[i] * 2430 / 1023;
         printf("P2.%bu voltage: %4ld mV\n",PIN_TABLE[i],measurement);
      }
      EA = 1;                          // Re-enable interrupts

      Timer0_wait(25);                  // Wait before displaying new values
   }
}

//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// This routine initializes the system clock to use the internal 12MHz
// oscillator as its clock source.  Also enables missing clock detector reset.
//
void Oscillator_Init (void)
{
   OSCICN = 0x83;                      // Configure internal oscillator for
                                       // its highest frequency
   RSTSRC = 0x04;                      // Enable missing clock detector
}

//-----------------------------------------------------------------------------
// Port_Init
//-----------------------------------------------------------------------------
//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美久久一二区| 成人av电影观看| 夜夜嗨av一区二区三区四季av | 成人一区二区在线观看| 久久成人精品无人区| 免费观看在线色综合| 日韩av电影天堂| 人人精品人人爱| 经典三级一区二区| 国产精品综合二区| 成人a免费在线看| 93久久精品日日躁夜夜躁欧美| 97se狠狠狠综合亚洲狠狠| 99精品欧美一区| 欧美三级欧美一级| 欧美一级欧美三级在线观看| 久久久亚洲精华液精华液精华液| 国产亚洲精品精华液| 亚洲va韩国va欧美va精品| 亚洲综合免费观看高清在线观看| 亚洲国产欧美另类丝袜| 日本欧美一区二区| 国产不卡高清在线观看视频| 成人99免费视频| 欧美日韩激情在线| 欧美精品一区二区三| 国产精品人成在线观看免费| 一区二区在线观看av| 看电影不卡的网站| 9久草视频在线视频精品| 欧美亚洲国产怡红院影院| 日韩一卡二卡三卡国产欧美| 欧美国产日韩在线观看| 洋洋成人永久网站入口| 久久 天天综合| 在线观看av一区| 久久久亚洲精品一区二区三区| 亚洲人成网站精品片在线观看| 日本视频免费一区| 成人美女在线视频| 日韩女优电影在线观看| 亚洲精品视频自拍| 国产精品1024久久| 7777精品久久久大香线蕉| 国产精品嫩草影院av蜜臀| 免费精品视频最新在线| 91女厕偷拍女厕偷拍高清| 欧美精品一区二区三区蜜桃视频| 亚洲免费电影在线| 成人免费看视频| 精品福利在线导航| 亚洲h在线观看| 色综合久久中文字幕综合网| 精品国产露脸精彩对白| 天天综合日日夜夜精品| 91色.com| 自拍av一区二区三区| 国产精品一区2区| 日韩精品一区二区三区在线| 亚洲午夜久久久久久久久久久| gogogo免费视频观看亚洲一| 26uuu精品一区二区三区四区在线| 亚洲电影一级片| 欧美在线视频不卡| 亚洲人成精品久久久久| 成人app下载| 亚洲欧美中日韩| 91亚洲精品乱码久久久久久蜜桃| 国产欧美一区二区精品性色| 久久99久久久久久久久久久| 欧美精品乱人伦久久久久久| 亚洲一区二区三区四区不卡| 在线免费观看一区| 亚洲一区二区三区爽爽爽爽爽| 91网上在线视频| 亚洲狼人国产精品| 91久久精品一区二区| 中文字幕在线一区二区三区| 成人精品鲁一区一区二区| 久久久精品国产免大香伊| 国产电影精品久久禁18| 亚洲成a人片在线不卡一二三区| 91免费看`日韩一区二区| 国产精品不卡一区二区三区| 99久久99久久精品免费看蜜桃 | 欧美日韩三级在线| 亚洲高清免费在线| 欧美一区二区三区视频在线| 日韩激情视频在线观看| 日韩欧美国产综合在线一区二区三区| 日本中文字幕一区二区有限公司| 欧美一区二区视频免费观看| 美女性感视频久久| 久久精品免费在线观看| 99久久精品免费精品国产| 亚洲国产精品影院| 精品卡一卡二卡三卡四在线| 国产精品一品二品| 亚洲摸摸操操av| 欧美精品久久天天躁| 精品亚洲国内自在自线福利| 欧美激情一区三区| 欧美日韩国产中文| 国产精品一区专区| 亚洲欧美一区二区三区孕妇| 91精品国模一区二区三区| 精品一区二区三区在线观看 | 欧美做爰猛烈大尺度电影无法无天| 亚洲一区二区三区在线看| 日韩三级高清在线| 91在线播放网址| 免费黄网站欧美| 亚洲色图丝袜美腿| 日韩欧美高清在线| 色域天天综合网| 蜜桃视频在线观看一区| 亚洲色图欧美激情| 欧美大片日本大片免费观看| 91麻豆福利精品推荐| 精品在线播放午夜| 亚洲综合成人网| 国产欧美一区二区精品仙草咪| 欧美亚州韩日在线看免费版国语版| 韩国精品主播一区二区在线观看| 亚洲综合色丁香婷婷六月图片| 国产日产欧美一区| 欧美另类高清zo欧美| 99久久99久久精品免费观看| 经典三级视频一区| 日韩av二区在线播放| 亚洲一卡二卡三卡四卡无卡久久| 久久久久久久免费视频了| 欧美精品日韩精品| 欧美三级电影网| 色综合天天视频在线观看| 国产成人h网站| 麻豆精品视频在线观看| 亚洲福利视频三区| 一区二区在线观看免费| 国产精品免费视频一区| 国产亚洲婷婷免费| 日韩欧美在线影院| 69久久99精品久久久久婷婷| 在线观看亚洲精品视频| 9i在线看片成人免费| 成人av免费在线| 成人午夜私人影院| k8久久久一区二区三区| 成人中文字幕电影| 成人av在线资源网站| 国产成人精品免费网站| 国产一区二区女| 国产成人精品一区二区三区网站观看| 久久99精品久久久| 久久精品国产亚洲高清剧情介绍| 日韩av中文字幕一区二区三区| 亚洲成人av免费| 天堂一区二区在线| 日本不卡视频在线| 久久精品久久综合| 国产一区二三区好的| 韩日精品视频一区| 国产高清精品在线| 国产精品白丝jk黑袜喷水| 国产91富婆露脸刺激对白| 国产成人夜色高潮福利影视| 国产白丝网站精品污在线入口| 成人午夜伦理影院| 91小宝寻花一区二区三区| 欧美亚洲自拍偷拍| 在线不卡中文字幕| 日韩色视频在线观看| 国产亚洲欧洲997久久综合| 中文字幕av一区二区三区免费看| 18成人在线观看| 亚洲一区二区高清| 黄色小说综合网站| 不卡欧美aaaaa| 欧美日韩中文国产| 欧美变态凌虐bdsm| 中文字幕五月欧美| 亚洲一二三级电影| 国产在线看一区| 91在线一区二区三区| 91精品国产麻豆国产自产在线| 精品国产污污免费网站入口| 日韩美女视频一区二区| 五月婷婷另类国产| 国产乱对白刺激视频不卡| 97aⅴ精品视频一二三区| 91精品国产综合久久小美女| 久久免费国产精品| 亚洲激情欧美激情| 国产精品69久久久久水密桃| 欧美熟乱第一页| 国产欧美一二三区| 蜜臀久久99精品久久久画质超高清 | 99re66热这里只有精品3直播 | 久久精品亚洲国产奇米99| 亚洲一区在线观看视频|