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

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

?? avr_uart_code.txt

?? 這段由CVAVR程序生成器產生的UART接口代碼是一個非常好的、高效可靠
?? TXT
字號:

#include <mega128.h>

#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)

// USART0 Receiver buffer
#define RX_BUFFER_SIZE0 8
char rx_buffer0[RX_BUFFER_SIZE0];
unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;
// This flag is set on USART0 Receiver buffer overflow
bit rx_buffer_overflow0;

// USART0 Receiver interrupt service routine
#pragma savereg-
interrupt [USART0_RXC] void uart0_rx_isr(void)
{
char status,data;
#asm
         push r26
            push r27
            push r30
            push r31
            in   r26,sreg
            push r26
#endasm
status=UCSR0A;
data=UDR0;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
       rx_buffer0[rx_wr_index0]=data;
       if (++rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
       if (++rx_counter0 == RX_BUFFER_SIZE0)
          {
              rx_counter0=0;
              rx_buffer_overflow0=1;
          };
   };
#asm
       pop  r26
       out  sreg,r26
       pop  r31
       pop  r30
       pop  r27
       pop  r26
#endasm
}
#pragma savereg+

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART0 Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
  char data;
  while (rx_counter0==0);
  data=rx_buffer0[rx_rd_index0];
  if (++rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;
  #asm("cli")
    --rx_counter0;
  #asm("sei")
  return data;
}
#pragma used-
#endif

// USART0 Transmitter buffer
#define TX_BUFFER_SIZE0 8
char tx_buffer0[TX_BUFFER_SIZE0];
unsigned char tx_wr_index0,tx_rd_index0,tx_counter0;

// USART0 Transmitter interrupt service routine
#pragma savereg-
interrupt [USART0_TXC] void uart0_tx_isr(void)
{
  #asm
      push r26
      push r27
      push r30
      push r31
      in   r26,sreg
      push r26
  #edasm
  if (tx_counter0)
  {
         --tx_counter0;
       UDR0=tx_buffer0[tx_rd_index0];
       if (++tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0;
   };
  #asm
      pop  r26
      out  sreg,r26
      pop  r31
      pop  r30
      pop  r27
      pop  r26
  #endasm
}
#pragma savereg+

#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART0 Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
  while (tx_counter0 == TX_BUFFER_SIZE0);
  #asm("cli")
   if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0))
   {
       tx_buffer0[tx_wr_index0]=c;
       if (++tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0;
       ++tx_counter0;
   }
   else
       UDR0=c;
  #asm("sei")
}
#pragma used-
#endif

// Standard Input/Output functions
#include <stdio.h>

// Declare your global variables here

