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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3098|回復: 4
打印 上一主題 下一主題
收起左側

單片機讀取不了EEPROM內的值

[復制鏈接]
跳轉到指定樓層
樓主
ID:342895 發表于 2018-9-10 16:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
30黑幣
這是我寫的門禁系統的一部分,在輸入門的密碼判斷是否正確時出現了問題,在EEPROM內存儲的是正確的密碼,但好像Coderead()函數并未把密碼讀出并保存在CodeT1等變量內,導致就算我把正確密碼輸入也無法做出我指定的動作,麻煩各位大佬幫忙看看,謝謝。 門禁系統.rar (40.63 KB, 下載次數: 14)

最佳答案

查看完整內容

下載你的程序看了,主要看的是你的I2C程序,和我用的有很大的不同。 我的程序是一直用著的,肯定沒問題,發給你看看——對應的就是你的I2C.c文件內容。 #include"i2c.h" /******************************************************************************* * 函數名 : Delay10us() * 函數功能 : 延時 * 輸入 : 無 * 輸出 : 無 ******************************************************** ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:164602 發表于 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;               
}

回復

使用道具 舉報

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

你好,我看了一下你發的代碼,不過感覺我們兩個的代碼是一樣的啊
回復

使用道具 舉報

地板
ID:342895 發表于 2018-9-11 17:18 | 只看該作者
HC6800-ES-V2.0 發表于 2018-9-11 08:12
下載你的程序看了,主要看的是你的I2C程序,和我用的有很大的不同。
我的程序是一直用著的,肯定沒問題, ...

感謝你的回答,不過不是i2c程序的問題,而是因為我的EEPROM初始化放在了定時器初始化的后面,導致無法將數據正常寫入其中
回復

使用道具 舉報

5#
ID:164602 發表于 2018-9-12 07:22 | 只看該作者
zeng152 發表于 2018-9-11 17:18
感謝你的回答,不過不是i2c程序的問題,而是因為我的EEPROM初始化放在了定時器初始化的后面,導致無法將 ...

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久中文视频 | 国产超碰人人爽人人做人人爱 | 国产视频不卡一区 | 精品久久一| 精品在线看 | 高清国产一区二区 | 国产精品揄拍一区二区 | www四虎影视 | 欧美极品少妇xxxxⅹ免费视频 | 四虎影视一区二区 | 久久国产精品免费一区二区三区 | 先锋资源在线 | www.日韩免费 | 日韩精品在线一区 | 欧美精品一区在线 | 手机看片在线播放 | 免费av一区二区三区 | 国产精品黄 | 91亚洲欧美 | 精品国产一区二区三区性色 | 91精品在线看 | 男女视频免费 | 精品视频一区二区在线观看 | 91久久北条麻妃一区二区三区 | 国产成人精品免费视频大全最热 | 99国产精品99久久久久久 | 久草免费在线视频 | yeyeav| 色综合一区二区三区 | 国产精品av久久久久久毛片 | 国产一区二区在线免费播放 | 午夜黄色| 91亚洲国产亚洲国产 | 亚洲成av人片在线观看 | 日韩免费视频一区二区 | 精品久久久久久国产 | 精品国产一区二区三区观看不卡 | 一级全黄视频 | 国产亚洲人成a在线v网站 | 久久久www成人免费精品 | 午夜一区二区三区 |