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