|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
我是菜鳥幫忙看看好嗎? |
| 作者:aiqiyishen 欄目:單片機 |
24C04讀寫位數(shù)多了就會出現(xiàn)亂碼,我用的是4K的是不是地址錯了,4K的怎么送。????請各位行家給看看好嗎??? 讀寫子程序如下: ;寫串行E2PROM子程序EEPW ; R3=10100000(命令1010+器件3位地址+讀/寫。 器件地址一個芯片,是000) ; (R4)=片內(nèi)字節(jié)地址 ; (R1)=欲寫數(shù)據(jù)存放地址指針 ; (R7)=連續(xù)寫字節(jié)數(shù)n EEPW: MOV P1,#0FFH CLR P1.0 ;發(fā)開始信號 MOV A,R3 ;送器件地址 ACALL SUBS MOV A,R4 ;送片內(nèi)字節(jié)地址 ACALL SUBS AGAIN: MOV A,@R1 ACALL SUBS ;調(diào)發(fā)送單字節(jié)子程序INC R1 DJNZ R7,AGAIN;連續(xù)寫n個字節(jié) CLR P1.0 ;SDA置0, 準(zhǔn)備送停止信號 ACALL DELAY ;延時以滿足傳輸速率要求 SETB P1.1 ;發(fā)停止信號 ACALL DELAY SETB P1.0 RET SUBS: MOV R0,#08H ;發(fā)送單字節(jié)子程序 LOOP: CLR P1.1 RLC A MOV P1.0,C NOP SETB P1.1 ACALL DELAY DJNZ R0,LOOP ;循環(huán)8次送8個bit CLR P1.1 ACALL DELAY SETB P1.1 REP: MOV C,P1.0 JC REP ;判應(yīng)答到否,未到則等待 CLR P1.1 RET DELAY: NOP NOP RET ;讀串行E2PROM子程序EEPR ;(R1)=欲讀數(shù)據(jù)存放地址指針 ;; R3=10100001(命令1010+器件3位地址+讀/寫。 器件地址一個芯片,是000) ;(R4)=片內(nèi)字節(jié)地址 ;(R7)=連續(xù)讀字節(jié)數(shù) EEPR: MOV P1,#0FFH CLR P1.0 ;發(fā)開始信號 MOV A,R3 ;送器件地址 ACALL SUBS ;調(diào)發(fā)送單字節(jié)子程序 MOV A,R4 ;送片內(nèi)字節(jié)地址 ACALL SUBS MOV P1,#0FFH CLR P1.0 ;再發(fā)開始信號 MOV A,R3 SETB ACC.0 ;發(fā)讀命令 ACALL SUBS MORE: ACALL SUBR MOV @R1,A INC R1 DJNZ R7,MORE CLR P1.0 ACALL DELAY SETB P1.1 ACALL DELAY SETB P1.0 ;送停止信號 RET SUBR: MOV R0,#08H ;接受單字節(jié)子程序 LOOP2: SETB P1.1 ACALL DELAY MOV C,P1.0 RLC A CLR P1.1 ACALL DELAY DJNZ R0,LOOP2 CJNE R7,#01H,LOW SETB P1.0 ;若是最后一個字節(jié)置A=1 AJMP SETOK LOW: CLR P1.0 ;否則置A=0 SETOK: ACALL DELAY SETB P1.1 ACALL DELAY CLR P1.1 ACALL DELAY SETB P1.0 ;應(yīng)答畢,SDA置1 RET |
| 2樓: | >>參與討論 |
| 作者: 廖語嫣 于 2005/1/14 18:00:00 發(fā)布:
匯編語言看不太明白。 * - 本貼最后修改時間:2005-1-14 18:07:48 修改者:廖語嫣 |
|
| 3樓: | >>參與討論 |
| 作者: 廖語嫣 于 2005/1/14 18:05:00 發(fā)布:
我也遇到過類似的問題。 看到你發(fā)了兩個帖子,都沒有人回復(fù)你。你好可憐!我也遇到過類似的問題,當(dāng)時也沒有人管我。 我當(dāng)時用的是24C01。數(shù)據(jù)手冊上寫的是1K(128X8)。本以為是1K的,結(jié)果卻不能用。后來才知道是1K(128X8)比特不是字節(jié)。后來換了個大一點的就好了。 我猜你也是因為這個原因吧。換一個大一點的就可以了。:)等待你的好消息! * - 本貼最后修改時間:2005-1-14 18:08:18 修改者:廖語嫣 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |