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

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

?? uart.c

?? MSP430單片機常用模塊與綜合系統實例精講 的:“程序代碼”、“實例插圖”、“電路圖”3個文件夾。以及MSP430F14X系列單片機的官方源碼"CODE-MSP430F14X" 其中各個文件夾主要
?? C
字號:
#include <msp430x14x.h>
#include "uart.h"
#include "flash.h"

//定義串口操作變量
// 串口 1 的接收標志
char nRev_UART1;			
// 串口 1 的發送緩沖區
char UART1_TX_BUF[60];	
// 串口 1 的接收緩沖區	
char UART1_RX_BUF[100];	
int nSend_TX1;
int nTX1_Len;
char nRX1_Len;
char nRX1_Len_temp;
char nTX1_Flag;
int nRes_UART1;
int program = 0;
int complete = 0;
unsigned int *pWriteAddr;

#define ADDRESS     0x1100
#define SEG_SIZE    512;

void Init_UART1(void)
{
    //將寄存器的內容清零
    U1CTL = 0X00;	
    //數據位為8bit
    U1CTL += CHAR;			
    
    //將寄存器的內容清零
    U1TCTL = 0X00;	
    //波特率發生器選擇SMCLK
    U1TCTL += SSEL1;			
    
    //波特率為57600
    UBR0_1 = 0X8B;			
    UBR1_1 = 0X00;
    //調整寄存器
    UMCTL_1 = 0X00;			

    //使能UART1的TXD和RXD
    ME2 |= UTXE1 + URXE1; 
    //使能UART1的RX中斷
    IE2 |= URXIE1;	
    //使能UART1的TX中斷
    IE2 |= UTXIE1;			
    
    //設置P3.6為UART1的TXD
    P3SEL |= BIT6;	
    //設置P3.7為UART1的RXD
    P3SEL |= BIT7;			
    
    //P3.6為輸出管腳
    P3DIR |= BIT6;			
    return;
}
void Init_Port(void)
{
    //將所有的管腳在初始化的時候設置為輸入方式
    P3DIR = 0;

    //將所有的管腳設置為一般I/O口
    P3SEL = 0;
    return;
}
void Init_CLK(void)
{
    unsigned int i;
    //將寄存器的內容清零
    //XT2震蕩器開啟
    //LFTX1工作在低頻模式
    //ACLK的分頻因子為1
    BCSCTL1 = 0X00;	
					
    do 
    {
	IFG1 &= ~OFIFG;                       // 清除OSCFault標志
	for (i = 0x20; i > 0; i--);                
    }
    while ((IFG1 & OFIFG) == OFIFG);      // 如果OSCFault =1   
					
    BCSCTL2 = 0X00;			//將寄存器的內容清零
    BCSCTL2 += SELM1;		//MCLK的時鐘源為TX2CLK,分頻因子為1
    BCSCTL2 += SELS;		//SMCLK的時鐘源為TX2CLK,分頻因子為1
}
///////////////////////////////////////
// 處理來自串口 1 的接收中斷
#if __VER__ < 200
    interrupt [UART1RX_VECTOR] void UART1_RX_ISR(void)
#else
    #pragma vector=UART1RX_VECTOR
    __interrupt void UART1_RX_ISR(void)
#endif
{
    if(program == 0)
    {
        //處理命令
        //接收來自的數據  
        UART1_RX_BUF[nRX1_Len_temp] = RXBUF1;	    
        nRX1_Len_temp += 1;        
        if(UART1_RX_BUF[nRX1_Len_temp - 1] == 13)
        {
    	    nRX1_Len = nRX1_Len_temp;
    	    nRev_UART1 = 1;
    	    nRX1_Len_temp = 0;
        }
    }
    else if(program == 1)
    {
        //處理數據傳輸
        //接收來自的數據  
        UART1_RX_BUF[nRX1_Len_temp] = RXBUF1;	    
        nRX1_Len_temp += 1;        
        if(UART1_RX_BUF[nRX1_Len_temp - 1] == 13)
        {
            //數據傳輸完成
    	    nRX1_Len = nRX1_Len_temp;
    	    nRev_UART1 = 1;
    	    nRX1_Len_temp = 0;
            complete = 1;
        }
        else if(nRX1_Len_temp >= 100)
        {
            //數據傳輸未完成
            nRX1_Len = nRX1_Len_temp;
    	    nRev_UART1 = 1;
    	    nRX1_Len_temp = 0;
            complete = 0;
        }
    }
    
}
///////////////////////////////////////
// 處理來自串口 1 的發送中斷
#if __VER__ < 200
    interrupt [UART1TX_VECTOR] void UART1_TX_ISR(void)
