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

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

?? sm.c

?? 430學(xué)習(xí)書籍,好東西,希望大家下載
?? C
字號:
#include <MSP430X14X.h>
#include "SM.h"

//全局變量
extern int nSM_R_B;
void SM_Port_Init(void)
{
    P4DIR = 0;
    P4DIR |= BIT0;    //設(shè)置CLE為輸出管腳
    P4DIR |= BIT1;    //設(shè)置CE~為輸出管腳
    P4DIR |= BIT2;    //設(shè)置ALE為輸出管腳
    P4DIR |= BIT3;    //設(shè)置RE~為輸出管腳
    P4DIR |= BIT4;    //設(shè)置WE~為輸出管腳
    P1DIR &= ~(BIT1); //設(shè)置R/B為輸入管腳
    //將P4、P5口的管腳設(shè)置為一般I/O口
    P4SEL = 0;
    P5SEL = 0;
    return;
}
void CLE_Enable(void)
{
    P4OUT |= BIT0;
    return;
}
void CLE_Disable(void)
{
    P4OUT &= ~(BIT0);
    return;
}
void CE_Enable(void)
{
    P4OUT &= ~(BIT1);
    return;
}
void CE_Disable(void)
{
    P4OUT |= BIT1;
    return;
}
void ALE_Enable(void)
{
    P4OUT |= BIT2;
    return;
}
void ALE_Disable(void)
{
    P4OUT &= ~(BIT2);
    return;
}
void WE_Enable(void)
{
    P4OUT &= ~(BIT4);
    return;
}
void WE_Disable(void)
{
    P4OUT |= BIT4;
    return;
}
void RE_Enable(void)
{
    P4OUT &= ~(BIT3);
    return;
}
void RE_Disable(void)
{
    P4OUT |= BIT3;
    return;
}
////////////////////////////////////////
// 正確返回 1,錯誤返回 0
int PageWrite(int nCol,unsigned long nRow,char *pBuf)
{
    int nTemp = 0;
    int i;
    int j;
    unsigned nADD1;
    unsigned nADD2;
    unsigned nADD3;
    //處理最高地址的時候必須注意的是其余沒有用的位必須是 0
    nADD1 = (unsigned char)((nRow & 0x000000ff) >> 0);
    nADD2 = (unsigned char)((nRow & 0x0000ff00) >> 8);
    nADD3 = (unsigned char)((nRow & 0x00010000) >> 16);	
    
    CE_Enable();
    
    P5DIR = 0xff; //設(shè)置P5口為輸出方向
    
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x80; //頁寫命令
    WE_Disable();
    CLE_Disable();
    
    ALE_Enable();
    WE_Enable();
    P5OUT = (unsigned char)(nCol); // 行的起始地址
    WE_Disable();
    // 發(fā)送第一個行地址
    WE_Enable();
    P5OUT = nADD1;
    WE_Disable();
    // 發(fā)送第二個行地址
    WE_Enable();
    P5OUT = nADD2;
    WE_Disable();
    // 發(fā)送第三個行地址
    WE_Enable();
    P5OUT = nADD3;
    WE_Disable();
    ALE_Disable();
    // 寫如數(shù)據(jù)
    for(j = 0;j < 528;j++)
    {
    	WE_Enable();
    	P5OUT = pBuf[j];
    	WE_Disable();
    }
    // 發(fā)送寫確認(rèn)命令
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x10;
    WE_Disable();
    CLE_Disable();
    
    //延遲一點時間,等待R/B低電平
    for(i = 100;i > 0;i--);
    // 讀狀態(tài)寄存器
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x70;
    WE_Disable();
    CLE_Disable();
    
    P5DIR = 0x00; //設(shè)置P5口為輸入方向
    for(i = 1000;i > 0;i--)
    {
    	RE_Enable();
    	nTemp = P5IN;
    	RE_Disable();
    	if(nTemp == 0xc0) break;
    }
    
    if(nTemp == 0xc0) return 1;
    else return 0;
}
////////////////////////////////////////
// 正確返回 1,錯誤返回 0
int WriteByte(int nCommand,int nCol,unsigned long nRow,char nValue)
{
    int nTemp = 0;
    int i;
    unsigned nADD1;
    unsigned nADD2;
    unsigned nADD3;
    
    //處理最高地址的時候必須注意的是其余沒有用的位必須是 0
    nADD1 = (unsigned char)((nRow & 0x000000ff) >> 0);
    nADD2 = (unsigned char)((nRow & 0x0000ff00) >> 8);
    nADD3 = (unsigned char)((nRow & 0x00010000) >> 16);	
    
    CE_Enable();
    
    P5DIR = 0xff; //設(shè)置P5口為輸出方向
    CLE_Enable();
    WE_Enable();
    P5OUT = (unsigned char)(nCommand);	//命令
    WE_Disable();
    CLE_Disable();
    
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x80; //頁寫命令
    WE_Disable();
    CLE_Disable();
    
    ALE_Enable();
    WE_Enable();
    P5OUT = (unsigned char)(nCol); // 行的起始地址
    WE_Disable();
    // 發(fā)送第一個行地址
    WE_Enable();
    P5OUT = nADD1;
    WE_Disable();
    // 發(fā)送第二個行地址
    WE_Enable();
    P5OUT = nADD2;
    WE_Disable();
    // 發(fā)送第三個行地址
    WE_Enable();
    P5OUT = nADD3;
    WE_Disable();
    ALE_Disable();
    // 寫入一個字節(jié)的內(nèi)容
    WE_Enable();
    P5OUT = nValue;
    WE_Disable();
    
    // 發(fā)送寫確認(rèn)命令
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x10;
    WE_Disable();
    CLE_Disable();
    
    //延遲一點時間,等待R/B低電平
    for(i = 100;i > 0;i--);
    // 讀狀態(tài)寄存器
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x70;
    WE_Disable();
    CLE_Disable();
    
    P5DIR = 0x00; //設(shè)置P5口為輸入方向
    for(i = 1000;i > 0;i--)
    {
    	RE_Enable();
    	nTemp = P5IN;
    	RE_Disable();
    	if(nTemp == 0xc0) break;
    }
    
    if(nTemp == 0xc0) return 1;
    else return 0;
}
////////////////////////////////////////
// 正確返回 1,錯誤返回 0
char ReadByte(int nCommand,int nCol,unsigned long nRow)
{
    int i;
    char chrLow = 0;
    unsigned char nADD1;
    unsigned char nADD2;
    unsigned char nADD3;
    
    //處理最高地址的時候必須注意的是其余沒有用的位必須是 0
    nADD1 = (unsigned char)((nRow & 0x000000ff) >> 0);
    nADD2 = (unsigned char)((nRow & 0x0000ff00) >> 8);
    nADD3 = (unsigned char)((nRow & 0x00010000) >> 16);	
    
    CE_Enable();
    
    P5DIR = 0xff; //設(shè)置P5口為輸出方向
    
    CLE_Enable();
    WE_Enable();
    P5OUT = (unsigned char)(nCommand);	//輸出讀命令代碼;
    WE_Disable();
    CLE_Disable();
    // 發(fā)送列地址
    ALE_Enable();
    WE_Enable();
    P5OUT = (unsigned char)(nCol);
    WE_Disable();
    // 發(fā)送第一個行地址
    WE_Enable();
    P5OUT = (unsigned char)(nADD1);
    WE_Disable();
    // 發(fā)送第二個行地址
    WE_Enable();
    P5OUT = (unsigned char)(nADD2);
    WE_Disable();
    // 發(fā)送第三個行地址
    WE_Enable();
    P5OUT = (unsigned char)(nADD3);
    WE_Disable();
    ALE_Disable();
    
    //延遲一點時間,等待R/B低電平
    for(i = 100;i > 0;i--);
    
    P5DIR = 0;	//設(shè)置P5口為輸入方向
    // 讀取一個字節(jié)的內(nèi)容
    RE_Enable();
    chrLow = P5IN;
    RE_Disable();
    
    CE_Disable();
    return chrLow;
}

