久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 單片機讀取不了EEPROM內的值 [打印本頁]

作者: zeng152    時間: 2018-9-10 16:06
標題: 單片機讀取不了EEPROM內的值
這是我寫的門禁系統的一部分,在輸入門的密碼判斷是否正確時出現了問題,在EEPROM內存儲的是正確的密碼,但好像Coderead()函數并未把密碼讀出并保存在CodeT1等變量內,導致就算我把正確密碼輸入也無法做出我指定的動作,麻煩各位大佬幫忙看看,謝謝。 門禁系統.rar (40.63 KB, 下載次數: 14)

作者: HC6800-ES-V2.0    時間: 2018-9-10 16:06
下載你的程序看了,主要看的是你的I2C程序,和我用的有很大的不同。
我的程序是一直用著的,肯定沒問題,發給你看看——對應的就是你的I2C.c文件內容。
#include"i2c.h"
/*******************************************************************************
* 函數名         : Delay10us()
* 函數功能                   : 延時
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/

void Delay10us()
{
        unsigned char a,b;
        for(b=1;b>0;b--)
                for(a=2;a>0;a--);

}
/*******************************************************************************
* 函數名         : I2cStart()
* 函數功能                   : 起始信號:在SCL時鐘信號在高電平期間SDA信號產生一個下降沿
* 輸入           : 無
* 輸出                  : 無
* 備注           : 起始之后SDA和SCL都為0
*******************************************************************************/

void I2cStart()
{
        SDA=1;
        Delay10us();
        SCL=1;
        Delay10us();//建立時間是SDA保持時間>4.7us
        SDA=0;
        Delay10us();//保持時間是>4us
        SCL=0;                       
        Delay10us();               
}
/*******************************************************************************
* 函數名         : I2cStop()
* 函數功能                   : 終止信號:在SCL時鐘信號高電平期間SDA信號產生一個上升沿
* 輸入           : 無
* 輸出                  : 無
* 備注           : 結束之后保持SDA和SCL都為1;表示總線空閑
*******************************************************************************/

void I2cStop()
{
        SDA=0;
        Delay10us();
        SCL=1;
        Delay10us();//建立時間大于4.7us
        SDA=1;
        Delay10us();               
}
/*******************************************************************************
* 函數名         : I2cSendByte(unsigned char num)
* 函數功能                   : 通過I2C發送一個字節。在SCL時鐘信號高電平期間,保持發送信號SDA保持穩定
* 輸入           : num
* 輸出                  : 0或1。發送成功返回1,發送失敗返回0
* 備注           : 發送完一個字節SCL=0,SDA=1
*******************************************************************************/

unsigned char I2cSendByte(unsigned char dat)
{
        unsigned char a=0,b=0;//最大255,一個機器周期為1us,最大延時255us。               
        for(a=0;a<8;a++)//要發送8位,從最高位開始
        {
                SDA=dat>>7;         //起始信號之后SCL=0,所以可以直接改變SDA信號
                dat=dat<<1;
                Delay10us();
                SCL=1;
                Delay10us();//建立時間>4.7us
                SCL=0;
                Delay10us();//時間大于4us               
        }
        SDA=1;
        Delay10us();
        SCL=1;
        while(SDA)//等待應答,也就是等待從設備把SDA拉低
        {
                b++;
                if(b>200)         //如果超過2000us沒有應答發送失敗,或者為非應答,表示接收結束
                {
                        SCL=0;
                        Delay10us();
                        return 0;
                }
        }
        SCL=0;
        Delay10us();
        return 1;               
}
/*******************************************************************************
* 函數名         : I2cReadByte()
* 函數功能                   : 使用I2c讀取一個字節
* 輸入           : 無
* 輸出                  : dat
* 備注           : 接收完一個字節SCL=0,SDA=1.
*******************************************************************************/

unsigned char I2cReadByte()
{
        unsigned char a=0,dat=0;
        SDA=1;                        //起始和發送一個字節之后SCL都是0
        Delay10us();
        for(a=0;a<8;a++)//接收8個字節
        {
                SCL=1;
                Delay10us();
                dat<<=1;
                dat|=SDA;
                Delay10us();
                SCL=0;
                Delay10us();
        }
        return dat;               
}


作者: zeng152    時間: 2018-9-11 16:32
HC6800-ES-V2.0 發表于 2018-9-11 08:12
下載你的程序看了,主要看的是你的I2C程序,和我用的有很大的不同。
我的程序是一直用著的,肯定沒問題, ...

你好,我看了一下你發的代碼,不過感覺我們兩個的代碼是一樣的啊
作者: zeng152    時間: 2018-9-11 17:18
HC6800-ES-V2.0 發表于 2018-9-11 08:12
下載你的程序看了,主要看的是你的I2C程序,和我用的有很大的不同。
我的程序是一直用著的,肯定沒問題, ...

感謝你的回答,不過不是i2c程序的問題,而是因為我的EEPROM初始化放在了定時器初始化的后面,導致無法將數據正常寫入其中
作者: HC6800-ES-V2.0    時間: 2018-9-12 07:22
zeng152 發表于 2018-9-11 17:18
感謝你的回答,不過不是i2c程序的問題,而是因為我的EEPROM初始化放在了定時器初始化的后面,導致無法將 ...

哦,找到問題就好,謝謝你將解決的情況回復我,我也學習了。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品一区二区三区在线播放 | 亚洲一区二区三区欧美 | 性高朝久久久久久久3小时 av一区二区三区四区 | 日日日日操| 人人插人人 | 日韩在线观看一区二区三区 | 91综合网 | 免费在线黄色av | 久久久入口 | 亚洲免费在线观看 | 亚洲一区二区中文字幕 | 欧美不卡一区 | 99视频免费在线 | 欧美亚洲国产成人 | 久久日韩精品一区二区三区 | 国产午夜精品一区二区 | 国内精品视频一区二区三区 | 国产成人精品一区二区三区四区 | 中文字幕第一页在线 | 精品久久香蕉国产线看观看亚洲 | 亚洲伊人久久综合 | 久久精品在线 | 少妇一级淫片aaaaaaaaa | 久久成人av| 九七午夜剧场福利写真 | 久久一区精品 | 欧美日韩精品综合 | 日韩影音 | 自拍偷拍第一页 | 男人天堂网av | 国产成人高清 | 亚洲成人激情在线观看 | 欧美高清成人 | 国产网站在线播放 | 久久精品国产一区 | 久久久成人精品 | 中文字幕在线欧美 | 看av在线 | 午夜精品91 | 欧美h版 | 成人在线精品 |