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

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

?? ch11-1.c

?? 單片機接口技術(C51版)例程源代碼
?? C
字號:
//5045的底層操作程序,

#include <stdio.h>
#include <intrins.h>
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int  uint;

#define WREN_INST    0x06     //寫使能控制字       Write enable latch instruction (WREN)
#define WRDI_INST    0x04     //寫禁能控制字       Write disable latch instruction (WRDI)
#define WRSR_INST    0x01     //寫狀態寄存器控制字 Write status register instruction (WRSR)
#define RDSR_INST    0x05     //讀狀態寄存器控制字 Read status register instruction (RDSR)
#define WRITE_INST   0x02     //寫存儲器控制字     Write memory instruction (WRITE)
#define READ_INST    0x03     //讀存儲器控制字     Read memory instruction (READ)
#define MAX_POLL     0x99     //最大查詢周期控制字 Maximum number of polls
#define WDT020       0x20     //看門狗超時周期200ms
#define WDT060       0x10     //看門狗超時周期600ms
#define WDT140       0x00     //看門狗超時周期1400ms
#define WDT000       0x30     //關閉看門狗
#define BP0          0x00     //沒有保護的空間
#define BP1          0x40       //保護0180--01ff
#define BP2          0x80       //保護0100--01ff
#define BP3          0xc0       //保護0000--01ff



//******************************************
//定義對5045的操作方式
#define CONTROL1    WDT000|BP0  //實際控制值一(關閉看門狗 沒有保護的空間)
#define CONTROL2    WDT140|BP3  //實際控制值二(看門狗超時周期1400ms 保護0000--01ff)
#define CONTROL3    WDT140|BP0  //實際控制值三(看門狗超時周期1400ms 沒有保護的空間)
//******************************************
//定義管腳
sbit SCK=P3^4;                //時鐘
sbit SI=P3^5;                 //CPU--->5045
sbit SO=P3^5;                 //5045-->CPU
sbit CS=P3^6;                 //片選
//******************************************



//***************************************************************************
//5045底層操作程序,外部函數聲明
extern void Wrdi_Cmd(void);                   //寫禁能,在非正常的操作中斷后,主程序在初始化時最好執行一次此操作
extern void Wrsr_Cmd(uchar control_Byte);     //寫狀態寄存器
extern void Byte_Write(uint e2_add,uchar a);  //寫入一字節
extern void Page_Write_FromIdata(uint e2_add,uchar idata *pt);    //寫入1頁,數據來源:內部的RAM
extern void Page_Write_FromXdata(uint e2_add,uchar xdata *pt);    //寫入1頁,數據來源:外部的RAM
extern uchar Byte_Read(uint e2_add);                              //從5045的指定地址讀出1字節
extern void Sequ_Read_ToXdata(uint e2_add,uchar xdata *pt,uint data_amount);   //從5045連續讀取數據.數據存放:內部的RAM
extern void Sequ_Read_ToIdata(uint e2_add,uchar idata *pt,uchar data_amount);  //從5045連續讀取數據.數據存放:外部的RAM
//***************************************************************************


