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

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

?? f34x_adc0_externalinput_mux.c

?? C8051F16位單片機程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
// Return Value : None
// Parameters   : None
//
// Configure the Crossbar and GPIO ports.
//
// P0.4 - UART TX (push-pull)
// P0.5 - UART RX
//
// P1.5 - analog (VREF)
//
// P2.0 - analog input (ADC0)
// P2.1 - analog input (ADC0)
// P2.2 - analog input (ADC0)
// P2.3 - analog input (ADC0)
// P2.5 - analog input (ADC0)
// P2.6 - analog input (ADC0)
//
//-----------------------------------------------------------------------------
void Port_Init (void)
{
   P2SKIP = 0x3F;                      // Skip all analog pins

   XBR0 = 0x01;                        // UART0 TX and RX pins enabled
   XBR1 = 0x40;                        // Enable crossbar and weak pull-ups

   P0MDOUT |= 0x10;                    // Enable TX0 as a push-pull output

   P1MDIN &= ~0x20;                    // P1.5 in analog mode

   P2MDIN &= ~0x3F;                    // Set desired pins as analog inputs
}

//-----------------------------------------------------------------------------
// Timer2_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// Configure Timer2 to 16-bit auto-reload and generate an interrupt at 10 us
// intervals.  Timer2 overflows automatically triggers ADC0 conversion.
//
//-----------------------------------------------------------------------------
void Timer2_Init (void)
{
   TMR2CN = 0x00;                      // Stop Timer2; Clear TF2;
                                       // use SYSCLK as timebase, 16-bit
                                       // auto-reload
   CKCON |= 0x10;                      // Select SYSCLK for timer 2 source
   TMR2RL = 65535 - (SYSCLK / 10000);  // Init reload value for 10 us
   TMR2 = 0xffff;                      // Set to reload immediately
   ET2 = 1;                            // Enable Timer2 interrupts
   TR2 = 1;                            // Start Timer2
}

//-----------------------------------------------------------------------------
// ADC0_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// Configures ADC0 to make single-ended analog measurements on Port 2 according
// to the values of <ANALOG_INPUTS> and <PIN_TABLE>.
//
//-----------------------------------------------------------------------------
void ADC0_Init (void)
{
   ADC0CN = 0x02;                      // ADC0 disabled, normal tracking,
                                       // conversion triggered on TMR2 overflow

   REF0CN = 0x03;                      // Enable internal VREF

   AMX0P = PIN_MUX_TABLE[0];           // ADC0 initial positive input = P2.0
   AMX0N = 0x1F;                       // ADC0 negative input = GND
                                       // i.e., single ended mode

   ADC0CF = ((SYSCLK/3000000)-1)<<3;   // Set SAR clock to 3MHz

   ADC0CF |= 0x00;                     // Right-justify results

   EIE1 |= 0x08;                       // Enable ADC0 EOC interrupt

   AD0EN = 1;                          // Enable ADC0
}

//-----------------------------------------------------------------------------
// UART0_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// Configure the UART0 using Timer1, for <BAUDRATE> and 8-N-1.
//
//-----------------------------------------------------------------------------
void UART0_Init (void)
{
   SCON0 = 0x10;                       // SCON0: 8-bit variable bit rate
                                       //        level of STOP bit is ignored
                                       //        RX enabled
                                       //        ninth bits are zeros
                                       //        clear RI0 and TI0 bits
   if (SYSCLK/BAUDRATE/2/256 < 1) {
      TH1 = -(SYSCLK/BAUDRATE/2);
      CKCON |=  0x08;                  // T1M = 1; SCA1:0 = xx
   } else if (SYSCLK/BAUDRATE/2/256 < 4) {
      TH1 = -(SYSCLK/BAUDRATE/2/4);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 01
      CKCON |=  0x01;
   } else if (SYSCLK/BAUDRATE/2/256 < 12) {
      TH1 = -(SYSCLK/BAUDRATE/2/12);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 00
   } else if (SYSCLK/BAUDRATE/2/256 < 48) {
      TH1 = -(SYSCLK/BAUDRATE/2/48);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 10
      CKCON |=  0x02;
   } else {
      while (1);                       // Error.  Unsupported baud rate
   }

   TL1 = TH1;                          // Init Timer1
   TMOD &= ~0xF0;                      // TMOD: timer 1 in 8-bit autoreload
   TMOD |=  0x20;
   TR1 = 1;                            // START Timer1
   TI0 = 1;                            // Indicate TX0 ready
}

//-----------------------------------------------------------------------------
// Interrupt Service Routines
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Timer2_ISR
//-----------------------------------------------------------------------------
//
// This routine changes to the next Analog MUX input whenever Timer2 overflows
// for the next ADC sample.  This allows the ADC to begin setting on the new
// input while converting the old input.
//
void Timer2_ISR (void) interrupt 5
{
   TF2H = 0;                           // Clear Timer2 interrupt flag

   // Set up the AMUX for the next ADC input
   // ADC0 positive input = P2.<PIN_TABLE[AMUX_INPUT+1]>
   // ADC0 negative input = GND
   // i.e., single ended mode
   if (AMUX_INPUT == (ANALOG_INPUTS - 1))
   {
      AMX0P = PIN_MUX_TABLE[0];
   }
   else
   {
      AMX0P = PIN_MUX_TABLE[AMUX_INPUT+1];
   }
}

