專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)
單片機方案開發(fā)商深圳英銳恩分享PIC16C71,16C84單片機應(yīng)用中問題和對策。
一:PIC16C71單片機的問題和對策
問題1:在芯片進(jìn)入低功耗睡眠模式 (SLEEP MODE)后,其振蕩腳將處于浮態(tài),這將使芯片的睡眠功耗上升,比原手冊中的指標(biāo)高了10μA以上。
對策:在振蕩腳OSC1和地 (GND)之間加一10MΩ電阻可防止OSC1進(jìn)入浮態(tài),且不會影響單片機正常振蕩。
問題2:RA口方向寄存器TRISA目前只是一個4位寄存器,對應(yīng)于RA0~RA3,并非手冊中所言是8位寄存器,對應(yīng)于RA0~RA4,即RA4并沒有相應(yīng)的輸入/輸出方向控制位,它是一個具有開極輸出,施密特輸入I/O腳。
對策:避免使用對RA口進(jìn)行讀-修改-寫指令(如BCF RA, BSF RA),以免非意愿地改變RA4的輸入/輸出狀態(tài)。對于RA口的操作應(yīng)采用寄存器的操作方式(MOVWF RA)。
問題3:當(dāng)CPU正在執(zhí)行一條對INTCON寄存器進(jìn)行讀-修改-寫指令時,如果發(fā)生中斷請求,則讀中斷例程會被執(zhí)行二次。這是因為當(dāng)中斷請求發(fā)生后INTCON寄存器中的GIE位會被硬件自動清零(屏蔽所有中斷),并且程序轉(zhuǎn)入中斷例程入口(0004H)。當(dāng)GIE位被清零后,如果這時正好CPU在執(zhí)行一條對INTCON的讀-修改-寫指令(如BSF INTCON等),則 GIE位還會被寫回操作重新置1,這樣會造成CPU二次進(jìn)入中斷例程。
對策:如果在程序中需對INTCON的某一中斷允許位進(jìn)行修改,則應(yīng)事先置GIE=0
,修改完成后再恢復(fù)GIE=1。
…………..
BCF INTCON, GIE
BSF INTCON, ×××
BSF INTCON, GIE
…………..
問題4:當(dāng)芯片電壓VDD加電上升時間大于100μs時,電源上電復(fù)位電路POR和電源上電延時器PWRT可能不能起正常的作用,而使芯片的復(fù)位出現(xiàn)不正常(即PC≠復(fù)位地址)。一般在這種情況下建議不要采用PWRT。
對策:如果VDD上升時間很長,此芯片一般需較長的電源上電延時,可靠的電
源上電延時方法如圖1所示,在MCLR端外接復(fù)位電路。
問題5:如果在A/D轉(zhuǎn)換中用RA3作為參考電壓輸入,則最大滿量程誤差(NFS)要大于手冊中的指標(biāo)。實際情況如表1所示。
表1 A/D滿量程誤差表
VREF源 | 滿量程誤差 |
VDD | <±1 LSb |
RA3 | <±2.5 LSb |
二:PIC16C84單片機的問題和對策
問題1:PIC16C84單片機的內(nèi)部的E2PROM數(shù)據(jù)存儲器的E/W周期偶爾會超出最大值(10ms)。
對策:在程序中應(yīng)該用EECON1寄存器中的WR位來判斷寫周期的完成,或是啟用“寫周期完成中斷”功能,這兩種方法可保證寫入完成。
問題2:VDD和振蕩頻率的關(guān)系如表2所示。
VDD | 振蕩方式 | 最高頻率 |
2V-3V | RC, LP | 2MHZ,200MHZ |
3V-6V | RC,XT,LP | 4MHZ,200MHZ |
4.5V-5.5V | HS | 10MHZ |