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

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

?? section8.c

?? 關于MSP430的程序
?? C
字號:
#include <MSP430X14X.h>
#include "SPI.h"
#include "ISD4004.h"

//定義全局變量
static char nPlay;//PLAY按鍵
static char nRec;//REC按鍵
static char nPlay_count;//PLAY按鍵次數
static char nRec_count;//REC按鍵次數
static char nVOF;//ISD4004 INT中斷標志

//定義串口操作變量
char nRev_UART0;//串口 0 的接收標志
unsigned char UART0_TX_BUF[20];// 串口 0 的發送緩沖區
unsigned char UART0_RX_BUF[20];// 串口 0 的接收緩沖區
static int nTX0_Len;//發送數據長度
static int nRX0_Len;//接收數據長度
int nRX0_Len_temp;
static char nTX0_Flag;//發送完成標志
int nSend_TX0;//發送記數器


void main()
{
    int nRec_Row;
    int nPlay_Row;
    WDTCTL = WDTPW + WDTHOLD;   // 關閉看門狗
    _DINT();//關閉中斷
    // 初始化
    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);
    }

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

////////////////////////////////////////
// 處理來自串口 0 的接收中斷
interrupt [UART0RX_VECTOR] void SPI0_RX_ISR(void)
{
    UART0_RX_BUF[nRX0_Len_temp] = RXBUF0;//接收來自的數據
    
    nRX0_Len_temp += 1;
    //接收滿10個設置標志
    if(nRX0_Len_temp >= 10)
    {
        nRX0_Len = nRX0_Len_temp;
        nRev_UART0 = 1;
        nRX0_Len_temp = 0;
    }  
}
////////////////////////////////////////
// 處理來自串口 0 的發送中斷
interrupt [UART0TX_VECTOR] void SPI0_TX_ISR(void)
{
    if(nTX0_Len != 0)
    {
    	nTX0_Flag = 0;	// 表示緩沖區里的數據沒有發送完
    	
    	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;
    	}
    }
}
///////////////////////////////////////
// 處理來自端口 1 的中斷
interrupt [PORT1_VECTOR] void R_B_ISR(void)
{
    // 處理INT中斷
    if(P1IFG & BIT0)
    {
    	nVOF = 1;//設置標志
    	P1IFG &= ~(BIT0);//清除中斷標志
    	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);	// 清除中斷標志位
    	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);	// 清除中斷標志位
    	Delay_us(100);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香另类激情小说| 午夜精品久久久久久| 亚洲四区在线观看| 丝袜亚洲另类丝袜在线| 成人高清免费观看| 欧美一区在线视频| 亚洲美女视频在线| 国产v综合v亚洲欧| 日韩亚洲欧美成人一区| 一区二区三区国产豹纹内裤在线| 国产美女精品一区二区三区| 欧美写真视频网站| 国产精品久久国产精麻豆99网站| 久久电影网电视剧免费观看| 欧美色老头old∨ideo| 中文字幕在线一区免费| 国产精品一级片| 精品少妇一区二区三区 | 色狠狠一区二区三区香蕉| 久久久午夜精品理论片中文字幕| 日本在线播放一区二区三区| 在线观看国产一区二区| 国产精品人成在线观看免费| 国模少妇一区二区三区| 日韩免费高清av| 天天色天天操综合| 欧美精品色综合| 一区二区三区欧美在线观看| 色婷婷av一区二区三区大白胸 | 韩国欧美国产一区| 51精品久久久久久久蜜臀| 亚洲狠狠爱一区二区三区| 色噜噜久久综合| 日韩毛片视频在线看| 99精品视频在线免费观看| 中文字幕第一区第二区| 成人激情电影免费在线观看| 久久色中文字幕| 国产综合色视频| 国产午夜久久久久| 成人av在线资源网| 国产精品久久久久影视| 成人黄色片在线观看| 国产精品电影一区二区| av男人天堂一区| 一区二区欧美在线观看| 色婷婷激情一区二区三区| 一二三区精品福利视频| 欧美色网站导航| 日本vs亚洲vs韩国一区三区二区| 欧美一卡二卡三卡四卡| 久久er精品视频| 精品国产凹凸成av人导航| 国产伦精品一区二区三区免费| 久久久久久电影| 91小视频在线观看| 亚洲精品福利视频网站| 欧美精品第1页| 精品亚洲成av人在线观看| 国产性天天综合网| 91丨porny丨国产入口| 婷婷国产在线综合| 国产亚洲va综合人人澡精品| 91成人免费电影| 另类小说色综合网站| 国产精品三级视频| 在线不卡免费av| 久久成人羞羞网站| 中文字幕一区二区在线播放| 欧美日韩一区中文字幕| 国产精品18久久久久久vr| 亚洲免费av观看| 欧美成人a视频| thepron国产精品| 亚洲成av人综合在线观看| 精品国产91乱码一区二区三区 | 亚洲国产综合91精品麻豆| 精品国精品国产| 日本高清免费不卡视频| 国产曰批免费观看久久久| 亚洲精品中文字幕乱码三区 | 一区二区中文字幕在线| 欧美性猛片aaaaaaa做受| 国内精品免费在线观看| 夜夜精品浪潮av一区二区三区| 亚洲精品一区二区三区蜜桃下载| 色噜噜狠狠成人网p站| 国产成人精品免费视频网站| 日韩av一区二区三区四区| 欧美激情中文不卡| 日韩区在线观看| 在线精品视频一区二区| 成人在线视频一区二区| 久久激情五月婷婷| 亚洲成人手机在线| 亚洲欧美乱综合| 久久久三级国产网站| 欧美亚洲综合另类| 99精品在线免费| 国产成人一区在线| 久久超碰97人人做人人爱| 五月天视频一区| 亚洲精品美国一| 国产丝袜美腿一区二区三区| 欧美精品日韩综合在线| 色综合久久久久久久久| www.成人在线| 国产成人在线观看免费网站| 国产美女娇喘av呻吟久久| 日日夜夜免费精品视频| 香蕉久久一区二区不卡无毒影院| 亚洲精品中文在线观看| 综合久久国产九一剧情麻豆| 国产女人18水真多18精品一级做| 欧美精品一区二区三区很污很色的 | 久久精品国产亚洲一区二区三区| 亚洲午夜久久久久久久久电影网 | www.亚洲人| 不卡的av电影| 国产999精品久久| 国产在线视频一区二区三区| 久久成人精品无人区| 国产在线不卡视频| 国产成人啪午夜精品网站男同| 国产乱妇无码大片在线观看| 国产一区二区三区四| 国精产品一区一区三区mba桃花| 男女男精品视频| 激情亚洲综合在线| 国产精品一色哟哟哟| 国产xxx精品视频大全| 97超碰欧美中文字幕| 91蜜桃传媒精品久久久一区二区| 99视频热这里只有精品免费| 色综合久久88色综合天天6| 色婷婷av一区二区三区软件| 欧美视频一二三区| 精品99999| 综合网在线视频| 午夜久久久久久电影| 久久er99热精品一区二区| 国产91精品久久久久久久网曝门| 成人福利视频在线看| 欧美三日本三级三级在线播放| 91精品福利在线一区二区三区 | 国产精品家庭影院| 一个色综合av| 国产一区二区三区美女| 成人免费精品视频| av高清不卡在线| 欧美日韩国产123区| 久久久精品国产免大香伊| 国产精品福利一区二区| 免费久久99精品国产| 成年人午夜久久久| 91精品国产综合久久国产大片| 久久久亚洲精品石原莉奈| 亚洲电影一区二区三区| 国内久久婷婷综合| 色噜噜夜夜夜综合网| 精品福利一区二区三区| 亚洲视频一区二区在线观看| 青青草97国产精品免费观看无弹窗版| 国产一区二区三区国产| 色视频一区二区| ww久久中文字幕| 午夜久久久久久久久| 成人av午夜影院| 精品国产伦一区二区三区免费 | 色国产综合视频| 精品国产乱码久久久久久牛牛| 亚洲欧美日韩系列| 久久国产精品第一页| 一本大道久久a久久精品综合| 日韩欧美第一区| 一卡二卡欧美日韩| 成人午夜视频福利| 欧美tickle裸体挠脚心vk| 亚洲免费观看高清完整版在线观看| 经典三级视频一区| 欧美日韩和欧美的一区二区| 国产精品久久久久久久第一福利| 精品一区二区三区久久| 欧美久久久久久久久中文字幕| 亚洲欧美另类图片小说| 国产成人午夜精品5599| 欧美大片在线观看| 午夜精品久久久久影视| 色欧美乱欧美15图片| 国产精品久久久久久户外露出| 精品综合久久久久久8888| 91精品国产综合久久久久久久久久| 亚洲精品国产a久久久久久| 91原创在线视频| 亚洲桃色在线一区| 波多野结衣亚洲| 中文字幕第一区第二区| 国产成人夜色高潮福利影视| 久久久久久久综合日本| 国产一区二区剧情av在线|