////////////////////////////////////////
// 正確返回 1,錯誤返回 0
int PageRead(int nCol,unsigned long nRow,char *pBuf)
{
    int nTemp = 0;
    int i;
    int j;
    unsigned char nADD1;
    unsigned char nADD2;
    unsigned char nADD3;
    
    //處理最高地址的時候必須注意的是其余沒有用的位必須是 0
    nADD1 = (unsigned char)((nRow & 0x000000ff) >> 0);
    nADD2 = (unsigned char)((nRow & 0x0000ff00) >> 8);
    nADD3 = (unsigned char)((nRow & 0x00010000) >> 16);	
    
    CE_Enable();
    
    P5DIR = 0xff; //設(shè)置P5口為輸出方向
    
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x00; //輸出讀命令代碼 0x00;
    WE_Disable();
    CLE_Disable();
    // 發(fā)送列地址
    ALE_Enable();
    WE_Enable();
    P5OUT = (unsigned char)(nCol);
    WE_Disable();
    // 發(fā)送第一個行地址
    WE_Enable();
    P5OUT = (unsigned char)(nADD1);
    WE_Disable();
    // 發(fā)送第二個行地址
    WE_Enable();
    P5OUT = (unsigned char)(nADD2);
    WE_Disable();
    // 發(fā)送第三個行地址
    WE_Enable();
    P5OUT = (unsigned char)(nADD3);
    WE_Disable();
    ALE_Disable();
    
    //延遲一點時間,等待R/B低電平
    for(i = 100;i > 0;i--);
    
    P5DIR = 0;			//設(shè)置P5口為輸入方向
    // 讀取一頁的數(shù)據(jù)
    for(j = 0;j < 528;j++)
    {
    	RE_Enable();
    	pBuf[j] = P5IN;
    	
    	RE_Disable();
    }
    
    CE_Disable();
    return nTemp;
}
////////////////////////////////////////
// 正確返回 1,錯誤返回 0
int ReadID(unsigned char pBuf[2])
{
    int nTemp = 0;
    int nMaker = 0;
    int nDevice = 0;
    
    CE_Enable(); // 使能片選信號
    ALE_Disable();
    CLE_Disable();
    RE_Disable();
    WE_Disable();
    P5DIR = 0XFF; // 設(shè)置P5口為輸出方向
    
    CLE_Enable();    
    WE_Enable();    
    P5OUT = 0x90; // 輸出命令代碼 0x90
    WE_Disable();
    CLE_Disable();
    
    ALE_Enable();    
    WE_Enable();   
    P5OUT = 0x00; // 地址周期
    WE_Disable();
    ALE_Disable();
    
    P5DIR = 0x00; // 設(shè)置P5口為輸入方向
    // 讀取內(nèi)容
    RE_Enable();
    nMaker = P5IN;
    RE_Disable();
    
    RE_Enable();
    nDevice = P5IN;
    RE_Disable();    
    
    CE_Disable();
    
    if(nMaker == 0xec)
    {
    	if(nDevice == 0x76 || nDevice == 0x79)
    	{
    	    nTemp = 1;
    	    pBuf[0] = (unsigned char)(nMaker);
    	    pBuf[1] = (unsigned char)(nDevice);
    	}
    }
    return nTemp;
}
/////////////////////////////////////////
//成功返回 1,錯誤返回 0
int BlockErase(unsigned long nAddr)
{
    int nTemp = 0;
    int i;
    unsigned char nADD1;
    unsigned char nADD2;
    unsigned char nADD3;
    //處理最高地址的時候必須注意的是其余沒有用的位必須是 0
    nADD1 = (unsigned char)((nAddr & 0x000000ff) >> 0);
    nADD2 = (unsigned char)((nAddr & 0x0000ff00) >> 8);
    nADD3 = (unsigned char)((nAddr & 0x00010000) >> 16);	
    
    CE_Enable();
    
    P5DIR = 0xff; //設(shè)置P5口為輸出方向
    
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x60; //輸出塊擦出命令
    WE_Disable();
    CLE_Disable();
    // 發(fā)送行地址第一字節(jié)
    ALE_Enable();
    WE_Enable();
    P5OUT = (unsigned char)(nADD1);
    WE_Disable();
    // 發(fā)送行地址第二字節(jié)
    WE_Enable();
    P5OUT = (unsigned char)(nADD2);
    WE_Disable();
    // 發(fā)送行地址第三字節(jié)
    WE_Enable();
    P5OUT = (unsigned char)(nADD3);
    WE_Disable();
    ALE_Disable();
    // 發(fā)送擦除確認(rèn)命令
    CLE_Enable();
    WE_Enable();
    P5OUT = 0xd0;
    WE_Disable();
    CLE_Disable();
    
    //延遲一點時間,等待R/B低電平
    for(i = 200;i > 0;i--);
    // 發(fā)送讀狀態(tài)寄存器命令
    CLE_Enable();
    WE_Enable();
    P5OUT = 0x70;
    WE_Disable();
    CLE_Disable();
    
    P5DIR = 0;	//設(shè)置P5口為輸入方向
    // 讀狀態(tài)寄存器的內(nèi)容
    RE_Enable();
    nTemp = P5IN;
    RE_Disable();
    
    CE_Disable();
    
    if(nTemp & 0x01) return 0;
    else return 1;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级片免费看| 色综合天天天天做夜夜夜夜做| 欧美日韩国产一二三| 亚洲一区二区三区三| 欧洲一区在线电影| 亚欧色一区w666天堂| 欧美日韩不卡在线| 另类成人小视频在线| 2020国产精品自拍| 高清beeg欧美| 国产精品福利一区| 欧美视频一区二区三区四区| 日韩国产欧美视频| 久久综合丝袜日本网| 成人美女视频在线观看| 亚洲精品成人精品456| 欧美日韩一区在线观看| 免费看欧美女人艹b| 国产亚洲福利社区一区| 色综合色综合色综合| 亚洲高清视频的网址| 精品国产电影一区二区| 成人免费视频app| 亚洲成人在线观看视频| 久久亚洲欧美国产精品乐播| 99精品欧美一区| 日本麻豆一区二区三区视频| 国产人久久人人人人爽| 欧美三区在线观看| 欧美猛男gaygay网站| 美女视频第一区二区三区免费观看网站| 久久久久久电影| 欧美在线一区二区三区| 国精产品一区一区三区mba视频| 中文字幕五月欧美| 日韩午夜精品视频| 91蜜桃网址入口| 国产一区福利在线| 一区二区三区蜜桃| 国产午夜精品在线观看| 欧美日韩免费电影| 成人丝袜视频网| 美女被吸乳得到大胸91| 一区二区三区在线免费视频| 2欧美一区二区三区在线观看视频| 91亚洲精品久久久蜜桃| 激情综合色播五月| 亚洲国产欧美一区二区三区丁香婷| 久久久噜噜噜久噜久久综合| 欧美日韩一区二区在线视频| 成人激情黄色小说| 久久成人免费电影| 视频一区欧美日韩| 一区二区三区在线观看国产| 国产日韩欧美一区二区三区乱码 | 色94色欧美sute亚洲线路一久| 另类小说欧美激情| 视频一区二区三区入口| 亚洲精品伦理在线| 欧美国产1区2区| 久久婷婷久久一区二区三区| 91麻豆精品国产自产在线| 91久久久免费一区二区| 成人精品高清在线| 国产69精品久久777的优势| 免费成人深夜小野草| 日韩vs国产vs欧美| 亚洲一卡二卡三卡四卡无卡久久| 综合色天天鬼久久鬼色| 中文在线免费一区三区高中清不卡| 久久综合丝袜日本网| 欧美www视频| 欧美精品第1页| 欧美日韩你懂的| 欧美日韩黄色影视| 欧美日韩一本到| 欧美日韩午夜精品| 欧美日韩免费观看一区二区三区| 一本色道a无线码一区v| 色婷婷综合视频在线观看| 99久久99久久免费精品蜜臀| 97久久久精品综合88久久| 99久久国产综合色|国产精品| 成人黄色免费短视频| 91蜜桃网址入口| 色视频一区二区| 欧美色综合天天久久综合精品| 91福利在线免费观看| 欧美在线影院一区二区| 欧美日韩国产一级二级| 欧美一区二区三区男人的天堂| 欧美日韩大陆在线| 日韩欧美一二三区| 精品国产91乱码一区二区三区| 久久综合中文字幕| 国产精品激情偷乱一区二区∴| 国产精品免费网站在线观看| 1024精品合集| 亚洲一二三四区| 日本女人一区二区三区| 国产精品资源在线| 97精品久久久午夜一区二区三区| 国产欧美一区二区三区沐欲| 国产精品久99| 亚洲国产一二三| 久色婷婷小香蕉久久| 成人午夜电影久久影院| 欧美系列亚洲系列| 日韩欧美一区二区三区在线| 久久久久一区二区三区四区| 亚洲欧美一区二区三区国产精品| 亚洲网友自拍偷拍| 国产在线国偷精品产拍免费yy| 99精品视频免费在线观看| 欧美精品 日韩| 国产欧美精品一区二区色综合朱莉 | 国产精品成人一区二区三区夜夜夜| 亚洲综合图片区| 久草热8精品视频在线观看| av综合在线播放| 欧美一区三区二区| 国产精品久久久久四虎| 亚洲va欧美va天堂v国产综合| 狠狠v欧美v日韩v亚洲ⅴ| 91香蕉视频污| 欧美r级在线观看| 亚洲区小说区图片区qvod| 久久国产精品无码网站| 国产色综合一区| 亚洲va欧美va人人爽午夜| 成人免费毛片嘿嘿连载视频| 欧美一区二区三区人| 亚洲精品视频免费看| 国产福利一区二区三区视频| 欧美色图激情小说| 中文字幕 久热精品 视频在线| 免费精品视频在线| 色成人在线视频| 国产日韩av一区二区| 日韩电影网1区2区| 日本高清不卡在线观看| 国产日韩影视精品| 蜜桃精品在线观看| 欧美日韩一区成人| 亚洲精品乱码久久久久久久久| 国产精品一级在线| 欧美成人精品1314www| 亚洲国产另类av| 色香色香欲天天天影视综合网| 国产三级精品视频| 精久久久久久久久久久| 51精品久久久久久久蜜臀| 亚洲国产精品久久久久秋霞影院 | 国产资源精品在线观看| 欧美二区在线观看| 亚洲自拍偷拍网站| 色婷婷久久99综合精品jk白丝| 中文字幕第一页久久| 国产精品影视网| 欧美精品一区二区三区蜜桃| 日韩高清在线电影| 欧美日韩1234| 亚洲免费看黄网站| 成人免费视频播放| 国产精品天干天干在线综合| 国产一区二区三区四| 精品国产乱码久久久久久牛牛 | 亚洲综合一区二区| 日本精品免费观看高清观看| 国产精品成人网| av在线这里只有精品| 国产精品美日韩| av亚洲精华国产精华| 最新日韩在线视频| 色综合网色综合| 一区二区三区四区不卡在线 | 国产精品电影一区二区| 99在线精品观看| 亚洲欧美aⅴ...| 欧美体内she精高潮| 丝袜亚洲另类欧美| 欧美成人三级电影在线| 久久99精品久久久| 久久久久久9999| 成人综合婷婷国产精品久久蜜臀| 国产色综合久久| 91在线视频播放| 亚洲国产视频一区二区| 欧美一区二区三区男人的天堂| 美女尤物国产一区| 久久久99久久精品欧美| 成人综合婷婷国产精品久久蜜臀| ●精品国产综合乱码久久久久| 色94色欧美sute亚洲13| 亚洲成av人在线观看| 精品美女被调教视频大全网站| 国产精品99久久久久久似苏梦涵| 国产精品乱人伦| 在线免费观看不卡av| 蜜桃精品视频在线|