void main(void)
{

// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud rate: 9600
UCSR0A=0x00;
UCSR0B=0xD8;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x67;

// Global enable interrupts
#asm("sei")

while (1)
      {
          // Place your code here

      };
}

    這段由CVAVR程序生成器產生的UART接口代碼是一個非常好的、高效可靠,并且值得認真學習和體會的。其特點如下:
   l. 它采用兩個8字節的接收和發送緩沖器來提高MCU的效率,如當主程序調用Putchar()發送數據時,如果UART口不空閑,就將數據放入發送緩沖器中,MCU不必等待,可以繼續執行其它的工作。而UART的硬件發送完一個數據后,產生中斷,由中斷服務程序負責將發送緩沖器中數據依次送出。
   2.數據緩沖器結構是一個線性的循環隊列,由讀、寫和隊列計數器3個指針控制,用于判斷隊列是否空、溢出,以及當前數據在隊列中的位置。
   3. 用編譯控制命令#pragma savereg-和#pragma savereg+,使得由CVAVR在生成的中斷服務程序中不進行中斷保護(CVAVR生成中斷保護會將比較多的寄存器壓入堆棧中),而在中斷中嵌入匯編,只將5個在本中斷中必須要保護的寄存器壓棧。這樣提高了UART中斷處理的速度,也意味著提高了MCU的效率。
   4.由于在接口程序Putchar()、Getchar()和中斷服務程序中都要對數據緩沖器的讀、寫和隊列計數器3個指針判斷和操作,為了防止沖突,在Putchar()、Getchar()中對3個指針操作時臨時將中斷關閉,提高了程序的可靠性。
    建議讀者能逐字逐句地仔細分析該段代碼,真正理解和領會每一句語句(包括編譯控制命令的作用)的作用,從中體會和學習如何編寫效率高,可靠性好,結構優良的系統代碼。這段程序使用的方法和技巧,對編寫SPI、I2C的串行通信接口程序都是非常好的借鑒。
    作為現在的單片機和嵌入式系統的工程師,不僅要深入全面的掌握芯片和各種器件的性能,具備豐富的硬件設計能力;同時也必須提高軟件的設計能力。要學習和掌握有關數據結構、操作系統、軟件工程、網絡協議等方面的知識,具有設計編寫大的復雜系統程序的能力。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产精品免费观看动漫| 日韩欧美黄色影院| 一本在线高清不卡dvd| 成人一区二区三区视频在线观看 | 亚洲激情五月婷婷| 国产精品电影一区二区三区| 国产精品亲子乱子伦xxxx裸| 日本一区二区动态图| 欧美高清在线视频| |精品福利一区二区三区| 国产精品国产馆在线真实露脸| 国产欧美视频在线观看| 欧美国产视频在线| 亚洲免费电影在线| 日韩有码一区二区三区| 青青草91视频| 国产精品亚洲一区二区三区在线 | 成人免费毛片aaaaa**| 懂色av一区二区三区免费看| 波多野结衣亚洲| 欧美三级视频在线播放| 91精选在线观看| 久久午夜国产精品| 国产精品第五页| 亚洲成人久久影院| 另类人妖一区二区av| 国产精品一区二区不卡| 99精品久久久久久| 欧美日韩一区在线观看| 精品成人私密视频| 国产精品免费网站在线观看| 一区二区欧美精品| 蜜臀久久久99精品久久久久久| 国产福利不卡视频| 欧美综合一区二区三区| 欧美一级黄色片| 国产精品麻豆久久久| 欧美大片一区二区| 国产精品亲子伦对白| 午夜精品久久久久久不卡8050| 免费成人结看片| 成人激情动漫在线观看| 欧美在线影院一区二区| 精品久久久久香蕉网| 综合激情成人伊人| 日本三级韩国三级欧美三级| 国产成人综合精品三级| 在线观看日韩一区| 久久综合九色综合欧美就去吻| 国产精品国产三级国产| 青娱乐精品视频| 不卡电影一区二区三区| 制服丝袜在线91| 中文字幕一区二区在线播放| 日韩成人免费在线| aaa欧美大片| 精品久久久久久亚洲综合网| 亚洲精品国产一区二区精华液| 久久国产精品色| 欧美中文字幕亚洲一区二区va在线 | 青青草91视频| 色综合中文综合网| 亚洲国产精品久久久久婷婷884 | 蜜臀精品久久久久久蜜臀| av在线播放一区二区三区| 这里只有精品电影| 亚洲美女在线国产| 国产91丝袜在线观看| 91精品国产91热久久久做人人 | 成人黄色a**站在线观看| 欧美一区二区视频在线观看2022| 一区在线播放视频| 国产一区二区久久| 91精品欧美福利在线观看| 亚洲人123区| 成人免费精品视频| 国产网站一区二区| 另类欧美日韩国产在线| 欧美男生操女生| 日韩理论片中文av| 成人妖精视频yjsp地址| 精品少妇一区二区三区在线播放 | 国产精品九色蝌蚪自拍| 久久精品久久99精品久久| 欧美日韩精品电影| 一区二区三区日韩欧美| 成av人片一区二区| 国产欧美一区二区在线| 九一久久久久久| 日韩视频在线永久播放| 天涯成人国产亚洲精品一区av| 在线亚洲+欧美+日本专区| 国产精品三级在线观看| 国产在线精品国自产拍免费| 精品精品国产高清a毛片牛牛| 日韩二区在线观看| 91精品国产色综合久久久蜜香臀| 亚洲第一av色| 欧美乱妇15p| 亚洲成av人片在线观看| 欧美日韩午夜影院| 日韩中文字幕麻豆| 欧美一级一区二区| 久久国产精品无码网站| 欧美精品一区二区三区高清aⅴ| 麻豆精品一区二区综合av| 日韩一区二区三区在线| 六月丁香综合在线视频| 欧美成人a视频| 狠狠久久亚洲欧美| 久久久三级国产网站| 国产精品18久久久久久久网站| 国产偷国产偷亚洲高清人白洁| 国产精品1024久久| 国产精品久99| 91传媒视频在线播放| 亚洲成av人片一区二区| 在线观看91av| 韩国av一区二区三区| 国产色婷婷亚洲99精品小说| 成人精品免费看| 亚洲欧美激情在线| 欧美日韩情趣电影| 另类中文字幕网| 国产精品美女久久久久aⅴ| 色天天综合色天天久久| 无码av中文一区二区三区桃花岛| 91精品一区二区三区久久久久久| 久久精品99久久久| 国产欧美一区二区三区网站| 91啦中文在线观看| 青娱乐精品视频| 欧美国产一区二区在线观看| 色天使色偷偷av一区二区| 日韩中文字幕不卡| 久久精品网站免费观看| 在线观看日韩av先锋影音电影院| 亚洲国产一区二区视频| 日韩午夜激情视频| www.欧美.com| 三级欧美在线一区| 久久青草国产手机看片福利盒子| 91在线小视频| 日av在线不卡| 亚洲美女电影在线| 日韩欧美中文字幕公布| 成人av资源网站| 日韩中文字幕91| 国产精品国产三级国产a| 欧美日本在线一区| 丰满岳乱妇一区二区三区| 亚洲国产视频网站| 国产丝袜在线精品| 9191国产精品| jlzzjlzz欧美大全| 久久99精品国产.久久久久| 亚洲色图丝袜美腿| 欧美va亚洲va在线观看蝴蝶网| 色综合咪咪久久| 国产尤物一区二区| 亚洲国产aⅴ成人精品无吗| 久久久一区二区| 91.com视频| 99re免费视频精品全部| 精品在线你懂的| 亚洲第一在线综合网站| 国产欧美日韩精品a在线观看| 欧美日韩日日夜夜| 91欧美一区二区| 韩国女主播一区二区三区| 亚洲成人午夜电影| 中文字幕日韩欧美一区二区三区| 欧美电视剧免费观看| 欧美性videosxxxxx| 成人一道本在线| 国产毛片精品视频| 日韩**一区毛片| 亚洲一区在线观看免费| 国产精品麻豆久久久| 久久精品视频免费| 日韩精品在线一区二区| 欧美日韩在线三级| 日本精品视频一区二区三区| 粉嫩aⅴ一区二区三区四区| 麻豆一区二区99久久久久| 午夜精品久久久久久久久久久 | 午夜久久久久久电影| 亚洲另类在线制服丝袜| 中文字幕中文字幕一区| 久久精子c满五个校花| 欧美成va人片在线观看| 欧美三区免费完整视频在线观看| 99精品一区二区三区| 成人久久久精品乱码一区二区三区 | 蜜臀久久久久久久| 亚洲超碰97人人做人人爱| 亚洲精品国产精品乱码不99| 中文字幕在线观看一区| 国产精品麻豆欧美日韩ww| 国产精品素人视频|