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

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

?? f500_uart0_interrupt.c

?? C8051F500開發編程:MCU全部資源應用實例
?? C
字號:
//-----------------------------------------------------------------------------
// F500_UART0_Interrupt.c
//-----------------------------------------------------------------------------
// Copyright 2008 Silicon Laboratories, Inc.
// http://www.silabs.com
//
// Program Description:
//
// This program demonstrates how to configure the C8051F500 to write to and 
// read from the UART interface. The program reads a word using the UART 
// interrupts and outputs that word to the screen, with all characters in 
// uppercase.
//
// How To Test:
//
// 1) Ensure that jumpers are placed on J17 of the C8051F500 target board
//    that connect the P0.4 pin to the TX signal, and P0.5 to the RX signal
// 2) Connect USB cable from the development board to a PC
// 3) Specify the target baudrate in the constant <BAUDRATE>
// 4) On the PC, open HyperTerminal (or any other terminal program) and connect
//    to the USB port (virtual com port) at <BAUDRATE>, 8 data bits, no parity,
//    1 stop bit and no flow control
// 5) Download and execute code on an 'F500 target board
// 6) Type up to 64 characters into the Terminal and press Enter. The MCU
//    will then print back the characters that were typed
//
// Target:         C8051F500 (Side A of a C8051F500-TB)
// Tool chain:     Keil C51 8.0 / Keil EVAL C51
// Command Line:   None
//
// Release 1.0 / 10 MAR 2008 (GP)
//    -Initial Revision
//

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

#include <compiler_defs.h>
#include <C8051F500_defs.h>            // SFR declarations
#include <stdio.h>

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

#define SYSCLK           24000000      // SYSCLK frequency in Hz
#define BAUDRATE           115200      // Baud rate of UART in bps

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

void SYSCLK_Init (void);
void UART0_Init (void);
void PORT_Init (void);

INTERRUPT_PROTO (UART0_ISR, INTERRUPT_UART0);

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

#define UART_BUFFERSIZE 64
U8 UART_Buffer[UART_BUFFERSIZE];
U8 UART_Buffer_Size = 0;
U8 UART_Input_First = 0;
U8 UART_Output_First = 0;
U8 TX_Ready = 1;
static U8 Byte;

//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------

void main (void)
{
   SFRPAGE = ACTIVE_PAGE;              // Change for PCA0MD

   PCA0MD &= ~0x40;                    // Disable watchdog timer

   PORT_Init ();                       // Initialize Port I/O
   SYSCLK_Init ();                     // Initialize Oscillator
   UART0_Init ();                      // Initialize UART

   EA = 1;                             // Enable global interrutpts

   while (1)
   {
      // If the complete word has been entered via the terminal followed by
      // carriage return

      if((TX_Ready == 1) && (UART_Buffer_Size != 0) && (Byte == 13))
      {
         TX_Ready = 0;                 // Set the flag to zero
         TI0 = 1;                      // Set transmit flag to 1
      }
   }
}

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

//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// Configure the Crossbar and GPIO ports.
//
// P0.4   digital   push-pull    UART TX
// P0.5   digital   open-drain   UART RX
//
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
   U8 SFRPAGE_save = SFRPAGE;
   SFRPAGE = CONFIG_PAGE; 

   P0MDOUT |= 0x10;                    // Enable UTX as push-pull output
   XBR0    = 0x01;                     // Enable UART on P0.4(TX) and P0.5(RX)
   XBR2    = 0x40;                     // Enable crossbar and weak pull-ups

   SFRPAGE = SFRPAGE_save;
}

//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// This routine initializes the system clock to use the internal oscillator
// at its maximum frequency.
// Also enables the Missing Clock Detector.
//-----------------------------------------------------------------------------

void SYSCLK_Init (void)
{
   U8 SFRPAGE_save = SFRPAGE;
   SFRPAGE = CONFIG_PAGE; 

   OSCICN |= 0x87;                     // Configure internal oscillator for
                                       // its maximum frequency
   RSTSRC  = 0x04;                     // Enable missing clock detector

   SFRPAGE = SFRPAGE_save;
}