//-----------------------------------------------------------------------------
// ADC0_ISR
//-----------------------------------------------------------------------------
//
// This ISR averages <INT_DEC> samples for each analog MUX input then prints
// the results to the terminal.  The ISR is called after each ADC conversion,
// which is triggered by Timer2.
//
//-----------------------------------------------------------------------------
void ADC0_ISR (void) interrupt 10
{
   static unsigned int_dec = INT_DEC;  // Integrate/decimate counter
                                       // A new result is posted when
                                       // int_dec is 0

   // Integrate accumulator for the ADC samples from input pins
   static long accumulator[ANALOG_INPUTS] = 0x00000000;

   unsigned char i;                    // Loop counter


   AD0INT = 0;                         // Clear ADC conversion complete
                                       // overflow


   accumulator[AMUX_INPUT] += ADC0;    // Read the ADC value and add it to the
                                       // running total

   // Reset sample counter <int_dec> and <AMUX_INPUT> if the final input was
   // just read
   if(AMUX_INPUT == (ANALOG_INPUTS - 1))
   {
      int_dec--;                       // Update decimation counter
                                       // when the last of the analog inputs
                                       // is sampled

      if (int_dec == 0)                // If zero, then post the averaged
      {                                // results
         int_dec = INT_DEC;            // Reset counter

         // Copy each averaged ADC0 value into the RESULT array
         for(i = 0; i < ANALOG_INPUTS; i++)
         {
            // Copy averaged values into RESULT
            RESULT[i] = accumulator[i] / int_dec;

            // Reset accumulators
            accumulator[i] = 0x00000000;
         }
      }

      AMUX_INPUT = 0;                  // Reset input index back to P2.0
   }
   // Otherwise, increment the AMUX channel counter
   else
   {
      AMUX_INPUT++;                    // Step to the next analog mux input
   }
}

//-----------------------------------------------------------------------------
// Support Subroutines
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Timer0_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   :
//   1) int ms - number of milliseconds to wait
//                        range is positive range of an int: 0 to 32767
//
// This function configures the Timer0 as a 16-bit timer, interrupt enabled.
// Using the internal osc. at 12MHz with a prescaler of 1:8 and reloading the
// T0 registers with TIMER0_RELOAD_HIGH/LOW, it will wait for <ms>
// milliseconds.
// Note: The Timer0 uses a 1:12 prescaler
//-----------------------------------------------------------------------------
void Timer0_wait(int ms)
{
   TH0 = TIMER0_RELOAD_HIGH;           // Init Timer0 High register
   TL0 = TIMER0_RELOAD_LOW ;           // Init Timer0 Low register
   TMOD |= 0x01;                       // Timer0 in 16-bit mode
   CKCON &= 0xFC;                      // Timer0 uses a 1:12 prescaler
   TR0  = 1;                           // Timer0 ON

   while(ms)
   {
      TF0 = 0;                         // Clear flag to initialize
      while(!TF0);                     // Wait until timer overflows
      ms--;                            // Decrement ms
   }

   TR0 = 0;                            // Timer0 OFF
}

