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