//-----------------------------------------------------------------------------
// UART0_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// Configure the UART0 using Timer1, for <BAUDRATE> and 8-N-1.
//-----------------------------------------------------------------------------
void UART0_Init (void)
{
   U8 SFRPAGE_save = SFRPAGE;
   SFRPAGE = CONFIG_PAGE; 

   SCON0 = 0x10;                       // SCON0: 8-bit variable bit rate
                                       // clear RI0 and TI0 bits

 // Baud Rate = [BRG Clock / (65536 - (SBRLH0:SBRLL0))] x 1/2 x 1/Prescaler

#if   ((SYSCLK / BAUDRATE / 2 / 0xFFFF) < 1)
      SBRL0 = -(SYSCLK / BAUDRATE / 2);
      SBCON0 |= 0x03;                  // Set prescaler to 1
#elif ((SYSCLK / BAUDRATE / 2 / 0xFFFF) < 4)
      SBRL0 = -(SYSCLK / BAUDRATE / 2/ 4);
      SBCON0 &= ~0x03;
      SBCON0 |= 0x01;                  // Set prescaler to 4
#elif ((SYSCLK / BAUDRATE / 2 / 0xFFFF) < 12)
      SBRL0 = -(SYSCLK / BAUDRATE / 2 / 12);
      SBCON0 &= ~0x03;                 // Set prescaler to 12
#else
      SBRL0 = -(SYSCLK / BAUDRATE / 2 / 48);
      SBCON0 &= ~0x03;
      SBCON0 |= 0x02;                  // Set prescaler to 48
#endif

   SBCON0 |= 0x40;                     // Enable baud rate generator
   ES0 = 1;                            // Enable UART0 interrupts

   TX_Ready = 1;                       // Flag showing that UART can transmit

   SFRPAGE = SFRPAGE_save;
}

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

//-----------------------------------------------------------------------------
// UART0_Interrupt
//-----------------------------------------------------------------------------
//
// This routine is invoked whenever a character is entered or displayed on the
// Hyperterminal.
//
//-----------------------------------------------------------------------------

