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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? section8.c

?? 《msp430應(yīng)用系統(tǒng)開發(fā)典型實(shí)例》第9章程序代碼
?? C
字號(hào):
#include <MSP430X14X.h>
#include "SPI.h"
#include "ISD4004.h"

//定義全局變量
static char nPlay;//PLAY按鍵
static char nRec;//REC按鍵
static char nPlay_count;//PLAY按鍵次數(shù)
static char nRec_count;//REC按鍵次數(shù)
static char nVOF;//ISD4004 INT中斷標(biāo)志

//定義串口操作變量
char nRev_UART0;//串口 0 的接收標(biāo)志
unsigned char UART0_TX_BUF[20];// 串口 0 的發(fā)送緩沖區(qū)
unsigned char UART0_RX_BUF[20];// 串口 0 的接收緩沖區(qū)
static int nTX0_Len;//發(fā)送數(shù)據(jù)長(zhǎng)度
static int nRX0_Len;//接收數(shù)據(jù)長(zhǎng)度
int nRX0_Len_temp;
static char nTX0_Flag;//發(fā)送完成標(biāo)志
int nSend_TX0;//發(fā)送記數(shù)器


void main()
{
    int nRec_Row;
    int nPlay_Row;
    WDTCTL = WDTPW + WDTHOLD;   // 關(guān)閉看門狗
    _DINT();//關(guān)閉中斷
    // 初始化
    Init_CLK();
    PORT_Init();
    SPI_Init();
    
    nPlay = 0;
    nRec = 0;
    nPlay_count = 0;
    nRec_count = 0;
    nRec_Row = 0;
    nPlay_Row = 0;
    
    _EINT();//打開中斷
    
    for(;;)
    {
    	// 放音的處理
        if((nPlay == 1) && (nPlay_count == 1))
        {
            // 放音
            Play(nPlay_Row);
            nPlay_Row += 1;
            if(nPlay_Row >= 2400) nPlay_Row = 0;
        }
        // 錄音的處理
        if((nRec == 1) && (nRec_count == 1))
        {
            // 錄音
            Record(nRec_Row);
            nRec_Row += 1;
            if(nRec_Row >= 2400) nRec_Row = 0;
        }
   
        Delay_us(10);
    }

}
// 字節(jié)的比特順序高低交換
unsigned char ByteSwap(unsigned char chrIn)
{
    unsigned char chrTemp;
    unsigned char chrOut;
    int i;

    chrOut = 0;
    for(i = 0;i < 8;i++)
    {
	    chrTemp = (chrIn & 0x80) >> 7;
	    chrIn <<= 1;
	    if(chrTemp == 1)
	    {
	        chrOut |= (chrTemp << i);
	    }	
    }
    return chrOut;
}
//片選信號(hào)置低
void SS_Enable(void)
{
    // 置低電平
    P3OUT &= ~(BIT0);
    _NOP();
    _NOP();
    return;
}
//片選信號(hào)置高
void SS_Disable(void)
{
    // 置高電平
    P3OUT |= BIT0;
    _NOP();
    _NOP();
    return;
}
// 發(fā)送上電指令
void PowerUp(void)
{
    unsigned char code;
    
    //上電命令
    code = 0x04;
    // 發(fā)送命令碼
    SendOpCode(code);
    
    return;
}
// 發(fā)送掉電指令
int PowerDown(void)
{
    unsigned char code;
    
    //掉電命令
    code = 0x08;
    // 發(fā)送命令碼
    SendOpCode(code);
    
    return;
}
// 發(fā)送停止命令
void Stop(void)
{
    unsigned char code;
    
    //停止命令
    code = 0x0C;
    // 發(fā)送命令碼
    SendOpCode(code);
    
    return;
}
// 放音操作
void Play(int nAddr)
{
    int i;
    unsigned char code;
    
    // 發(fā)送加電指令
    PowerUp();
    // 延時(shí)25ms以上
    Delay_ms(30);
    
    // 發(fā)送地址信息
    SendAddr(nAddr);
    
    // 發(fā)送SETPLAY命令
    code = 0x07;
    SendOpCode(code);
    
    // 發(fā)送PLAY命令
    code = 0x0F;
    SendOpCode(code);
    
    // 處理結(jié)束
    for(;;)
    {
        // 如果發(fā)生溢出的時(shí)候則結(jié)束錄音
        if(nOVF == 1)
    	{
    	    nOVF = 0;//清除中斷標(biāo)志變量
    	    // 發(fā)送停止命令            
            Stop();
            // 延遲一點(diǎn)時(shí)間
            for(i = 0;i < 100;i++) ;
            
            break;
    	}
    	// 如果第2次按下放音鍵,則結(jié)束錄音
        if((nPlay == 0) && (nPlay_count == 2))
    	{
    	    nPlay_count = 0;//清除按鍵次數(shù)記錄變量
    	    // 發(fā)送停止命令            
            Stop();
            // 延遲一點(diǎn)時(shí)間
            for(i = 0;i < 100;i++) ;
            
            break;
    	}
    	
    }
    
    // 發(fā)送掉電指令
    PowerDown();
    // 延遲一段時(shí)間
    Delay_ms(30);
    nPlay_count = 0;//清除按鍵次數(shù)記錄變量
    return;
}
// 錄音操作
void Record(int nAddr)
{
    int i;
    unsigned char code;
    
    // 發(fā)送加電指令
    PowerUp();
    // 延時(shí)25ms以上
    Delay_ms(30);
    // 再次發(fā)送加電指令
    PowerUp();
    // 延時(shí)25ms以上
    Delay_ms(30);
    // 延時(shí)25ms以上
    Delay_ms(30);
    
    // 發(fā)送地址信息
    SendAddr(nAddr);
    
    // 發(fā)送SETREC命令
    code = 0x05;
    SendOpCode(code);
    
    // 發(fā)送REC命令
    code = 0x0D;
    SendOpCode(code);
    
    // 處理結(jié)束
    for(;;)
    {
        // 如果發(fā)生溢出的時(shí)候則結(jié)束錄音
        if(nOVF == 1)
    	{
    	    nOVF = 0;//清除中斷標(biāo)志變量
    	    // 發(fā)送停止命令            
            Stop();
            // 延遲一點(diǎn)時(shí)間
            for(i = 0;i < 100;i++) ;
            
            break;
    	}
    	// 如果第2次按下錄音鍵,則結(jié)束錄音
        if((nRec == 0) && (nRec_count == 2))
    	{
    	    nRec_count = 0;//清除按鍵次數(shù)記錄變量
    	    // 發(fā)送停止命令            
            Stop();
            // 延遲一點(diǎn)時(shí)間
            for(i = 0;i < 100;i++) ;
            
            break;
    	}
    	
    }
    
    // 發(fā)送掉電指令
    PowerDown();
    // 延遲一段時(shí)間
    Delay_ms(30);
    nRec_count = 0;//清除按鍵次數(shù)記錄變量
    return;
}
// 發(fā)送地址信息
void SendAddr(int nAddr)
{
    int i;
    unsigned char chrHi;
    unsigned char chrLow;
    // 片選使能
    SS_Enable();
    // 分別取出高、低字節(jié)
    chrHi = (unsigned char)((nAddr & 0xff00) >> 8);
    chrLow = (unsigned char)(nAddr & 0x00ff);
    for(i = 100;i > 0;i--) ; //延遲一點(diǎn)時(shí)間
    //字節(jié)的高低順序變換
    chrHi = ByteSwap(chrHi);
    //字節(jié)的高低順序變換
    chrLow = ByteSwap(chrLow);
    
    UART0_TX_BUF[0] = chrLow;//低地址字節(jié)
    UART0_TX_BUF[1] = chrHi;//高地址字節(jié)
    nTX0_Len = 2;
    IFG1 |= UTXIFG0; // 設(shè)置中斷標(biāo)志,進(jìn)入發(fā)送中斷程序
    
    for(i = 100;i > 0;i--) ; //延遲一點(diǎn)時(shí)間
    while(1)// 等待緩沖區(qū)里的數(shù)據(jù)發(fā)送完畢
    {
        if(nTX0_Flag == 1) break;
    }
    // 片選禁止
    SS_Disable();
    
    return;
}
// 發(fā)送命令碼
void SendOpCode(unsigned char code)
{
    // 片選使能
    SS_Enable();
    for(i = 100;i > 0;i--) ; //延遲一點(diǎn)時(shí)間
    UART0_TX_BUF[0] = code;//發(fā)送命令
    nTX0_Len = 1;
    IFG1 |= UTXIFG0; // 設(shè)置中斷標(biāo)志,進(jìn)入發(fā)送中斷程序
    
    for(i = 100;i > 0;i--) ; //延遲一點(diǎn)時(shí)間
    while(1)// 等待緩沖區(qū)里的數(shù)據(jù)發(fā)送完畢
    {
        if(nTX0_Flag == 1) break;
    }
    // 片選禁止
    SS_Disable();
}

