一、bank0和bank1
SH79F3283的從數(shù)據(jù)手冊或者f3283的頭文件里能看到,一些寄存器背后有備注在“bank1”,一定要注意,如果要對這些寄存器進行設(shè)置,一定要像以下配置。
如果不切換的話一些寄存器的地址是重疊的,到賦值的時候就會出現(xiàn)莫名其妙的錯誤。包括P5的所有腳都是在bank1的,配置的時候一定要留意。
二、時鐘
手冊上并沒寫的太清楚外部晶振究竟能搞到一個什么范圍,一會兒說12M一會兒又16M,其實外部最多12M,內(nèi)部可以達到16M。
一般51都是一個機器周期=12個震蕩周期,這款是1:1,不過需要注意的一點是CLKCON這個寄存器默認(rèn)將時鐘12分頻。
使用的時候一定要記得給它設(shè)置成不分頻,不然速度太慢了
三、ADC采樣和串口中斷
當(dāng)你配置完ADC打開中斷和總中斷之后,一定要等待至少10us的時間再寫下:ADCON|=0X01;
否則ADC模塊會出現(xiàn)問題。
串口中斷的RI和TI任意一個為1時,都不能觸發(fā)串口中斷。
我用了個芯片將232轉(zhuǎn)485了,每次發(fā)送完成后一定要把TI這個標(biāo)志清零再接收,不然根本收不到數(shù)據(jù)。
四、RAM
不得不說這個RAM實在是太小了,內(nèi)部就256字節(jié),外部撐死1k,我用的時候真的要很小心,生怕ram滿了導(dǎo)致中斷保持現(xiàn)場對的時候不正常。
最后我發(fā)現(xiàn):
實際上你只要加一個關(guān)鍵字"xdata"就可以直接把變量定義在外部ram了,例如"xdata int i=0;"
至于你想驗證我定義完之后是不是能正常給這個變量賦值,很簡單,你插上這個東西的仿真器,跑一個最簡單的i++;語句,看看在watch窗口這個i有沒有增加就是了。
五、燒錄時的代碼選項
1、關(guān)于時鐘配置:
中穎SH79F3283時鐘選擇并不是通過某個寄存器選擇的,而是要通過下載軟件來配置的,在代碼選項OP_OSC這個來選,如果不選擇等你把程序燒進去之后會發(fā)現(xiàn)你的外部晶振甚至沒有起振。以ISP51為例:
2、中穎默認(rèn)代碼選項中開門狗是開的,OP_WDT一定要選擇關(guān)閉。
整理者:上海微可實業(yè)有限公司
由飛天小鯨魚和LI2590266418文章收集整理而來,侵權(quán)必刪
上海微可實業(yè)有限公司
電話:18221985986
QQ/微信:634121371
淘寶網(wǎng)店 : wksy.taobao.com (中穎單片機)
聯(lián)系人:程先生