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

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

?? uart_413_3.c

?? 基于msp430的程序
?? C
字號:
//定義了兩個串口,由于使用了Timer_A的CCR1和CCR2,所以接收
//固定為P1.2和P2.0,發射可以根據情況選用其他I/O口,默認情況為
//P1.2,P1.6為一對,P2.0,P1.7為一對,如果發射不是P1.6或1.7,可以
//修改TX1_OUT_CTL,TX1_DIR_CTL或TX2_OUT_CTL,TX2_DIR_CTL,以及
//TXD_1,TXD_2.
//兩個串口每次只能用一個,采用接收完一幀再發出去,如果字節之間
//超過10個波特,即認為一幀完成.
//接收緩存默認為200個字節,可以根據RAM的使用情況來確定大小.
//ZhaoZhendong                                                                  
//Lierda, Inc
//April 2003
#include <msp430x41x.h>

#define TX1_OUT_CTL  P1OUT
#define TX1_DIR_CTL  P1DIR

#define TX2_OUT_CTL  P1OUT
#define TX2_DIR_CTL  P1DIR

#define RX1_SEL_CTL  P1SEL
#define RX1_DIR_CTL  P1DIR

#define RX2_SEL_CTL  P2SEL
#define RX2_DIR_CTL  P2DIR
 
#define TXD_1     0x40
#define TXD_2     0x80

#define RXD_1     0x04
#define RXD_2     0x01

#define Bitime_5  0x07
#define Bitime    0x0E

#define TA_DELAY  0x8C

unsigned int RXTXData_1;
unsigned char BitCnt_1;
unsigned char RX_1_FLAG;
unsigned char TA2=0;

unsigned int RXTXData_2;
unsigned char BitCnt_2;
unsigned char RX_2_FLAG;
unsigned char TA1=0;

unsigned char CHANNEL=0;

unsigned char RX_FINISH_FLAG=1;

unsigned char UART_BUF_POINTER=0;
unsigned char UART_BUF[200];

void TX_0_Byte (unsigned rxtx);
void RX_0_Ready (void);

void TX_1_Byte (unsigned rxtx);
void RX_1_Ready (void);

void TX_2_Byte (unsigned rxtx);
void RX_2_Ready (void);


void main (void)
{ 
  int i;
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
   
  SCFI0 |= FN_4;                        // x2 DCO frequency, 8MHz nominal
  FLL_CTL0 |= DCOPLUS + XCAP14PF;       // DCO+, Configure load caps
  SCFQCTL = 121;                        // (121+1) x 32768 x 2 = 7.99 Mhz
    
  _EINT();
  
  TX1_OUT_CTL |= TXD_1;
  TX2_OUT_CTL |= TXD_2;
  
  TACTL = TASSEL0+MC1;
  
  RX1_SEL_CTL |= RXD_1;
  RX2_SEL_CTL |= RXD_2;
   
  TX1_DIR_CTL |= TXD_1;
  TX2_DIR_CTL |= TXD_2;
  
  RX_1_Ready();
  RX_2_Ready();
  _EINT();
//***********************Mainloop************************************
 for (;;)
  {
   
   RX_1_Ready();
   RX_2_Ready();
   while(RX_FINISH_FLAG)
    { 
     LPM3;
     if(RX_FINISH_FLAG)
      {switch(CHANNEL)
        {
         case 2: {
                  UART_BUF[UART_BUF_POINTER]=RXTXData_1;
                  UART_BUF_POINTER++;
                  RX_1_Ready();
                 }break;
         case 4: {
                  UART_BUF[UART_BUF_POINTER]=RXTXData_2;
                  UART_BUF_POINTER++;
                  RX_2_Ready();
                 }break;
        }
      }
    }
   RX_FINISH_FLAG=1;
   switch(CHANNEL)
    {
     
     case 2: {
              for(i=0;i<UART_BUF_POINTER;i++)
               TX_1_Byte(UART_BUF[i]);
              UART_BUF_POINTER=0;
             }break;
     case 4: {
              for(i=0;i<UART_BUF_POINTER;i++)
               TX_2_Byte(UART_BUF[i]);
              UART_BUF_POINTER=0;
             }break;
    }
   CHANNEL=0;   
  }
}
//*************************Mainloop*************************************