#else
    #pragma vector=UART1TX_VECTOR
    __interrupt void UART1_TX_ISR(void)
#endif
{
    if(nTX1_Len != 0)
    {
        // 表示緩沖區里的數據沒有發送完
    	nTX1_Flag = 0;			
    	
    	TXBUF1 = UART1_TX_BUF[nSend_TX1];
    	nSend_TX1 += 1;
    	
    	if(nSend_TX1 >= nTX1_Len)
    	{
    	    nSend_TX1 = 0;
    	    nTX1_Len = 0;
    	    nTX1_Flag = 1;
    	}
    }
}
void main(void)
{
    int i;    
    unsigned int *pAddr;
    int nRes = 0;
    
    char UART1_RX_Temp[100];

    // 關閉看門狗
    WDTCTL = WDTPW + WDTHOLD;   
    
    nRev_UART1 = 0;
    nSend_TX1 = 0;
    // 關閉中斷
    _DINT();
	
    // 初始化時鐘
    Init_CLK();
    // 初始化端口
    Init_Port();
    // 初始化串口1
    Init_UART1();

    program = 0;
    pWriteAddr = (unsigned int*)ADDRESS;
    // 打開中斷
    _EINT();
 	
    // 進入處理循環
    for(;;)
    {
    	if(nRev_UART1 == 1)
    	{
    	    nRev_UART1 = 0;
	    // 將接收到的數據拷貝到臨時緩沖區
	    for(i = 0;i < nRX1_Len;i++) 
            {
		UART1_RX_Temp[i] = UART1_RX_BUF[i];
            }
            
            //處理寫數據
            if(program == 1)
            {
                //寫入數據
                for(i = 0;i < nRX1_Len;i++)
                {
                    FLASH_wb((pWriteAddr + i),UART1_RX_Temp[i]);
                }                
                //移動地址
                pWriteAddr += nRX1_Len;
                
                //判斷數據傳輸是否完成
                if(complete == 1)
                {
                    //發送響應結果
                    UART1_TX_BUF[0] = 'O';
    	    	    UART1_TX_BUF[1] = 'K';
    	    	    UART1_TX_BUF[2] = 13;
    	    	    nTX1_Len = 3;
		    // 設置中斷標志,進入發送中斷程序
		    IFG2 |= UTXIFG1;		
    		    nRX1_Len = 0;
                    program = 0;
                }                
                continue;
            }
	    nRes = ProcessCMD(UART1_RX_Temp,nRX1_Len);
	    switch(nRes)
	    {
                case 0:
                {
		    UART1_TX_BUF[0] = 'O';
    	    	    UART1_TX_BUF[1] = 'K';
    	    	    UART1_TX_BUF[2] = 13;
    	    	    nTX1_Len = 3;
		    // 設置中斷標志,進入發送中斷程序
		    IFG2 |= UTXIFG1;		
    		    nRX1_Len = 0;
		    break;
                }
		case 1:
                {
                    //擦除FLASH里面的數據
                    unsigned int count = ADDRESS;
                    pAddr = (unsigned int*)ADDRESS;
                    //擦除數據
                    while(count < 0xffff)
                    {
                        FLASH_clr(pAddr);
                        pAddr += SEG_SIZE;
                        count += SEG_SIZE;
                    }
                    
                    //發送響應結果
		    UART1_TX_BUF[0] = 'O';
    	    	    UART1_TX_BUF[1] = 'K';
    	    	    UART1_TX_BUF[2] = 13;
    	    	    nTX1_Len = 3;
		    // 設置中斷標志,進入發送中斷程序
		    IFG2 |= UTXIFG1;		
    		    nRX1_Len = 0;
		    break;
                }
		case 2:
                {
                    //設置成編程狀態,下面接收來自的數據
		    program = 1;
                    pWriteAddr = (unsigned int*)ADDRESS;
                    
                    //發送響應結果
    	    	    UART1_TX_BUF[0] = 'O';
    	    	    UART1_TX_BUF[1] = 'K';
    	    	    UART1_TX_BUF[2] = 13;
    	    	    nTX1_Len = 3;
		    // 設置中斷標志,進入發送中斷程序
		    IFG2 |= UTXIFG1;		
    		    nRX1_Len = 0;
		    break;
                }
		case -1:
                {
		    UART1_TX_BUF[0] = 'E';
    	    	    UART1_TX_BUF[1] = 'R';
		    UART1_TX_BUF[2] = 'R';
    	    	    UART1_TX_BUF[3] = 'O';
		    UART1_TX_BUF[4] = 'R';
    	    	    UART1_TX_BUF[5] = 13;
    	    	    nTX1_Len = 6;
		    // 設置中斷標志,進入發送中斷程序
		    IFG2 |= UTXIFG1;		
    		    nRX1_Len = 0;
		    break;
                }
	    }//switch

	}//if(nRev_UART1 == 1)
    }//for(;;)
}
int ProcessCMD(char pBuf[],int nLen)
{
    int nTemp = -1;
    
    if(nLen == 3) 
    {
        if((pBuf[0] == 'A') && (pBuf[1] == 'T'))
        {
            nTemp = 0;
        }
    }
    
    if (nLen >= 4)
    {
	if((pBuf[0] == 'F') && (pBuf[1] == 'M') 
	    && (pBuf[2] == 'T')) 
        {
	    nTemp = 1;
        }
	if((pBuf[0] == '+') && (pBuf[1] == '+') 
	    && (pBuf[2] == '+')) 
        {
	    nTemp = 2;
        }
    }
    
    return nTemp;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一级在线播放| 国产伦精品一区二区三区免费迷 | 日本亚洲视频在线| 国产日韩欧美激情| 日韩美女在线视频| 日韩一卡二卡三卡国产欧美| 欧美日韩国产在线观看| 久久久久久久精| 欧美综合天天夜夜久久| 免费在线看一区| 日韩一二三四区| 欧美男生操女生| 在线综合亚洲欧美在线视频| 91福利国产精品| 色哟哟欧美精品| 91黄视频在线| 欧美人与性动xxxx| 美女视频网站黄色亚洲| 性感美女极品91精品| 亚洲靠逼com| 一区二区三区在线播放| 99久久精品国产麻豆演员表| 国产精品12区| 成人美女在线观看| 99re免费视频精品全部| 色婷婷综合中文久久一本| 在线亚洲人成电影网站色www| 欧美精品在线视频| 亚洲免费色视频| 国产毛片精品一区| 欧美巨大另类极品videosbest | 亚洲国产va精品久久久不卡综合| 亚洲综合自拍偷拍| 国产精品美女一区二区| 国产精品二区一区二区aⅴ污介绍| 国产亚洲欧洲997久久综合| 中文乱码免费一区二区| 亚洲成人av在线电影| 亚洲三级久久久| 午夜精品福利一区二区蜜股av| 美国av一区二区| 97se亚洲国产综合自在线不卡| 日本伦理一区二区| 精品久久久久久久人人人人传媒 | 91在线观看一区二区| 福利一区福利二区| 欧美日韩视频不卡| 麻豆国产欧美日韩综合精品二区| 国产资源精品在线观看| 日韩欧美在线不卡| 亚洲国产成人va在线观看天堂| 不卡视频免费播放| 亚洲v日本v欧美v久久精品| 91亚洲精华国产精华精华液| 亚洲国产经典视频| 成人精品小蝌蚪| 91精品婷婷国产综合久久性色| 欧洲一区在线观看| 亚洲天堂2014| 成人午夜免费av| 国产精品美女久久久久久久久| 精品一区二区三区免费| 欧美一区二区免费| 奇米色777欧美一区二区| 久久成人久久爱| 日韩高清一区二区| 蜜臂av日日欢夜夜爽一区| 欧洲视频一区二区| 精品系列免费在线观看| 日韩视频免费观看高清在线视频| 久久精品夜色噜噜亚洲a∨| 另类的小说在线视频另类成人小视频在线 | 欧美亚日韩国产aⅴ精品中极品| 亚洲啪啪综合av一区二区三区| 欧美在线视频全部完| 日本视频一区二区| 国产精品一区二区无线| 欧美第一区第二区| 成人激情视频网站| 一区二区三区中文免费| 欧美日韩成人综合| 国产一区二区91| 亚洲男人天堂一区| 精品粉嫩aⅴ一区二区三区四区| 韩国成人在线视频| 国产精品毛片久久久久久久| 亚洲激情图片一区| 欧美一区二区观看视频| 久久久一区二区| 国产制服丝袜一区| 2欧美一区二区三区在线观看视频| 国产v日产∨综合v精品视频| 亚洲视频网在线直播| 精品久久一二三区| 欧洲精品一区二区三区在线观看| 青青青伊人色综合久久| 国产精品国产三级国产专播品爱网| 欧美性猛交xxxx乱大交退制版| 69av一区二区三区| 在线不卡中文字幕播放| 欧美人体做爰大胆视频| 91麻豆精品国产自产在线| 欧美日韩国产免费一区二区| 免费成人你懂的| 91精品国产麻豆| 波多野结衣欧美| 国产一区二区三区在线观看免费 | 国产一区二区三区香蕉| 欧美成人精品福利| 国产91丝袜在线播放0| 国产精品电影一区二区| 91精品国产综合久久香蕉麻豆| 亚洲综合视频在线| 国产精品不卡在线观看| 欧美激情一区在线| 国产亲近乱来精品视频| 国产区在线观看成人精品| 久久影视一区二区| 日本一区二区动态图| 国产日韩欧美精品综合| 亚洲精品一区二区在线观看| 美女视频免费一区| 国产精品久久夜| 美女视频黄a大片欧美| 国产亚洲人成网站| 56国语精品自产拍在线观看| 亚洲国产乱码最新视频| 欧美欧美欧美欧美| 制服丝袜亚洲网站| 精品国产乱码久久久久久图片| 精品1区2区在线观看| 国产精品乱码久久久久久| 亚洲欧美在线另类| 亚洲国产欧美另类丝袜| 另类综合日韩欧美亚洲| 成人激情开心网| 欧美极品aⅴ影院| 5566中文字幕一区二区电影| 色综合天天综合网国产成人综合天| 婷婷中文字幕一区三区| 一区二区三区四区亚洲| 国产精品天美传媒| 国产婷婷一区二区| 88在线观看91蜜桃国自产| 欧美女孩性生活视频| 久久久天堂av| 亚洲国产精品久久久久婷婷884| 久久99精品国产麻豆婷婷洗澡| 国产精品亚洲一区二区三区妖精| 成av人片一区二区| 日韩欧美高清一区| 亚洲影院久久精品| 久久影院午夜论| 欧美国产一区视频在线观看| 亚洲国产精品精华液ab| 亚洲国产精品传媒在线观看| 欧美激情中文不卡| 日日夜夜精品视频天天综合网| 日韩高清不卡一区二区三区| 中文字幕成人网| 亚洲精品一二三区| 麻豆成人综合网| 精品视频999| 亚洲最大的成人av| 色偷偷成人一区二区三区91| 国产日韩三级在线| 狠狠色丁香久久婷婷综合_中 | 欧美a一区二区| 91福利在线播放| 从欧美一区二区三区| 久久人人爽爽爽人久久久| 精东粉嫩av免费一区二区三区| 欧美精品亚洲一区二区在线播放| 亚洲精选视频在线| 91激情五月电影| 美女视频一区二区| 日韩精品一区二区三区中文不卡 | 亚洲视频资源在线| jlzzjlzz国产精品久久| 国产亚洲精品7777| 不卡免费追剧大全电视剧网站| 久久毛片高清国产| 国产suv精品一区二区三区| 精品久久久久久久人人人人传媒 | 欧美另类高清zo欧美| 中文字幕欧美国产| 午夜私人影院久久久久| 九色porny丨国产精品| 欧美精品一二三区| 美腿丝袜亚洲色图| 91精品国产高清一区二区三区蜜臀| 自拍视频在线观看一区二区| 91蜜桃视频在线| 国产色婷婷亚洲99精品小说| 亚洲与欧洲av电影| www.亚洲人| 亚洲va欧美va国产va天堂影院| 91网上在线视频| 一区二区三区不卡在线观看 | 一区在线观看免费|