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

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

?? f53xa_uart0_interrupt.c

?? C8051F52xA_53xA型單片機的串口驅動源碼
?? C
字號:
//-----------------------------------------------------------------------------
// F52xA_UART0_Interrupts.c
//-----------------------------------------------------------------------------
// Copyright 2007 Silicon Laboratories, Inc.
// http://www.silabs.com
//
// Program Description:
//
// This program demonstrates how to configure the C8051F530A 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 the UART TX/RX jumpers are placed on HDR3 of the
//    F530A target board to connect the P0.4 pin to the TX signal, and P0.5 to
//    the RX signal.
// 2) Connect a USB cable from P1 on the TB to the PC.
// 3) Specify the target baudrate in the constant <BAUDRATE>.
// 4) Open Hyperterminal, or a similar terminalprogram, and connect to the
//    target board's serial port using <BAUDRATE> 8-N-1.
// 5) Download the code to device A on an 'F530A target board.
// 6) Run the code.
// 7) Type up to 64 characters into the Terminal and press Enter.  The MCU
//    will then print back the characters that were typed.
//
// Target:         C8051F52xA/F53xA (C8051F530A TB)
// Tool chain:     Keil C51 7.50 / Keil EVAL C51
// Command Line:   None
//
// Release 1.1
//    -Updated for 'F530A TB (TP)
//    -31 JAN 2008
//
// Release 1.0
//    -Initial Revision (SM)
//    -10 JULY 2007
//

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

#include "compiler_defs.h"
#include "C8051F520A_defs.h"
#include <stdio.h>

//-----------------------------------------------------------------------------
// Global Constants
//-----------------------------------------------------------------------------

#define SYSCLK             24500000    // Oscillator frequency in Hz
#define BAUDRATE             115200    // Baud rate of UART in bps
#define UART_BUFFERSIZE          64

//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------

void PCA0_Init (void);
void Oscillator_Init (void);
void Port_Init (void);
void UART0_Init (void);
void Init_Device (void);

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

U8 UART_Buffer[UART_BUFFERSIZE];
U8 UART_Buffer_Size = 0;
U8 UART_Input_First = 0;
U8 UART_Output_First = 0;
bit TX_Ready = 1;
static char Byte;

//-----------------------------------------------------------------------------
// main() Routine
//-----------------------------------------------------------------------------
void main (void)
{
   Init_Device ();                     // Initializes hardware peripherals

   EA = 1;

   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
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// PCA0_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// This function disables the watchdog timer.
//
//-----------------------------------------------------------------------------
void PCA0_Init (void)
{
   PCA0MD &= ~0x40;                    // Disable the Watchdog Timer
   PCA0MD = 0x00;
}

//-----------------------------------------------------------------------------
// Oscillator_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// This function initializes the system clock to use the internal oscillator
// at 24.5 MHz.
//
//-----------------------------------------------------------------------------
void Oscillator_Init (void)
{
   OSCICN = 0x87;                      // Set the internal oscillator to
                                       // 24.5 MHz
}

//-----------------------------------------------------------------------------
// Port_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// This function configures the crossbar and GPIO ports.
//
// P0.4   digital, push-pull  TX (UART0)
// P0.5   digital, open-drain RX (UART0)
//
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
    P0MDOUT   = 0x10;                  // Set the TX pin to push-pull
    XBR0      = 0x01;                  // Enable UART0 on the crossbar
    XBR1      = 0x40;                  // Enable the crossbar
}


//-----------------------------------------------------------------------------
// Init_Device
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   : None
//
// Calls all device initialization functions.
//
//-----------------------------------------------------------------------------
void Init_Device (void)
{
   PCA0_Init ();                       // Disable the Watchdog Timer first
   Oscillator_Init ();
   Port_Init ();
   UART0_Init ();
}

//-----------------------------------------------------------------------------
// 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 &= ~0x0B;                  // T1M = 1; SCA1:0 = xx
      CKCON |=  0x08;
   } 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 {
      TH1 = -(SYSCLK/BAUDRATE/2/48);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 10
      CKCON |=  0x02;
   }

   TL1 = TH1;                          // Init Timer1
   TMOD &= ~0xf0;                      // TMOD: timer 1 in 8-bit autoreload
   TMOD |=  0x20;
   TR1 = 1;                            // START Timer1
   TX_Ready = 1;                       // Flag showing that UART can transmit
   IP |= 0x10;                         // Make UART high priority
   ES0 = 1;                            // Enable UART0 interrupts

}

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

