<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

      單片機(jī)與RS232串口通信C51程序

      作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2012-3-8

      /*************************************************************************/
      #i nclude "iom16v.h"   //請(qǐng)將# 替換成英文格式的#
      #i nclude<macros.h>
      #define baud 9600     //波特率
      #define fosc 8000000  //晶振8MHZ 
      /************************* 初始化函數(shù)**********************/
      void USART_Init(void)
      {

        /*設(shè)置波特率*/
        //UBRR=51;
        //UBRRH=(unsigned char)(baud>>8);
       // UBRRL=(unsigned char)(baud);
        UBRRL=(fosc/16/baud-1)%256;
        UBRRH=(fosc/16/baud-1)/256;
        /*接收器發(fā)送器使能*/
        UCSRB=(1<<RXEN)|(1<<TXEN);
        /*設(shè)置數(shù)據(jù)幀格式*/
        UCsrc="/blog/(1<";<URSEL)|(1<<USBS)|(3<<UCSZ0);  //8個(gè)數(shù)據(jù)位,2個(gè)停止位
      }
      /********************數(shù)據(jù)發(fā)送函數(shù)(5~8位)*********************/

      void USART_Transmit(unsigned char data)
      {
        /*等待發(fā)送緩沖器為空*/
        while(!(UCSRA&(1<<UDRE)))   //UDRE為時(shí)緩沖器為空
        ;
        /*將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù)*/
        UDR=data;
      }
      /********************數(shù)據(jù)接受函數(shù)(5~8位)*********************/
      unsigned char USART_Receive(void)
      {
        /*等待接受數(shù)據(jù)*/
        while(!(UCSRA&(1<<RXC)))  //接受緩沖器中有未讀出的數(shù)據(jù)時(shí)RXC置位,否則清零
               ;
        /*從緩沖器中獲取并返回?cái)?shù)據(jù)*/
        return UDR;
      }
      /********************字符串發(fā)送函數(shù)(不含回車換行)***********************/
      void USART_Transmit_string(unsigned char *s)
      {
      while (*s)
         {
         USART_Transmit(*s);
         s++;
         }
      }
      void main()
      {
      unsigned char i;
      unsigned char *p1,*p2;
      unsigned char a[]={" The  key  is:"};
      unsigned char b[]={" Please press any key "};
      p1=a;
      p2=b;
      USART_Init();
      //USART_Transmit_string(p2);
      //USART_Transmit(0x0d);   //回車換行
      //USART_Transmit(0x0a);
      while(1)
        {
        i=USART_Receive();
        if(i!=0)
        {
        //USART_Transmit_string(p1);
        USART_Transmit(i);
        //USART_Transmit(0x0d);   //回車換行
        //USART_Transmit(0x0a);
        }

        }

       

         /*************************************************************************/
      #i nclude "iom16v.h"
      #i nclude<macros.h>
      #define baud 9600     //波特率
      #define fosc 8000000  //晶振8MHZ 
      /************************* 初始化函數(shù)**********************/
      void USART_Init(void)
      {

        /*設(shè)置波特率*/
        //UBRR=51;
        //UBRRH=(unsigned char)(baud>>8);
       // UBRRL=(unsigned char)(baud);
        UBRRL=(fosc/16/baud-1)%256;
        UBRRH=(fosc/16/baud-1)/256;
        /*接收器和發(fā)送器使能*/
        UCSRB=(1<<RXEN)|(1<<TXEN);
        /*設(shè)置數(shù)據(jù)幀格式*/
        UCsrc="/blog/(1<";<URSEL)|(1<<USBS)|(3<<UCSZ0);  //8個(gè)數(shù)據(jù)位,2個(gè)停止位
      }
      /********************數(shù)據(jù)發(fā)送函數(shù)(5~8位)*********************/

      void USART_Transmit(unsigned char data)
      {
        /*等待發(fā)送緩沖器為空*/
        while(!(UCSRA&(1<<UDRE)))   //UDRE為時(shí)緩沖器為空
        ;
        /*將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù)*/
        UDR=data;
      }
      /********************數(shù)據(jù)接受函數(shù)(5~8位)*********************/
      unsigned char USART_Receive(void)
      {
        /*等待接受數(shù)據(jù)*/
        while(!(UCSRA&(1<<RXC)))  //接受緩沖器中有未讀出的數(shù)據(jù)時(shí)RXC置位,否則清零
               ;
        /*從緩沖器中獲取并返回?cái)?shù)據(jù)*/
        return UDR;
      }
      /********************字符串發(fā)送函數(shù)(不含回車換行)***********************/
      void USART_Transmit_string(unsigned char *s)
      {
      while (*s)
         {
         USART_Transmit(*s);
         s++;
         }
      }
      void main()
      {
      unsigned char i;
      unsigned char *p1,*p2;
      unsigned char a[]={" The  key  is:"};
      unsigned char b[]={" Please press any key "};
      p1=a;
      p2=b;
      USART_Init();
      //USART_Transmit_string(p2);
      //USART_Transmit(0x0d);   //回車換行
      //USART_Transmit(0x0a);
      while(1)
        {
        i=USART_Receive();
        if(i!=0)
        {
        //USART_Transmit_string(p1);
        USART_Transmit(i);
        //USART_Transmit(0x0d);   //回車換行
        //USART_Transmit(0x0a);
        }

        }

      Tags:單片機(jī),串口通信,rs232,c程序  
      責(zé)任編輯:admin
      請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 亚洲综合一区二区| 五月天综合色激情| 伊人色综合久久天天网| 六月婷婷缴清综合在线| 色噜噜狠狠色综合中国| 狠狠色噜噜狠狠狠狠色综合久AV | 国产亚洲综合精品一区二区三区| 97久久久精品综合88久久 | 色综合天天综合网| 国产一级a爱做综合| 色婷五月综激情亚洲综合| 久久久久久久综合日本| 亚洲人成网站999久久久综合| 一本一道色欲综合网中文字幕| 六月丁香激情综合成人| 婷婷五月综合色中文字幕| 亚洲综合一区二区精品导航 | 国产激情综合在线观看| 亚洲欧洲尹人香蕉综合| 久久久久久久尹人综合网亚洲| 欧美激情综合亚洲一二区| 精品国产第一国产综合精品| 丁香六月婷婷综合| 色欲色香天天天综合VVV| 亚洲AV日韩综合一区| 亚洲丁香婷婷综合久久| 亚洲综合精品伊人久久| 一本色道久久综合| 狠狠色丁香婷婷久久综合| 在线综合亚洲中文精品| 综合欧美五月丁香五月| 97se亚洲国产综合自在线| 狠狠色成人综合首页| 亚洲七久久之综合七久久| 国产精品无码久久综合网| 亚洲综合丁香婷婷六月香| 亚洲欧美日韩综合俺去了| 国产成人久久综合二区| 激情五月综合综合久久69| 国产亚洲欧洲Aⅴ综合一区| 婷婷五月综合色视频|