新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STC單片機(jī)外擴(kuò)RAM及8255需要注意的問(wèn)題

STC單片機(jī)外擴(kuò)RAM及8255需要注意的問(wèn)題

作者: 時(shí)間:2012-08-24 來(lái)源:網(wǎng)絡(luò) 收藏

因?yàn)橐粋€(gè)小小的疏忽會(huì)讓人陷入僵局(分享給用STC89C52單片機(jī)的同行們,不要再次在此類(lèi)問(wèn)題上浪費(fèi)不必要時(shí)間):

今晚與以往一樣,還是為那個(gè)一直解不開(kāi)的問(wèn)題愁眉苦腦著,其它的材料也已經(jīng)搜了上百份,理論對(duì)的已經(jīng)不能再對(duì)了,但是在做起來(lái)就是沒(méi)反應(yīng)。以前花了10元買(mǎi)了一片,為了實(shí)現(xiàn)它的操作,搜了大量資料,終于明白原來(lái)是用到類(lèi)似外擴(kuò)的程序,于是慢慢的搞懂了外擴(kuò)的時(shí)序以及程序,自己試寫(xiě)了一個(gè),下載進(jìn)去,令我出乎意料的時(shí),竟然一點(diǎn)反應(yīng)也沒(méi)有,第一個(gè)懷疑的就是可能硬件設(shè)置出了問(wèn)題了吧,于是重新設(shè)計(jì)了一個(gè),繼續(xù)把程序下載進(jìn)去,令我失望的還是那個(gè)結(jié)局。我不得不懷疑可能是程序出了問(wèn)題了,于是到圖書(shū)館把所有用C語(yǔ)言編程的課本借回來(lái),精讀了所有外擴(kuò)這一塊。終于把程序搞的沒(méi)問(wèn)題了,很自信的又寫(xiě)了一個(gè),下載進(jìn)去,竟然還是那個(gè)結(jié)局,我又不得不懷疑難道這一塊必須用匯編才行嗎,我對(duì)匯編可是一點(diǎn)也不懂啊,可是看了很多資料這個(gè)程序,用匯編寫(xiě)的外擴(kuò)程序都有對(duì)應(yīng)的C語(yǔ)言代碼,C語(yǔ)言代碼百分之百可行啊,一時(shí)陷入了僵局,一僵就是兩個(gè)月,每天開(kāi)電腦的第一件事就是找資料找資料。

最后的一個(gè)月又開(kāi)始按照原來(lái)的思路重新布置了一下硬件,希望能有奇跡發(fā)生,最后還是失望,每次都想撂下這一塊但總是沒(méi)舍得,幾次試驗(yàn),最后我懷疑應(yīng)該是STC89C52有問(wèn)題吧,但對(duì)自己的懷疑又很快作了否定。為什么其他所有的51單片機(jī)都能實(shí)現(xiàn)這個(gè)功能,這個(gè)宏晶公司生產(chǎn)的STC就不行呢,難道有什么特殊地方嗎。一時(shí)不知所措,還是絞盡腦汁來(lái)證明這類(lèi)片子確實(shí)有問(wèn)題,終于想了很多方法,最能確定額問(wèn)題存在的就是用DAC0832雙緩沖方式和用外部中斷的負(fù)跳變沿方式來(lái)觸發(fā)中斷并確定有高向低的電平是否的存在,猜想與試驗(yàn)完全相符。

終于確定是片子的原因,既然找不出來(lái),以后還是不想再研究這方面的原因了,還是繼續(xù)安安穩(wěn)穩(wěn)的學(xué)我的AVR單片機(jī)吧,終于把這塊放棄了,但是每次開(kāi)電腦好似習(xí)慣了這三個(gè)月的一個(gè)動(dòng)作,就是到www.51hei.com找技術(shù)文檔看。今晚的一個(gè)偶然的機(jī)會(huì)看了看STC89C52的官方中文資料,一個(gè)讓人都不懂的地方,也經(jīng)常被略過(guò)去的方引起了我的注意。就是在文檔的中部講到“禁止內(nèi)部擴(kuò)展的EXTRAM”找到了答案,原來(lái)想現(xiàn)在AT89C5X和STC89C5X跟以前相比的51單片機(jī)都是增強(qiáng)型的,里面又增加了很多寄存器單元和功能,針對(duì)STC89C52內(nèi)部有EXTRAM的擴(kuò)展部分,默認(rèn)時(shí)寄存器的值為零,不能訪(fǎng)問(wèn)外部64K空間,或者說(shuō)訪(fǎng)問(wèn)的時(shí)候不對(duì)此進(jìn)行設(shè)置,會(huì)發(fā)生沖突。造成工作的異常。必須先對(duì)AUXR進(jìn)行位定義,sfr AUXR=0x8e,然后賦值A(chǔ)UXR=0x02;將EXTRAM的控制位設(shè)置為1,禁止EXTRAM的訪(fǎng)問(wèn),以防沖突。寫(xiě)完程序下載到里面一看,期待已久的奇跡終于發(fā)生了,P0和P2口作為數(shù)據(jù)地址總線(xiàn)是終于有數(shù)據(jù)輸出了。所謂的英特爾總線(xiàn)的操作終于實(shí)現(xiàn)了。我的用STC89C52學(xué)習(xí)單片機(jī)的同學(xué)們,以后千萬(wàn)注意了不要忽視這一點(diǎn),外擴(kuò)設(shè)置一下寄存器,寫(xiě)上“sfr AUXR=0x8e;AUXR=0x02;”這兩句。并且用這種所謂英特爾總線(xiàn)的方法操作外部設(shè)備程序極為簡(jiǎn)便,同學(xué)們趕緊學(xué)學(xué)吧!



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