//*****************************************
//功能演示,在實際用的時候把這段注釋掉
void main(void)
{       uint add=0X0000;
        uchar a=0x12;
        uchar idata *pt;
        uchar xdata *pt1;
        uchar data temp[16]={8,8,8,7,8,1,4,3,8,6,9,4,3,6,1,9};
        uchar data temp1[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
        uchar xdata temp2[16]={4,5,6,7,8,1,4,3,8,6,9,4,3,6,1,9};
        uchar xdata temp3[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

        Wrdi_Cmd();                     //復位寫使能
        Wrsr_Cmd(CONTROL1);             //設置5045的工作狀態

        Byte_Write(add,0x90);           //字節寫
        a=Byte_Read(add);               //字節讀
        pt=&temp[0];
        Page_Write_FromIdata(add,pt);   //頁寫
        pt=&temp1[0];
        Sequ_Read_ToIdata(add,pt,16);   //連續讀

        pt1=&temp2[0];
        Page_Write_FromXdata(add,pt1);
        pt1=&temp1[0];
        Sequ_Read_ToXdata(add,pt1,16);
        while(1);
}
//*****************************************




//******************************************
//輸出一個字節
//入口:一個uchar形變量
//出口:無
static void OutByte(uchar ch)
{
     uchar i=8;
     do
     {
          SCK=0;
          SI=(bit)(ch&0x80);        //強制取為位變量,輸出
          ch=ch<<1;                 //右移一位
          SCK=1;
     }
     while(--i);
     SI=0;
}
//******************************************


//******************************************
//輸入一個字節
//入口:沒有入口
//出口:一個uchar形變量
static uchar InByte(void)
{
    uchar i,a=0;
    SO=1;
    for (i=8;i>0;i--)
    {
        SCK=1;
        SCK=0;
        a<<=1;
    if(SO)
    a|=0x01;
    }
    return(a);
}
//*****************************************


//*****************************************
//讀狀態寄存器
//入口:無
//出口:寄存器狀態
static uchar Rdsr_cmd(void)
{
        uchar a;
        SCK=0;
        CS=0;
        OutByte(RDSR_INST);     //發出讀寄存器命令
        a=InByte();             //讀入
        SCK=0;
        CS=1;
        return(a);
}
//*****************************************


//*****************************************
//測試寫周期是否結束,超時后測試不成功也返回
//入口:無
//出口:無
static void Wip_Poll(void)
{
       uchar temp,i=MAX_POLL;
       do
       {
              temp=Rdsr_cmd();
              ACC=temp;
              if(!(ACC&0x01))
              break;              //結束后返回
       }
       while(--i);                //超時也返回
}
//*****************************************


//*****************************************
//設置寫使能,在執行寫入操作之前要先將寫使能控制位置位
//入口:無
//出口:無
static void Wren_Cmd(void)
{
        SCK=0;
        CS=0;
        OutByte(WREN_INST);
        SCK=0;
        CS=1;
}
//*****************************************


//*****************************************
//寫禁能,在非正常的操作中斷后,主程序在初始化時最好執行一次此操作
//入口:無
//出口:無
extern void Wrdi_Cmd(void)
{
        SCK=0;
        CS=0;
        OutByte(WRDI_INST);
        SCK=0;
        CS=1;
}
//*****************************************


//*****************************************
//寫狀態寄存器
//入口:控制字
//出口:無
extern void Wrsr_Cmd(uchar control_Byte)
{
        Wren_Cmd();
        SCK=0;
        CS=0;
        OutByte(WRSR_INST);
        OutByte(control_Byte);
        SCK=0;
        CS=1;
        Wip_Poll();
}
//*****************************************



//*****************************************
//寫入數據之前的預操作
//入口:5045的地址
//出口:無
static void Pre_Write(uint c1)
{
        Wren_Cmd();
        SCK=0;
        CS=0;
        OutByte(WRITE_INST|(0x08&((uchar)(c1/256))<<3));  //將地址的第9位(D9)傳送到命令字中,隨命令字一起發出
        OutByte((uchar)c1);                               //發送地址的低8位
}
//*****************************************



//*****************************************
//寫入一字節
//入口:5045的地址,待寫數據
//出口:無
extern void Byte_Write(uint e2_add,uchar a)
{
        Pre_Write(e2_add);         //預操作
        OutByte(a);                //發出數據
        SCK=0;
        CS=1;
        Wip_Poll();                //等待寫入操作完成
}
//*****************************************



//*****************************************
//寫入1頁,數據來源:內部的RAM
//入口:5045的地址,指向內部RAM的指針
//出口:無
extern void  Page_Write_FromIdata(uint e2_add,uchar idata *pt)
{
        uchar i;
        Pre_Write(e2_add);         //預寫
        for (i=16;i>0;--i,pt++)    //連續寫入16字節(5045一頁為16字節)
              OutByte(*pt);
        SCK=0;
        CS=1;
        Wip_Poll();                //等待寫入操作完成
}
//*****************************************


//*****************************************
//寫入1頁,數據來源:外部的RAM
//入口:5045的地址,指向外部RAM的指針
//出口:無
extern void  Page_Write_FromXdata(uint e2_add,uchar xdata *pt)
{
        uchar i;
        Pre_Write(e2_add);        //預寫
        for (i=16;i>0;--i,pt++)   //連續寫入16字節(5045一頁為16字節)
              OutByte(*pt);
        SCK=0;
        CS=1;
        Wip_Poll();               //等待寫入操作完成
}
//*****************************************


//*****************************************
//讀數據之前的預操作
//入口:5045的地址
//出口:無
static void Pre_Read(uint c1)
{
        SCK=0;
        CS=0;
        OutByte(READ_INST|(0x08&((uchar)(c1/256))<<3));  //將地址的第9位(D9)傳送到命令字中,隨命令字一起發出
        OutByte((uchar)c1);                              //發送地址的低8位
}
//*****************************************


//*****************************************
//從5045的指定地址讀出1字節
//入口:5045的地址
//出口:數據
extern uchar Byte_Read(uint e2_add)
{
        uchar a;
        Pre_Read(e2_add);     //預讀取
        a=InByte();           //讀出數據
        SCK=0;
        CS=1;
        return(a);
}
//*****************************************



//*****************************************
//從5045連續讀取數據.數據存放:內部的RAM
//入口:5045的地址,指向內部RAM的指針,數據的個數
//出口:無
extern void Sequ_Read_ToXdata(uint e2_add,uchar xdata *pt,uint data_amount)
{
        uint i;
        Pre_Read(e2_add);                       //預讀取
        for (i=data_amount;i>0;--i,pt++)
             *pt=InByte();                      //讀出數據
        SCK=0;
        CS=1;
}
//*****************************************



//*****************************************
//從5045連續讀取數據.數據存放:外部的RAM
//入口:5045的地址,指向外部RAM的指針,數據的個數
//出口:無
extern void Sequ_Read_ToIdata(uint e2_add,uchar idata *pt,uchar data_amount)
{
        uchar i;
        Pre_Read(e2_add);
        for (i=data_amount;i>0;--i,pt++)
             *pt=InByte();
        SCK=0;
        CS=1;
}
//*****************************************



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜国产日韩另类美女| 欧美性受xxxx黑人xyx| caoporm超碰国产精品| 欧美一区二区三区视频| 一区二区三区在线免费| 一本大道综合伊人精品热热| 亚洲欧美影音先锋| 播五月开心婷婷综合| 国产精品久久久久影院色老大| 丁香桃色午夜亚洲一区二区三区| 欧美电影免费观看高清完整版在线| 丝袜美腿亚洲综合| 精品国产凹凸成av人导航| 看国产成人h片视频| 精品国产乱码久久久久久浪潮| 亚洲精品一区在线观看| 成人午夜电影小说| 国产精品久久久久aaaa| eeuss国产一区二区三区| 亚洲午夜久久久| 欧美日韩一卡二卡| 午夜a成v人精品| 欧美一级黄色录像| 狠狠色狠狠色综合日日91app| 久久免费国产精品| 99精品在线免费| 日本不卡不码高清免费观看| 欧美成人性战久久| 豆国产96在线|亚洲| 精品国产乱码久久久久久浪潮| 久久精品国产亚洲a| 国产片一区二区| 欧美中文字幕一二三区视频| 免费成人在线播放| 国产精品久久久久桃色tv| 一本大道综合伊人精品热热| 男女性色大片免费观看一区二区 | 日韩久久免费av| 韩国三级在线一区| 亚洲欧美自拍偷拍色图| 欧美在线不卡一区| 国产成人精品影视| 一区二区三区精品在线| 精品入口麻豆88视频| 97精品国产露脸对白| 免费一区二区视频| 亚洲国产电影在线观看| 欧美日韩精品专区| 97久久超碰国产精品| 日本不卡1234视频| 亚洲日本va午夜在线电影| 欧美色偷偷大香| 国产成人免费网站| 日本免费在线视频不卡一不卡二| 日韩欧美综合一区| 欧美日韩视频在线一区二区| 国产福利91精品一区| 亚洲成人777| 亚洲免费在线视频| 2020日本不卡一区二区视频| 色综合天天性综合| 视频一区二区国产| 亚洲欧美另类久久久精品2019| 日韩视频在线你懂得| 91在线云播放| 国产精品66部| 亚洲精品高清在线| 中文一区一区三区高中清不卡| 欧美性做爰猛烈叫床潮| 成人一区二区三区中文字幕| 免费成人在线视频观看| 亚洲国产日韩a在线播放| 亚洲色图.com| 欧美国产1区2区| 欧美大肚乱孕交hd孕妇| 国产福利一区在线| 精品写真视频在线观看| 亚洲www啪成人一区二区麻豆| 国产精品短视频| 日韩欧美综合一区| 制服视频三区第一页精品| 色欧美乱欧美15图片| 国产激情视频一区二区三区欧美| 美国十次了思思久久精品导航| 亚洲成人精品影院| 国产精品初高中害羞小美女文| 精品国产在天天线2019| 91精品国产麻豆| 欧美日韩中文国产| 欧美一区二区三区系列电影| 欧美乱妇一区二区三区不卡视频| 欧美色大人视频| 欧美精品色综合| 在线播放国产精品二区一二区四区| 欧美亚洲日本一区| 777亚洲妇女| 日韩欧美一区中文| 精品久久国产字幕高潮| 日韩一区二区精品| 日韩欧美在线观看一区二区三区| 欧美哺乳videos| 欧美一区二区高清| 亚洲国产精品国自产拍av| 国产精品乱码久久久久久| 国产亚洲精品aa午夜观看| 国产婷婷色一区二区三区在线| 久久精品免视看| 国产精品免费久久久久| 一区二区三区在线免费| 日韩精品高清不卡| 久久激情五月激情| 99天天综合性| 欧美无砖专区一中文字| 911国产精品| 日韩一区二区免费在线电影| www激情久久| 国产精品不卡视频| 亚洲欧美另类图片小说| 日韩va欧美va亚洲va久久| 国产激情91久久精品导航| 97se亚洲国产综合自在线观| 精品视频一区 二区 三区| 日韩视频在线永久播放| 欧美国产日韩a欧美在线观看| 国产视频一区在线播放| 亚洲天堂av老司机| 爽爽淫人综合网网站| 亚洲国产精品一区二区久久| 国产精选一区二区三区| 91香蕉视频污| 欧美夫妻性生活| 中文字幕一区二区三区四区 | 午夜影院久久久| 国内精品国产成人国产三级粉色| 不卡的电视剧免费网站有什么| 91福利在线免费观看| 日韩欧美国产精品| 国产精品青草久久| 亚洲h在线观看| 高清在线观看日韩| 欧美一区二区三区小说| 一区二区三区精密机械公司| 狠狠色丁香九九婷婷综合五月| 91最新地址在线播放| 国产三级久久久| 日韩福利视频导航| 色综合久久久久网| 久久久久国色av免费看影院| 亚洲一区二区三区免费视频| 国产伦理精品不卡| 欧美成人猛片aaaaaaa| 国产三级精品三级| 日韩精品久久久久久| 色婷婷久久综合| 国产精品日产欧美久久久久| 精品一二线国产| 欧美精品亚洲二区| 亚洲精品视频在线看| 国产综合色产在线精品| 欧美一区二区三区视频在线| 中文字幕永久在线不卡| 国产精品白丝jk白祙喷水网站| 欧美日韩成人综合在线一区二区| 中文字幕日韩一区二区| 国产精品一级片| 欧美日韩精品一区视频| 中文字幕一区二区三区四区 | 亚洲青青青在线视频| 国产精品一二三四区| 日韩一区二区三区视频在线观看| 亚洲在线免费播放| 97久久超碰精品国产| 国产精品午夜在线观看| 国产老妇另类xxxxx| 91蝌蚪porny| 亚洲午夜电影在线观看| 色久优优欧美色久优优| 久久免费的精品国产v∧| 国产精品中文字幕日韩精品| 日韩视频在线永久播放| 日韩国产精品久久| 欧美伊人精品成人久久综合97| 亚洲免费av在线| 99re在线精品| 国产精品护士白丝一区av| 成人性色生活片| 国产欧美精品国产国产专区 | 欧美三级资源在线| 亚洲一区在线看| 日韩视频免费直播| 毛片av一区二区| 精品国精品国产尤物美女| 成人丝袜高跟foot| 中文字幕欧美区| 99国产精品久久久久久久久久久| 国产精品激情偷乱一区二区∴| 99久久国产综合精品色伊| 亚洲美女精品一区| 欧美日韩午夜在线视频| 免费不卡在线视频|