void TX_1_Byte (unsigned rxtx)
{
 RX_1_FLAG=0;
 RXTXData_1=rxtx;
 BitCnt_1 = 0xA;                        // Load Bit counter, 8data + ST/SP
 CCR1 = TAR;                           // Current state of TA counter
 CCR1 += Bitime;
 RXTXData_1 |= 0x100;                    // Add mark stop bit to RXTXData 
 RXTXData_1 = RXTXData_1 << 1;             // Add space start bit
 CCTL1 = CCIE;
 TX1_OUT_CTL |= TXD_1;
 LPM3;
}

void TX_2_Byte (unsigned rxtx)
{
 RX_2_FLAG=0;
 RXTXData_2=rxtx;
 BitCnt_2 = 0xA;                    // Load Bit counter, 8data + ST/SP
 CCR2 = TAR;                        // Current state of TA counter
 CCR2 += Bitime;
 RXTXData_2 |= 0x100;               // Add mark stop bit to RXTXData 
 RXTXData_2 = RXTXData_2 << 1;      // Add space start bit
 CCTL2 = CCIE;                      // TXD = mark = idle
 TX2_OUT_CTL |= TXD_2;
 LPM3;
}

void RX_1_Ready (void)
{
 BitCnt_1 = 0x8;                     // Load Bit counter
 CCTL1 = SCS+OUTMOD0+CM1+CAP+CCIE;   // Sync, Neg Edge, Capture          
 RX_1_FLAG=1;
}

void RX_2_Ready (void)
{
 BitCnt_2 = 0x8;                     // Load Bit counter
 CCTL2 = SCS+OUTMOD0+CM1+CAP+CCIE;   // Sync, Neg Edge, Capture          
 RX_2_FLAG=1;
}