//-----------------------------------------------------------------------------
// UART0_Interrupt
//-----------------------------------------------------------------------------
//
// This routine is invoked whenever a character is entered or displayed on the
// Hyperterminal.
//
//-----------------------------------------------------------------------------
void UART0_Interrupt (void) interrupt 4
{
   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一区二区三区免费野_久草精品视频
久久久不卡网国产精品一区| 欧美日韩国产123区| 日本视频一区二区| 亚洲一本大道在线| 亚洲免费高清视频在线| 一区二区三区电影在线播| 亚洲乱码国产乱码精品精可以看| 亚洲啪啪综合av一区二区三区| 国产精品国产精品国产专区不片 | 夫妻av一区二区| 成人午夜免费电影| 91在线精品秘密一区二区| 91麻豆精品视频| 精品视频一区二区不卡| 日韩一区二区在线观看视频播放| 精品人在线二区三区| 国产成人在线观看| 成人午夜精品在线| 99久久亚洲一区二区三区青草| 99久久精品费精品国产一区二区| 91小视频免费看| 欧美精品1区2区| 久久综合色婷婷| 亚洲桃色在线一区| 日本不卡在线视频| 国产激情一区二区三区| 一本一道综合狠狠老| 欧美三电影在线| 久久久久久一二三区| 中文字幕中文字幕在线一区 | 国产精品一线二线三线| 成人激情综合网站| 欧美少妇性性性| 亚洲精品一线二线三线无人区| 国产欧美视频一区二区三区| 樱花影视一区二区| 另类人妖一区二区av| 99久久er热在这里只有精品66| 欧美丝袜丝nylons| 国产人伦精品一区二区| 性做久久久久久久久| 狠狠色伊人亚洲综合成人| 91美女片黄在线观看91美女| 精品国产免费视频| 亚洲制服丝袜一区| 成人教育av在线| 亚洲精品在线三区| 亚洲成av人影院| 91在线观看免费视频| 精品sm捆绑视频| 亚洲国产另类精品专区| av激情综合网| 国产亚洲综合av| 久久99国内精品| 911精品国产一区二区在线| 国产精品久久久一本精品| 精品亚洲成a人| 欧美一级搡bbbb搡bbbb| 亚洲一区二区五区| 色综合久久综合网欧美综合网| 久久久久国产精品厨房| 喷白浆一区二区| 欧美日韩国产综合一区二区三区| 国产精品色哟哟网站| 激情丁香综合五月| 日韩写真欧美这视频| 午夜国产不卡在线观看视频| 日本高清无吗v一区| 国产精品天美传媒| 丁香亚洲综合激情啪啪综合| www久久久久| 国产精品影音先锋| 久久久91精品国产一区二区三区| 久99久精品视频免费观看| 日韩欧美国产精品一区| 蜜臀av一区二区| 精品久久久久久综合日本欧美| 日韩av一区二区在线影视| 在线成人免费观看| 日本欧美加勒比视频| 日韩欧美国产一区二区三区| 麻豆成人久久精品二区三区红| 在线播放中文字幕一区| 青青草精品视频| 精品国产成人在线影院| 国产成人免费在线| 国产精品欧美经典| 日本精品一级二级| 性感美女极品91精品| 日韩亚洲电影在线| 国产乱码精品一品二品| 亚洲天堂网中文字| 欧美日韩成人在线| 国产一区二区三区高清播放| 国产欧美精品一区二区色综合 | 亚洲国产精品av| 粉嫩av一区二区三区粉嫩| 国产精品国产a| 色噜噜狠狠色综合中国| 午夜久久久久久| 2020日本不卡一区二区视频| 成人免费毛片app| 亚洲一区二区在线播放相泽| 日韩一区二区三区免费观看| 高清beeg欧美| 亚洲国产日产av| 久久免费午夜影院| 91免费版pro下载短视频| 日本一道高清亚洲日美韩| 久久综合999| 欧美四级电影网| 成人激情小说网站| 日韩综合一区二区| 一色屋精品亚洲香蕉网站| 3atv在线一区二区三区| av电影在线观看不卡| 美女诱惑一区二区| 亚洲天堂久久久久久久| 2020国产精品自拍| 欧美日本一区二区| 成人av综合在线| 久88久久88久久久| 天天综合色天天| 日韩伦理免费电影| 久久精品一二三| 日韩一二三区不卡| 欧洲精品中文字幕| 波多野结衣亚洲| 国产精品一区二区久激情瑜伽 | 国产日韩欧美不卡| 51精品视频一区二区三区| 97精品国产露脸对白| 国产一区二区在线观看视频| 天天色综合天天| 亚洲尤物视频在线| 亚洲欧美另类在线| 欧美韩国日本一区| 国产亚洲欧美在线| 精品久久久久久久久久久院品网 | 亚洲成人一区二区在线观看| 中文字幕一区在线| 欧美激情一区三区| 国产喂奶挤奶一区二区三区| 51午夜精品国产| 日韩午夜在线播放| 91精品国产综合久久精品性色| 欧洲一区二区av| 色噜噜夜夜夜综合网| 日本电影亚洲天堂一区| 精品理论电影在线| 欧美一级在线观看| 欧美一级xxx| 日韩午夜激情av| 欧美一区二区人人喊爽| 欧美一区二区精品在线| 91麻豆精品国产91久久久久久| 欧美日韩色一区| 欧美日韩午夜在线| 欧美日韩国产精品成人| 欧美一区二区三区在线看| 91精品国产麻豆| 精品国产乱码久久久久久蜜臀| 日韩午夜在线播放| 久久久久久亚洲综合| 日本一区二区电影| 亚洲男人的天堂在线aⅴ视频 | 欧美日韩dvd在线观看| 欧美日韩国产大片| 欧美成人性福生活免费看| 久久久精品中文字幕麻豆发布| 久久老女人爱爱| 亚洲色图欧美偷拍| 性欧美大战久久久久久久久| 免费在线观看日韩欧美| 国产米奇在线777精品观看| 99免费精品在线| 精品1区2区3区| 久久久久高清精品| 亚洲欧美日韩人成在线播放| 成人精品在线视频观看| 色老汉一区二区三区| 51久久夜色精品国产麻豆| 国产欧美一区二区精品婷婷| 亚洲精品中文在线观看| 日韩av成人高清| 99久久99久久精品免费观看| 欧美日韩三级一区| 国产亚洲一区二区在线观看| 一区二区三区在线视频观看 | 久久理论电影网| 一个色在线综合| 国产精品一区一区三区| 色94色欧美sute亚洲线路二| 欧美电视剧免费全集观看| 国产精品国产精品国产专区不蜜| 天天色天天操综合| 色婷婷精品久久二区二区蜜臂av | 久久电影国产免费久久电影 | 欧美精品v国产精品v日韩精品 | 国产精品一区二区x88av|