1樓:匿名使用者
protues 庫中,如果你沒有新增特殊庫,自帶庫的51是沒有e2prom的。。。。
2樓:匿名使用者
#include
#include
#define uchar unsigned charsbit sda=p2^0;
sbit scl=p2^1;
sbit duan=p2^6;
sbit wei=p2^7;
uchar smg_duan=;
void delay()
void start()
void stop()
void ack()
void noack()
void iicwr_byte(uchar dat)else
dat=dat<<1;
delay();
scl=1;
delay();
scl=0;
delay();
} sda=1;
delay();
}uchar iicre_byte()
scl=0;
delay();
}return dat;
}void init()
void iicwrite_byte(uchar add,uchar dat)
uchar iicread_byte(uchar add)void main()
51微控制器 用eeprom掉電儲存 兩位數碼管秒錶 數碼管無法正常顯示
3樓:找她的那個他
整體問題不大,就是在中斷中使用write_add()會有機會和在主迴圈中的read_add()相遇,那就會導致讀取失敗,建議加入應答判斷,當然重新整理快影響不大
不知樓主在單獨執行儲存程式時是怎麼除錯的,還有來回閃的頻率是低於一秒的麼?
樓主可以試下在關閉中斷的情況下,通過在主迴圈中通過延時函式,先寫入,再讀出,然後顯示,讓它迴圈顯示看看是否有錯,如果顯示不正常,那就是儲存的時序沒弄好,
比如在write_add()函式最後面加上1ms的延時,確儲存儲晶片儲存資料,防止寫完後接著讀出錯
樓主還可以換個別的儲存地址試一下看看,
確保接線正確
4樓:匿名使用者
大概看了一下
不要在定時器中斷裡面呼叫write_add函式,請在main函式裡面呼叫。
5樓:匿名使用者
做過電子鐘掉電儲存,有兩個問題1.頻繁讀寫eeprom,秒級的話,不用一個月,器件上所有地址都達到讀寫極限。2,執行讀寫操作的過程,佔用機器週期不短。
此時數碼管大約有0.1秒熄滅。
至於中斷函式和主函式的重入警告,可以將write_add(),read_add()內部呼叫的相同的函式,做成兩個內容相同的函式,分開來呼叫。
51微控制器串列埠通訊:把上位機接收的資料在數碼管顯示
6樓:
建議把這幾行**
n=sbuf;while(! ri);ri=0;
sbuf=n;while(! ti);ti=0;
p0=dis[n];
dislay();
改為while(1)
另外,如果是實際製作電路,p0口和數碼管之間的七根連線中間要串入7個電阻才比較好,阻值在幾百歐,例如200~510歐之間。
7樓:匿名使用者
求個程式
求個程式
求個程式
用51微控制器調光,51微控制器pwm調光電路
你的電路構思不太好,目的一樣但是電路構成的方法有很多的,你這種辦法比較耗費元件,並且因為過多的原件而導致可靠性下降。實現你的要求有簡單的辦法,就是採用微控制器產生可控的pwm pwm pulse width modulation 控制 脈衝寬度調製技術。通過對一系列脈衝的寬度進行調製,來等效地獲得所...
51微控制器的pc值怎麼算,51微控制器中如何進行相對定址?pc值怎麼計算?rel又怎麼給
鈺瀟 a 50h sp 50h 51h 30h 52h 50h pc 5030h a 50h sp 50h 因為在程式中,sp減了兩次,後來又加了兩次,在程式最後ret有在返回的時候減了兩次,即地址出棧,故最終結果是50h。51h 30h 52h 50h 因為ret指令返回時,出棧的結果是高地址 5...
51微控制器中按鍵程式用C怎麼寫
這個太簡單了吧,記住寫程式定時器要一直跑,建立一個時基,像個手錶的時間一樣要一直跑,即有time 125us,time 1ms,time 100ms,time 1s,time 1min,time 1hour等時間變數建立時基一直走。其它程式可以分時掃描也可以輪流掃描,不能停留死等,像電腦裡的程式一樣...