//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清无吗v一区| 亚洲蜜臀av乱码久久精品蜜桃| 日韩精品电影一区亚洲| 欧美一级免费观看| 国产美女一区二区三区| 国产精品传媒入口麻豆| 91精品国产综合久久婷婷香蕉 | 国产a精品视频| 日精品一区二区| 国产精品网曝门| 51精品秘密在线观看| 91丨porny丨中文| 国产乱码精品1区2区3区| 婷婷久久综合九色综合伊人色| 国产午夜亚洲精品不卡| 日韩欧美一区二区视频| 欧美色区777第一页| 91麻豆视频网站| 波多野结衣中文字幕一区| 狠狠色丁香九九婷婷综合五月| 亚洲网友自拍偷拍| 国产欧美日韩在线看| 国产日韩欧美高清在线| 精品久久久久一区二区国产| 欧美日韩日日夜夜| 4438x成人网最大色成网站| 欧美在线免费播放| 色偷偷成人一区二区三区91 | 亚洲福利电影网| 一区二区视频免费在线观看| 午夜精品一区在线观看| 亚洲精品日韩一| 香蕉久久一区二区不卡无毒影院 | 日韩成人午夜电影| 韩国v欧美v亚洲v日本v| 国产乱码精品一区二区三区五月婷| 麻豆传媒一区二区三区| 高清日韩电视剧大全免费| 成人激情免费视频| 欧美视频日韩视频在线观看| 日韩免费高清av| 综合激情网...| 三级欧美在线一区| 成人免费高清视频在线观看| 欧洲日韩一区二区三区| 久久综合九色欧美综合狠狠| 亚洲日本成人在线观看| 日韩影院精彩在线| 色综合天天综合网天天看片| 日韩丝袜美女视频| 亚洲一区在线观看网站| 国产成人免费在线视频| 在线观看av一区二区| 国产蜜臀97一区二区三区| 日韩精品一二三四| 在线免费亚洲电影| 国产日韩精品视频一区| 国产综合久久久久影院| 精品少妇一区二区三区免费观看 | 欧美一区二区视频在线观看2020 | 国产精品资源网站| 88在线观看91蜜桃国自产| 亚洲一区二区三区美女| 欧美日韩你懂得| 亚洲欧美另类小说视频| 成人毛片在线观看| 久久蜜桃av一区二区天堂 | 亚洲精品va在线观看| 成人激情综合网站| 欧美变态tickling挠脚心| 亚洲人成影院在线观看| 91黄视频在线| 久久综合九色综合欧美就去吻| 亚洲国产一区二区三区青草影视 | 亚洲另类一区二区| 99久久精品国产一区二区三区| 久久久久久久久一| 成年人网站91| 亚洲第一成年网| 91 com成人网| 国产最新精品精品你懂的| 日韩女优av电影在线观看| 日韩国产高清在线| 精品国产乱码久久久久久久| 国产精品18久久久久久久久| 久久婷婷综合激情| 国产福利一区在线| 亚洲免费观看高清完整版在线| 在线观看日韩精品| 国产成人99久久亚洲综合精品| 日本一区二区三区免费乱视频| 国产精品久久国产精麻豆99网站| 婷婷久久综合九色综合绿巨人| 久久久久国产精品麻豆| 在线观看日韩精品| 成人理论电影网| 在线看日韩精品电影| 亚洲国产精品嫩草影院| 国产精品美女久久福利网站| 日韩午夜在线播放| 91成人在线免费观看| 成人av在线资源网| 国产精品一区二区在线播放| 亚洲香肠在线观看| 亚洲狠狠丁香婷婷综合久久久| 国产农村妇女精品| 欧美tickling网站挠脚心| 欧美欧美午夜aⅴ在线观看| 一本久久a久久免费精品不卡| 福利电影一区二区| 国产99精品国产| 久久众筹精品私拍模特| 色诱视频网站一区| 成人综合婷婷国产精品久久免费| 国内精品在线播放| 国产电影一区二区三区| 奇米精品一区二区三区四区| 热久久一区二区| 高清beeg欧美| 91国产免费看| 91精品在线免费| 国产精品乱码人人做人人爱| 亚洲日本在线看| 一区二区三区四区国产精品| 亚洲综合男人的天堂| 午夜精品久久久久久久久久久| 轻轻草成人在线| 福利电影一区二区三区| 在线亚洲人成电影网站色www| 欧美精品 日韩| 久久人人爽爽爽人久久久| 中文字幕一区二区三区不卡| 亚洲国产成人tv| 99久久精品国产一区| 精品剧情在线观看| 亚洲二区视频在线| 一本一本久久a久久精品综合麻豆| 日韩欧美中文一区| 亚洲高清视频中文字幕| 99re热视频精品| 久久久www成人免费毛片麻豆| 亚洲3atv精品一区二区三区| 高清不卡在线观看| 久久久久久日产精品| 欧美96一区二区免费视频| 色香蕉久久蜜桃| 国产欧美日韩在线观看| 国内精品免费**视频| 欧美日本视频在线| 亚洲人吸女人奶水| 99久久婷婷国产综合精品| 一区二区三区精品久久久| 麻豆精品久久久| 欧美妇女性影城| 亚洲国产精品尤物yw在线观看| 91一区二区三区在线观看| 中文字幕av不卡| 国产suv精品一区二区6| 国产精品无遮挡| 欧美亚洲国产一卡| 天天av天天翘天天综合网色鬼国产| 欧美日韩综合不卡| 免费一级片91| 国产精品毛片久久久久久久| 99久久精品免费看国产| 午夜成人免费电影| 久久久五月婷婷| 欧美自拍偷拍一区| 精品一区二区三区日韩| 亚洲你懂的在线视频| 欧美一区二区在线免费观看| 激情深爱一区二区| 一区二区三区免费| 国产调教视频一区| 7878成人国产在线观看| 99免费精品在线观看| 卡一卡二国产精品| 亚洲第一激情av| 专区另类欧美日韩| 久久一日本道色综合| 欧美日韩另类一区| 成人的网站免费观看| 国内久久精品视频| 日韩av一区二区在线影视| 亚洲女性喷水在线观看一区| 久久综合久久鬼色中文字| 欧美日本一道本在线视频| 欧美性大战xxxxx久久久| 91视频在线看| 在线亚洲高清视频| 在线视频国产一区| 91在线免费视频观看| 91丨porny丨国产入口| 成人av在线影院| 91亚洲精品乱码久久久久久蜜桃 | 亚洲国产va精品久久久不卡综合| 国产日韩成人精品| 国产精品丝袜一区| 国产精品久久国产精麻豆99网站| 国产欧美精品区一区二区三区 |