新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于X5045的看門狗電路及51讀寫x5045存儲器的程序

        基于X5045的看門狗電路及51讀寫x5045存儲器的程序

        作者: 時間:2012-08-03 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/171073.htm

        void wren_cmd()
        {

        CS = 0;
        outbyt(WREN); // 傳送寫入使能指令
        CS = 1;
        }

        void wrdi_cmd()
        {
        CS = 0;
        outbyt(WRDI); // 傳送寫入禁止指令
        CS = 1;
        }

        unsigned char rdsr_cmd()
        {
        unsigned char status;
        CS = 0;
        outbyt(RDSR); // 傳送狀態寄存器讀取指令
        status = inbyt(); // 讀取狀態寄存
        CS = 1;
        return status;
        }
        void wip_poll()
        {
        unsigned char i; // 設置最大的查詢次數

        //// 如果WIP位為'1'并且未達到最大查詢次數, 則繼續查詢
        //// 如果WIP位為'0', 則寫入周期完成, 返回
        for(i = 0; i MAX_POLL; i++)
        {
        if(rdsr_cmd() 0x01) // 讀取狀態寄存器
        {
        continue;
        }
        return;
        }
        }

        void wrsr_cmd()
        {
        CS = 0;
        outbyt(WRSR); // 傳送狀態寄存器寫入指令
        outbyt(STATUS_REG); // 傳送要寫入的數據
        CS = 1;
        wip_poll(); // 檢測寫入進度
        }

        void byte_write(unsigned int addr,unsigned char dat)
        {
        wren_cmd();
        CS = 0;
        if(addr 0x100)
        outbyt(WRITE | 0x08); //傳送寫入指令和地址最高位1
        else
        outbyt(WRITE); // 傳送寫入指令和地址最高位0
        outbyt(addr); // 傳送地址低字節
        outbyt(dat); // 傳送數據字節

        CS = 1;
        wip_poll(); // 檢測寫入進度
        }
        unsigned char byte_read(unsigned int addr)
        {
        unsigned char read_data;
        CS = 0;
        if(addr 0x100)
        outbyt(READ | 0x08);// 傳送讀取指令和地址最高位1
        else
        outbyt(READ); // 傳送讀取指令和地址最高位0

        outbyt(addr); // 傳送地址低字節

        read_data = inbyt(); // 讀取字節
        CS = 1;
        return read_data;
        }
        void rst_wdog()
        {
        CS = 0;
        _nop_();_nop_();
        CS = 1;
        }
        void init_serialcomm(void)
        { TMOD = 0x21; // 定時器1工作于8位自動重載模式, 用于產生波特率
        // 定時器0工作于16位模式, 用于定時

        TH1 = 0xFD; // 波特率9600
        TL1 = 0xFD;
        SCON = 0x50; // 設定串行口工作方式
        PCON = 0xef; // 波特率不倍增
        TR1 = 1; // 啟動定時器1
        }

        DIY機械鍵盤相關社區:機械鍵盤DIY




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永丰县| 淅川县| 宁武县| 澜沧| 十堰市| 陇南市| 泾源县| 疏附县| 姚安县| 德保县| 分宜县| 抚远县| 襄汾县| 昌都县| 明溪县| 轮台县| 湖南省| 上林县| 襄汾县| 青神县| 普兰店市| 澄城县| 新沂市| 精河县| 满洲里市| 江孜县| 中西区| 平阴县| 昆明市| 军事| 沁水县| 开封县| 横峰县| 鹰潭市| 岢岚县| 石泉县| 东兴市| 繁昌县| 东光县| 错那县| 含山县|