新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > X5045組成的看門狗電路及51讀寫x5045存儲(chǔ)器的程序

        X5045組成的看門狗電路及51讀寫x5045存儲(chǔ)器的程序

        作者: 時(shí)間:2011-05-05 來源:網(wǎng)絡(luò) 收藏

        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); // 傳送狀態(tài)寄存器讀取指令
        status = inbyt(); // 讀取狀態(tài)寄存
        CS = 1;
        return status;
        }
        void wip_poll()
        {
        unsigned char i; // 設(shè)置最大的查詢次數(shù)

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

        void wrsr_cmd()
        {
        CS = 0;
        outbyt(WRSR); // 傳送狀態(tài)寄存器寫入指令
        outbyt(STATUS_REG); // 傳送要寫入的數(shù)據(jù)
        CS = 1;
        wip_poll(); // 檢測(cè)寫入進(jìn)度
        }

        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); // 傳送地址低字節(jié)
        outbyt(dat); // 傳送數(shù)據(jù)字節(jié)

        CS = 1;
        wip_poll(); // 檢測(cè)寫入進(jìn)度
        }
        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); // 傳送地址低字節(jié)

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

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

        DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 岳阳市| 崇州市| 台中县| 鄂州市| 海城市| 景宁| 隆安县| 东乡| 武邑县| 昌乐县| 潼关县| 涞源县| 清水河县| 葫芦岛市| 施秉县| 治县。| 文山县| 宁都县| 兴和县| 玉门市| 长顺县| 蓬莱市| 松原市| 西城区| 阿坝县| 余姚市| 大荔县| 漳浦县| 剑河县| 鄂托克前旗| 天祝| 同江市| 海兴县| 茌平县| 乡城县| 威信县| 洛扎县| 得荣县| 旬阳县| 黎平县| 简阳市|