////////////////////////////////////////
// 處理來(lái)自串口 0 的接收中斷
interrupt [UART0RX_VECTOR] void SPI0_RX_ISR(void)
{
    UART0_RX_BUF[nRX0_Len_temp] = RXBUF0;//接收來(lái)自的數(shù)據(jù)
    
    nRX0_Len_temp += 1;
    //接收滿10個(gè)設(shè)置標(biāo)志
    if(nRX0_Len_temp >= 10)
    {
        nRX0_Len = nRX0_Len_temp;
        nRev_UART0 = 1;
        nRX0_Len_temp = 0;
    }  
}
////////////////////////////////////////
// 處理來(lái)自串口 0 的發(fā)送中斷
interrupt [UART0TX_VECTOR] void SPI0_TX_ISR(void)
{
    if(nTX0_Len != 0)
    {
    	nTX0_Flag = 0;	// 表示緩沖區(qū)里的數(shù)據(jù)沒(méi)有發(fā)送完
    	
    	TXBUF0 = UART0_TX_BUF[nSend_TX0];
    	nSend_TX0 += 1;
    	Delay_us(5);
    	if(nSend_TX0 >= nTX0_Len)
    	{
    	    nSend_TX0 = 0;
    	    nTX0_Len = 0;
    	    nTX0_Flag = 1;
    	}
    }
}
///////////////////////////////////////
// 處理來(lái)自端口 1 的中斷
interrupt [PORT1_VECTOR] void R_B_ISR(void)
{
    // 處理INT中斷
    if(P1IFG & BIT0)
    {
    	nVOF = 1;//設(shè)置標(biāo)志
    	P1IFG &= ~(BIT0);//清除中斷標(biāo)志
    	Delay_us(100);
    }

    // 處理錄音按鈕
    if(P1IFG & BIT5)
    {
        if(nRec == 1)
    	{
    	    nRec = 0;
    	    nRec_count += 1;
    	}
    	else if(nRec == 0)
    	{
    	    nRec = 1;
    	    nRec_count += 1;
    	}
    
    	P1IFG &= ~(BIT5);	// 清除中斷標(biāo)志位
    	Delay_us(100);
    
    }

    // 處理放音按鈕
    if(P1IFG & BIT4)
    {
        if(nPlay == 1)
    	{
    	    nPlay = 0;
    	    nPlay_count += 1;
    	}
    	else if(nPlay == 0)
    	{
    	    nPlay = 1;
    	    nPlay_count += 1;
    	}
    	P1IFG &= ~(BIT4);	// 清除中斷標(biāo)志位
    	Delay_us(100);
    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久一区二区三区| 2欧美一区二区三区在线观看视频| 国产精品1024| 精品一区二区三区在线观看| 天天射综合影视| 亚欧色一区w666天堂| 亚洲国产aⅴ成人精品无吗| 亚洲最大的成人av| 一区二区三区四区视频精品免费| 亚洲欧美视频在线观看| 一区二区三区日韩欧美| 亚洲在线成人精品| 一区二区理论电影在线观看| 亚洲男帅同性gay1069| 亚洲免费在线观看视频| 一区二区三区在线播| 亚洲成av人片在线| 秋霞国产午夜精品免费视频| 老司机精品视频导航| 久草精品在线观看| 国产精品1区二区.| jvid福利写真一区二区三区| 91香蕉国产在线观看软件| 欧美日韩综合一区| 4438x亚洲最大成人网| 精品免费视频一区二区| 久久婷婷久久一区二区三区| 国产农村妇女毛片精品久久麻豆| 国产精品福利影院| 亚洲一区二区三区四区在线免费观看| 婷婷久久综合九色综合伊人色| 蜜桃免费网站一区二区三区| 激情图区综合网| 成人性视频网站| 色视频成人在线观看免| 91精品国产色综合久久| 精品sm捆绑视频| 国产精品三级久久久久三级| 亚洲午夜精品在线| 狠狠色综合播放一区二区| 成人丝袜视频网| 欧美在线你懂得| 欧美videos中文字幕| 国产精品免费久久久久| 亚洲第一二三四区| 国产麻豆视频一区| 在线亚洲免费视频| 精品美女被调教视频大全网站| 国产精品亲子伦对白| 五月天精品一区二区三区| 国产福利精品一区二区| 国产视频不卡一区| 一区二区三区免费看视频| 日韩va亚洲va欧美va久久| 国产精品影视天天线| 欧美亚洲一区三区| 久久嫩草精品久久久精品| 亚洲一区二区三区自拍| 国产一区二区三区电影在线观看| 91黄色免费观看| 久久这里只有精品视频网| 夜夜嗨av一区二区三区中文字幕 | 国产成人在线免费观看| 91精品福利视频| 久久久精品免费免费| 亚洲va欧美va国产va天堂影院| 成人永久aaa| 日韩美女一区二区三区四区| 伊人夜夜躁av伊人久久| 国产精品白丝jk黑袜喷水| 在线电影国产精品| 亚洲欧美自拍偷拍色图| 国内外成人在线| 3d成人h动漫网站入口| 成人欧美一区二区三区1314| 精品一区免费av| 91精品久久久久久久91蜜桃| 国产精品另类一区| 精品一区二区精品| 在线成人小视频| 亚洲福中文字幕伊人影院| 成人一区在线观看| 国产欧美一区二区精品秋霞影院| 免费高清在线视频一区·| 欧美性猛交一区二区三区精品| 国产精品看片你懂得| 国产在线国偷精品免费看| 欧美一级二级三级乱码| 午夜精品久久久久久久99水蜜桃| 色哟哟精品一区| 国产精品久久久久影院老司| 国产精品一区二区在线观看不卡| 欧美一区二区三区色| 亚洲h在线观看| 欧美日韩国产小视频在线观看| 亚洲人成精品久久久久| 成人美女视频在线看| 国产欧美日产一区| 国产乱码精品一区二区三区五月婷| 欧美丰满美乳xxx高潮www| 亚洲一区二区三区中文字幕在线| 色悠久久久久综合欧美99| 亚洲日本韩国一区| 91一区二区在线| 亚洲精品乱码久久久久| 色综合久久久久久久久| 亚洲女同一区二区| 色婷婷综合久久久中文字幕| 亚洲欧洲制服丝袜| 欧日韩精品视频| 午夜精品免费在线观看| 欧美日韩免费观看一区二区三区 | 成人一二三区视频| 中文字幕日韩精品一区| 91丨porny丨首页| 亚洲综合精品久久| 欧美日韩在线播放一区| 日韩不卡在线观看日韩不卡视频| 日韩一区二区中文字幕| 欧美日韩日本视频| 欧美aa在线视频| 久久综合狠狠综合久久综合88 | 日韩精品1区2区3区| 宅男在线国产精品| 久久99精品久久久久久| 久久久国际精品| 99久久久精品| 亚洲电影欧美电影有声小说| 日韩欧美色综合网站| 国产九九视频一区二区三区| 国产精品美日韩| 欧美日韩在线三区| 激情综合网av| 中文字幕在线观看不卡| 欧美日韩精品一二三区| 美国三级日本三级久久99| 久久精品日产第一区二区三区高清版 | 欧美日韩国产不卡| 麻豆精品国产91久久久久久| 久久久不卡网国产精品二区| 色综合婷婷久久| 国产精品久久久久久福利一牛影视| 国产日韩av一区二区| 日韩va欧美va亚洲va久久| 欧美精品一区二| 91视频国产资源| 日本欧美在线观看| 国产亚洲欧美日韩日本| 色偷偷88欧美精品久久久| 老司机免费视频一区二区| 亚洲欧洲成人自拍| 日韩一区二区视频| 99久久婷婷国产精品综合| 日韩精品成人一区二区在线| 国产精品免费aⅴ片在线观看| 欧美日韩高清一区二区不卡| 国产精品亚洲а∨天堂免在线| 亚洲乱码国产乱码精品精98午夜| 日韩欧美一区二区在线视频| av亚洲精华国产精华精华| 日本成人在线看| 最近日韩中文字幕| 久久亚洲精精品中文字幕早川悠里| 色悠悠久久综合| 国产盗摄精品一区二区三区在线| 亚洲成人激情自拍| 国产精品女上位| 欧美α欧美αv大片| 日本精品一区二区三区四区的功能| 久久精品国产亚洲a| 亚洲激情图片qvod| 国产日韩欧美制服另类| 91精品国产综合久久小美女| 久久综合九色综合97婷婷女人 | 国产剧情在线观看一区二区| 亚洲不卡一区二区三区| 亚洲四区在线观看| 国产午夜精品一区二区三区视频| 欧美日韩精品一区视频| 色又黄又爽网站www久久| 成人免费视频免费观看| 久久国产欧美日韩精品| 亚洲国产cao| 一区二区视频在线| 中文字幕在线视频一区| 国产天堂亚洲国产碰碰| 日韩精品最新网址| 欧美精品一二三| 欧美午夜精品久久久久久孕妇| 99riav一区二区三区| 成人av在线电影| 国产福利视频一区二区三区| 国产真实精品久久二三区| 日韩制服丝袜av| 日韩中文字幕亚洲一区二区va在线| 亚洲一区二区四区蜜桃| 亚洲精品高清在线观看| 中文字幕一区二区三| 欧美国产一区视频在线观看| 久久久久久久久久久久久夜|