|
12F675,ROM 初次用12F675,直接把ROM全寫了,沒讀振蕩器的校準值 問 我用內(nèi)部4MHZ的振蕩,現(xiàn)在沒讀校準值就把ROM寫了,除了4MHZ不準確外,片子其它功能是否還都正常? 答 1: 如果用的是MPLAB如果用的是MPLAB,是不會把內(nèi)部振蕩器的值覆蓋的。 在初始化的時候加上以下語句就可以: CALL 3FFH MOVWF OSCCAL 答 2: 這什么意思,能解釋一下嗎?CALL 3FFH 答 3: 用某種單片機的時候,要仔細閱讀數(shù)據(jù)手冊,沒有捷徑!Microchip數(shù)據(jù)手冊中寫到: 9.2.5.1 校準內(nèi)部振蕩器 校準指令被編程到程序存儲器的最后一個地址單元中。 這條指令是RETLW XX,其中立即數(shù)為校準值。將立即 數(shù)放在OSCCAL 寄存器中用來校準內(nèi)部振蕩器。例9- 1 演示了如何校準內(nèi)部振蕩器。 例9-1: 校準內(nèi)部振蕩器 bsf STATUS, RP0 ;Bank 1 call 3FFh ;Get the cal value MOVwf OSCCAL ;Calibrate bcf STATUS, RP0 ;Bank 0 答 4: 這段我看了我不明白的是為什么一定要在最后一個地址單元中,還要call一下,請解釋。 答 5: 最后一個字不容易被覆蓋,也容易被制造廠商或燒寫軟件管理。當然你可以將校準值放在任意地方,不過這個值是針對每一片單片機單獨校準的,所以一定要一個固定的地方便于查找,最方便的地方莫過于最后一個字。你可以不CALL。 答 6: 謝謝這個值是針對每一片單片機單獨校準的 ---------------------------------------是不是每片出廠時都在3ff處寫了校準值,如果用戶自己每個校準,不是很麻煩 答 7: OSCTURN=0x00是不是這樣MCU就會按照出廠的校準值自動工作? 還是要把最后一個字節(jié)讀出來賦給OSCTURN后,MCU才會按照出廠校準值自動工作?
答 8: 我用了,正常在程序開始加入以下兩句就可以: CALL 3FFH MOVWF OSCCAL 另外這個校準值是抹不到,不怕覆蓋. 答 9: 16f916怎么沒有OSCCAL寄存器?是不是就是OSCTURN寄存器。 這對不對? _21icbbs 發(fā)表于 2006-9-19 17:55 PIC 單片機 ←返回版面 OSCTURN=0x00 是不是這樣MCU就會按照出廠的校準值自動工作? 還是要把最后一個字節(jié)讀出來賦給OSCTURN后,MCU才會按照出廠校準值自動工作?
|