|
/script> 一: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
|