interrupt[TIMERA1_VECTOR] void Timer_A_1 (void)
{
 switch(TAIV)
  {
   case 2:{
           TACCTL2 &= ~CCIE;
           switch(TA1)
            {
             case 0:{
                     switch(RX_1_FLAG)
                      {
                       case 0:{
                               CCR1 += Bitime;
                               switch(BitCnt_1 == 0)
                                {
                                 case 0:{   
                                         if (RXTXData_1 & 0x01)
                                          TX1_OUT_CTL |= TXD_1;
                                         else
                                          TX1_OUT_CTL &= ~TXD_1; 
                                         RXTXData_1 = RXTXData_1 >> 1;
                                         BitCnt_1 --;
                                        }break;
                                 case 1:{CCTL1 &= ~ CCIE;
                                         LPM3_EXIT;
                                        }break;
                                }
                              }break;
                       case 1:{
                               CCR1 += Bitime;
                               switch((CCTL1 & CAP)==CAP)
                                {
                                 case 0:{RXTXData_1 = RXTXData_1 >> 1;
                                         if (CCTL1 & SCCI)
                                          RXTXData_1 |= 0x80;
                                         BitCnt_1 --;
                                         if ( BitCnt_1 == 0)
                                          {
                                           CCTL1 &= ~ CCIE;
//************************************************************
                                           TACCR2=TAR+TA_DELAY;
                                           TACCTL2 = CCIE;
                                           TA2=1;
//*************************************************************                                  
                                           LPM3_EXIT;
                                          } 
                                        }break;
                                 case 1:{
                                         CCTL1 &= ~ CAP;
                                         CCR1 += Bitime_5;
                                         CCTL2 &= ~CCIE;
                                         CHANNEL=0x02;
                                        }break;
                                }
                              }break;
                      }
                    }break;
             case 1:{
                     RX_FINISH_FLAG=0;
                     TACCTL1 &= ~CCIE;
                     TA1=0;
                     LPM3_EXIT;
                    }break;
            }
           
          }break;
   case 4:{
           TACCTL1 &= ~CCIE;
           switch(TA2)
            {
             case 0:{
                     switch(RX_2_FLAG)
                      {
                       case 0:{
                               CCR2 += Bitime;
                               switch(BitCnt_2 == 0)
                                {
                                 case 0:{   
                                         if (RXTXData_2 & 0x01)                 
                                          TX2_OUT_CTL |= TXD_2;
                                         else
                                          TX2_OUT_CTL &= ~TXD_2;  
                                         RXTXData_2 = RXTXData_2 >> 1;
                                         BitCnt_2 --;
                                        }break;
                                 case 1:{CCTL2 &= ~ CCIE;
                                         LPM3_EXIT;
                                        }break;
                                }
                              }break;
                       case 1:{
                               CCR2 += Bitime;
                               switch((CCTL2 & CAP)==CAP)
                                {
                                 case 0:{RXTXData_2 = RXTXData_2 >> 1;
                                         if (CCTL2 & SCCI)
                                          RXTXData_2 |= 0x80;
                                         BitCnt_2 --;
                                         if ( BitCnt_2 == 0)
                                          {
                                           CCTL2 &= ~ CCIE;
//*************************************************************
                                           TACCR1=TAR+TA_DELAY;
                                           TACCTL1 = CCIE;
                                           TA1=1;
//*****************************************************************  
                                           LPM3_EXIT;
                                          } 
                                        }break;
                                 case 1:{
                                         CCTL2 &= ~ CAP;
                                         CCR2 += Bitime_5;
                                         CCTL1 &= ~CCIE;
                                         CHANNEL=0x04;
                                        }break;
                                }
                              }break;
                      }
                    }break;
             case 1:{
                     RX_FINISH_FLAG=0;
                     TACCTL2 &= ~CCIE;
                     TA2=0;
                     LPM3_EXIT;
                    }break;
            }
           
          }break;
   default:break; 
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲无线码一区二区三区| 成人av综合一区| 欧美一区二区三区四区五区 | 欧美xxxx老人做受| 美女视频黄a大片欧美| 久久久久久久电影| 成人黄动漫网站免费app| 亚洲免费色视频| 亚洲日本va午夜在线电影| 中文字幕中文字幕在线一区| 在线免费精品视频| www..com久久爱| 国产麻豆午夜三级精品| 国产精品一区二区久久不卡| 久久99精品视频| 国产精品人妖ts系列视频| 精品女同一区二区| 在线免费观看视频一区| 国产精品毛片久久久久久| 亚洲日穴在线视频| 亚洲精品国产精品乱码不99| 日本成人中文字幕在线视频| 国产福利精品一区二区| 精品视频色一区| 国产二区国产一区在线观看| 亚洲精品在线观看网站| 日韩一区在线免费观看| 欧美日韩免费不卡视频一区二区三区| 日韩精品欧美精品| 国产精品欧美精品| 5858s免费视频成人| 大胆亚洲人体视频| 国产精品久久久久久久久果冻传媒 | 精品在线你懂的| 波多野结衣亚洲| 久久一夜天堂av一区二区三区| 亚洲一区二区三区四区五区中文| 亚洲高清在线视频| 成人国产精品免费观看视频| 久久九九全国免费| 日韩国产成人精品| 欧美日韩情趣电影| 亚洲人成伊人成综合网小说| 国产福利精品导航| 欧美精品一区二区三区视频| 欧美一级电影网站| 日韩国产精品久久| 91麻豆精品久久久久蜜臀| 视频一区二区欧美| 在线看国产日韩| 亚洲最大成人网4388xx| 欧美日韩国产一区二区三区地区| 国产裸体歌舞团一区二区| 国产1区2区3区精品美女| 日韩亚洲电影在线| 成年人国产精品| 99re热视频精品| 色欧美片视频在线观看| 亚洲最大的成人av| 久久久精品综合| 国产成人亚洲综合a∨婷婷图片| 婷婷综合另类小说色区| 日韩理论片一区二区| 久久久久久久久久久电影| 欧美一卡二卡三卡| 国产成人免费视频一区| 久久综合久久鬼色中文字| 成人精品视频一区二区三区| ...xxx性欧美| 欧美一区二区人人喊爽| 亚洲影院理伦片| 日韩欧美国产综合| 欧美一区二区久久| 99久久99久久免费精品蜜臀| 亚洲综合网站在线观看| 亚洲色图制服诱惑| 亚洲欧洲成人精品av97| 日韩一区二区免费在线电影| 成人国产亚洲欧美成人综合网 | 在线不卡中文字幕| 一本到不卡精品视频在线观看| 成人av在线播放网址| 国产91精品露脸国语对白| 国产精华液一区二区三区| 国产成人av一区二区三区在线观看| 国产ts人妖一区二区| 成人av在线观| 色屁屁一区二区| 欧美精品99久久久**| 欧美成人一区二区三区片免费| 精品国产乱码久久久久久久久| 久久综合九色综合97婷婷女人 | 国产亚洲欧洲997久久综合| 久久亚洲综合色| 国产精品视频一二三| 亚洲日本青草视频在线怡红院| 一区二区三区在线视频观看 | 在线观看三级视频欧美| 国产在线播放一区三区四| 麻豆精品一区二区三区| 天天av天天翘天天综合网| 欧美a级理论片| 亚洲图片一区二区| 亚洲成av人片在线观看| 全部av―极品视觉盛宴亚洲| 国产一区91精品张津瑜| 亚洲免费av在线| 偷窥少妇高潮呻吟av久久免费| 精品一区二区三区在线播放视频| 国产不卡视频在线播放| 欧美性大战xxxxx久久久| 日韩免费电影一区| 亚洲视频在线一区二区| 日本在线不卡一区| 日韩欧美国产午夜精品| 亚洲国产岛国毛片在线| 国产一区二区视频在线播放| 免费久久99精品国产| www.欧美日韩| 欧美高清性hdvideosex| 欧美激情中文不卡| 亚洲永久免费视频| 国产风韵犹存在线视精品| 欧美午夜影院一区| 久久久久国产精品麻豆| 亚洲男人都懂的| 老司机免费视频一区二区三区| 97久久精品人人做人人爽| 欧美一二三在线| 亚洲免费在线电影| 久久se精品一区二区| 91久久精品一区二区二区| 久久久久久久综合色一本| 五月婷婷激情综合网| 成人国产精品免费网站| 精品国产免费久久| 亚洲一二三四区| 99久久精品费精品国产一区二区| 欧美tickling挠脚心丨vk| 亚洲一区二区在线观看视频 | 日韩激情一区二区| 成人av电影免费在线播放| 欧美一级国产精品| 亚洲一区二区三区视频在线播放| 懂色av一区二区三区免费观看| 欧美精品亚洲二区| 亚洲午夜免费视频| 91亚洲精品久久久蜜桃| 日本一区二区免费在线观看视频 | 毛片av一区二区| 欧美老年两性高潮| 亚洲电影一区二区三区| xvideos.蜜桃一区二区| 99久久国产免费看| 亚洲品质自拍视频| 欧美在线观看你懂的| 一区二区高清视频在线观看| 色婷婷久久综合| 亚洲成av人影院| 久久一区二区视频| 91色在线porny| 亚洲h在线观看| 久久你懂得1024| 色视频成人在线观看免| 国产精品拍天天在线| 国产一区 二区 三区一级| 精品福利一区二区三区| 久久国产精品99精品国产| 欧美成人精品二区三区99精品| 日韩精品五月天| 欧美日韩日本视频| 日韩av一区二区在线影视| 在线观看91av| 久久91精品久久久久久秒播| 精品国产免费人成在线观看| 黄色精品一二区| 精品国产a毛片| 在线视频亚洲一区| 日本一区二区三区在线不卡| 国产真实乱对白精彩久久| 久久久精品国产免费观看同学| 国产美女在线精品| 国产精品午夜久久| 99re8在线精品视频免费播放| 亚洲综合免费观看高清完整版 | 奇米综合一区二区三区精品视频| 日韩一区二区三区视频在线观看| 六月婷婷色综合| 国产日韩欧美亚洲| 91丨国产丨九色丨pron| 亚洲国产综合色| 精品免费国产二区三区| 国产成人午夜99999| 亚洲乱码国产乱码精品精可以看| 色综合婷婷久久| 九色综合国产一区二区三区| 国产精品情趣视频| 一本一道波多野结衣一区二区| 日韩精品一二区| 国产精品美女久久久久av爽李琼|