INTERRUPT(UART0_ISR, INTERRUPT_UART0)
{
   if (RI0 == 1)
   {
      if( UART_Buffer_Size == 0)       // If new word is entered
      {
         UART_Input_First = 0;    
      }

      RI0 = 0;                         // Clear interrupt flag

      Byte = SBUF0;                    // Read a character from UART

      if (UART_Buffer_Size < UART_BUFFERSIZE)
      {
         UART_Buffer[UART_Input_First] = Byte; // Store in array

         UART_Buffer_Size++;           // Update array's size

         UART_Input_First++;           // Update counter
      }
   }

   if (TI0 == 1)                       // Check if transmit flag is set
   {
      TI0 = 0;                         // Clear interrupt flag

      if (UART_Buffer_Size != 1)       // If buffer not empty
      {
         // If a new word is being output
         if (UART_Buffer_Size == UART_Input_First) 
         {
              UART_Output_First = 0;  
         }

         // Store a character in the variable byte
         Byte = UART_Buffer[UART_Output_First];

         if ((Byte >= 0x61) && (Byte <= 0x7A))  // If upper case letter
         { 
            Byte -= 32; 
         }

         SBUF0 = Byte;                 // Transmit to Hyperterminal

         UART_Output_First++;          // Update counter

         UART_Buffer_Size--;           // Decrease array size

      }
      else
      {
         UART_Buffer_Size = 0;         // Set the array size to 0
         TX_Ready = 1;                 // Indicate transmission complete
      }
   }
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成网站色在线观看| 日韩免费性生活视频播放| 日本一区二区三区在线观看| 国产一区二区三区视频在线播放| 欧美精品一区二区三区蜜桃| 国产大陆a不卡| 国产精品国产三级国产aⅴ原创 | 99精品欧美一区二区三区小说| 中文字幕 久热精品 视频在线| 99久久夜色精品国产网站| 亚洲精品乱码久久久久久久久| 欧美性猛交xxxxxx富婆| 青青青伊人色综合久久| 午夜伦欧美伦电影理论片| 欧美日韩精品欧美日韩精品| 精品一区中文字幕| 国产精品无遮挡| 欧洲精品中文字幕| 捆绑变态av一区二区三区| 日本一区二区动态图| 色偷偷成人一区二区三区91| 日韩av午夜在线观看| 国产午夜亚洲精品理论片色戒| 成人免费视频视频在线观看免费| 一区二区在线观看av| 精品日韩一区二区三区| 99精品欧美一区| 免费观看成人av| 国产精品乱码妇女bbbb| 欧美久久久一区| 成人一区二区三区在线观看| 亚洲国产一二三| 久久精品视频在线看| 色狠狠色噜噜噜综合网| 黑人巨大精品欧美一区| 亚洲黄色免费电影| 久久久久国产精品麻豆ai换脸| 在线免费观看日本一区| 国产乱码精品一品二品| 午夜精品一区二区三区三上悠亚| 国产日韩欧美综合在线| 69堂精品视频| 91网站在线播放| 韩国三级电影一区二区| 亚洲国产精品久久人人爱| 国产欧美日韩在线视频| 欧美一级黄色大片| 一本一道久久a久久精品综合蜜臀| 精品在线观看免费| 亚洲风情在线资源站| 国产精品第一页第二页第三页| 日韩视频永久免费| 欧美日韩一区 二区 三区 久久精品| 日韩欧美国产wwwww| 日本高清无吗v一区| 国产不卡视频一区| 精品一区精品二区高清| 亚洲成人久久影院| 一区二区三区日韩精品视频| 国产精品乱码一区二区三区软件 | 99久久久久久| 成人在线视频首页| 国产精品夜夜嗨| 久久精品国产亚洲5555| 日韩精品电影一区亚洲| 亚洲综合男人的天堂| 亚洲色图欧洲色图婷婷| 国产精品美女久久久久久| 国产色爱av资源综合区| 精品国产伦理网| 精品国产91亚洲一区二区三区婷婷| 欧美调教femdomvk| 欧美日韩一区久久| 91国产丝袜在线播放| 色综合久久久久综合| 97精品久久久久中文字幕 | 99国产精品久久| 成人精品免费网站| 成人手机在线视频| 不卡一区二区三区四区| 波多野结衣精品在线| 不卡的av在线| 91小视频在线免费看| 色哟哟在线观看一区二区三区| av影院午夜一区| 亚洲国产精品t66y| 国产精品毛片久久久久久| 中文字幕在线不卡视频| 中文字幕在线观看不卡| 一区二区三区在线免费视频| 一区二区三区成人| 五月婷婷久久综合| 美女国产一区二区| 国产精品一区免费在线观看| 成人午夜大片免费观看| 色综合网色综合| 欧美日韩在线观看一区二区| 这里只有精品99re| 久久影院电视剧免费观看| 国产亚洲制服色| 亚洲人精品一区| 亚洲一二三区视频在线观看| 首页国产欧美久久| 国模一区二区三区白浆| 不卡一区二区中文字幕| 欧美色图一区二区三区| 欧美电影免费观看高清完整版在线观看 | 乱中年女人伦av一区二区| 国产综合成人久久大片91| 成人黄色大片在线观看| 欧美日韩一区二区三区在线看| 日韩精品中文字幕在线一区| 国产欧美综合在线| 亚洲网友自拍偷拍| 国产综合成人久久大片91| 色悠悠亚洲一区二区| 日韩精品一区二区三区四区视频| 国产精品嫩草影院com| 亚洲成人动漫一区| 国产成人在线网站| 欧美日韩在线亚洲一区蜜芽| 国产日韩精品一区| 午夜精品成人在线视频| 成人免费观看av| 91精品国产综合久久久蜜臀图片| 日本一区二区三区国色天香| 五月综合激情日本mⅴ| 成人h动漫精品一区二区| 欧美一区二区视频在线观看2020| 国产视频911| 青娱乐精品在线视频| 色域天天综合网| 久久久久久久久久看片| 视频一区在线播放| 99久久免费精品| 久久久久久久久久久久久久久99 | 亚洲一区免费在线观看| 国产成人精品一区二区三区四区| 欧美高清视频www夜色资源网| 中文字幕中文字幕一区二区| 欧美久久久久久久久中文字幕| 国产色爱av资源综合区| 免费成人在线播放| 欧美三级电影精品| 亚洲女女做受ⅹxx高潮| 国产福利91精品| 精品欧美一区二区在线观看| 亚洲国产精品一区二区久久恐怖片| 高清不卡一区二区在线| 精品国产一区二区国模嫣然| 婷婷中文字幕综合| 欧美无人高清视频在线观看| 最新热久久免费视频| 岛国精品在线观看| 久久精品夜夜夜夜久久| 韩国精品久久久| 日韩一区二区视频在线观看| 亚洲高清免费在线| 色婷婷香蕉在线一区二区| 中文字幕在线一区| 成人午夜看片网址| 国产精品欧美经典| voyeur盗摄精品| 国产精品不卡一区二区三区| 国产成人av电影在线| 国产欧美日韩麻豆91| 国产成人精品在线看| 国产精品沙发午睡系列990531| 国产一区视频网站| 国产日韩精品一区二区三区在线| 国产综合成人久久大片91| 久久久国产午夜精品| 国产成人午夜片在线观看高清观看| 久久久久久久久久看片| 国产精品99久久久久久久vr | 欧美国产精品中文字幕| 国产精品一品视频| 中日韩免费视频中文字幕| 不卡视频一二三| 亚洲欧美日韩一区二区| 日本韩国精品在线| 日韩国产一二三区| 精品成人免费观看| 成人深夜福利app| 亚洲色大成网站www久久九九| 在线精品视频免费播放| 三级欧美在线一区| 亚洲精品在线电影| 99精品视频在线观看| 一级精品视频在线观看宜春院| 欧美高清视频不卡网| 国产美女一区二区| 亚洲视频一区二区在线观看| 欧美日韩在线综合| 国产中文字幕精品| 亚洲色欲色欲www在线观看| 欧美亚洲一区三区| 精品夜夜嗨av一区二区三区| 国产精品第13页| 7777女厕盗摄久久久|