|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
急!如何讓MCU與外部RAM進(jìn)行讀寫(xiě)操作。! |
| 作者:zhuwuxin 欄目:MCU技術(shù) |
我只知道設(shè)置MCU到外部RAM的 RD,WR,CS1等。 現(xiàn)在的問(wèn)題是在設(shè)置好這些后,如何讀寫(xiě)?(通過(guò)IO口,用C51寫(xiě)) 如我這里要把AA寫(xiě)到RAM里0000地址里, 請(qǐng)幫我寫(xiě)一下這個(gè),用C51寫(xiě),謝謝 |
| 2樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/10 14:57:00 發(fā)布:
對(duì)了,我的MCU是W78E52B,RAM是62256 對(duì)了,我的MCU是W78E52B,RAM是62256 |
|
| 3樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/10 16:00:00 發(fā)布:
知道且有空的大哥大姐們幫忙一下啦,拜托了。。 |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2006/3/10 16:42:00 發(fā)布:
使用指針 #define x_0000 (*((volatile unsigned CHAR xdata *)0x0000)) 以后用x_0000就可以了,當(dāng)然,這個(gè)名字你可以自己隨便取。 如 x_0000=0xAA; 或者弄成像數(shù)組的樣子,用哪個(gè)地址,就代入哪個(gè): #define x_0000 ((volatile unsigned CHAR xdata *)0x0000) x_0000[0]= // 訪問(wèn)地址0 x_0000[1]= //訪問(wèn)地址1 x_0000[0x50]= //訪問(wèn)地址0x50 |
|
| 5樓: | >>參與討論 |
| 作者: tjjack 于 2006/3/10 16:48:00 發(fā)布:
參考 void readram(unsigned SHORT len1,unsigned CHAR *EpBuf,unsigned SHORT len2) { unsigned SHORT i,j; j = len1; MCU_D12CS = 1; MCU_RAMCS = 0; for(i=0;i<len2;i++,j++) { EpBuf[i]=ad_data[j]; //把存儲(chǔ)在外存中的數(shù)據(jù)放到發(fā)送緩存區(qū)中 } MCU_RAMCS = 1; MCU_D12CS = 0; } |
|
| 6樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/10 18:21:00 發(fā)布:
那可是我讀出來(lái)怎么不對(duì)呀? TO:computer00 那可是我讀出來(lái)怎么不對(duì)呀? 我是這樣讀的, #define x_0000 (*((volatile unsigned CHAR xdata *)0x0000)) unsigned CHAR idata Buf; Buf = 0xaa; Buf ^= x_0000; if(Buf) { P1 &= 0x00; } else if(!Buf) { P1 &= 0x0f; } 結(jié)果P1口一直是0,唉,也就是Buf與x_0000里的數(shù)不會(huì)相等? 呵,第二個(gè)我還沒(méi)試! |
|
| 7樓: | >>參與討論 |
| 作者: computer00 于 2006/3/10 18:42:00 發(fā)布:
暈菜……不知道你的程序是什么意思……改下再試: #define x_0000 (*((volatile unsigned CHAR xdata *)0x0000)) unsigned CHAR idata Buf; x_0000=0xAA; //將0xAA寫(xiě)入 if(x_0000==0xAA) //再讀出,看它是否為0xAA { P1 = 0x00; } else { P1 = 0x0f; } |
|
| 8樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/10 18:46:00 發(fā)布:
怎么還是不行了?? #define x_0000 (*((volatile unsigned CHAR xdata *)0x0000)) unsigned CHAR idata Buf; void Work_RAM() { LP1 = 1; P2 &= 0x1f; Write = 1; Read = 0; PG0 = 1; x_0000 = 0xaa; Write = 0; Read = 1; Buf = 0xaa; Buf ^= x_0000; if(Buf) { P1 &= 0x00; } else if(!Buf) { P1 &= 0x0f; } } 是這個(gè),唉,幫我看看哪出錯(cuò)了 P1一直都是0,可我不是把0Xaa分別放在外部存儲(chǔ)器x_0000和內(nèi)部存儲(chǔ)器了,是不是不能這樣比。我是用異或的 |
|
| 9樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/10 18:48:00 發(fā)布:
呵呵,是這樣的 我只是想知道發(fā)送到外面RAM里的數(shù),然后再讀出來(lái),看看發(fā)出去的對(duì)不對(duì)!! |
|
| 10樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/10 19:01:00 發(fā)布:
哇,照你的寫(xiě)竟不對(duì)! #define x_0000 (*((volatile unsigned CHAR xdata *)0x0000)) x_0000=0xAA; //將0xAA寫(xiě)入 if(x_0000==0xAA) //再讀出,看它是否為0xAA { P1 = 0x00; } else { P1 = 0x0f; } 這樣子P1竟是0x0f?? 難道是我的讀或?qū)懺O(shè)置有問(wèn)題! |
|
| 11樓: | >>參與討論 |
| 作者: computer00 于 2006/3/10 19:08:00 發(fā)布:
可能你的硬件有問(wèn)題吧。 我用軟件仿真,完全正確。P0輸出為0。 |
|
| 12樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/10 19:43:00 發(fā)布:
能說(shuō)說(shuō)你的設(shè)置嗎?? 寫(xiě)你的設(shè)置!! |
|
| 13樓: | >>參與討論 |
| 作者: zhuwuxin 于 2006/3/11 13:46:00 發(fā)布:
我寫(xiě)的可能是時(shí)序上有問(wèn)題 讀出一直都是錯(cuò)的,呵,一直沒(méi)用51寫(xiě),對(duì)于他的時(shí)序太陌生了. |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |