|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
PIC如何設(shè)置外部晶振和內(nèi)部晶振? |
作者:crab502 欄目:單片機 |
我把HT-PIC SAMPLE code中的MS延時程序移植到程序中,MS級的延時程序 竟然是S的級別, 并且用手靠近(未碰)程序才可以運行,不知是何原因,是晶振配置錯誤嗎?如何配置?請大家指教 #ifndef XTAL_FREQ #define XTAL_FREQ 4MHZ /* CRYSTAL frequency in MHz */ #endif #define MHZ *1000L /* NUMBER of kHz in a MHz */ #define KHZ *1 /* NUMBER of kHz in a kHz */ #if XTAL_FREQ >= 12MHZ #define DelayUs(x) { unsigned CHAR _dcnt; \ _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \ while(--_dcnt != 0) \ continue; } #else #define DelayUs(x) { unsigned CHAR _dcnt; \ _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \ while(--_dcnt != 0) \ continue; } #endif void DelayMs(unsigned CHAR cnt) { #if XTAL_FREQ <= 2MHZ do { DelayUs(996); } while(--cnt); #endif #if XTAL_FREQ > 2MHZ unsigned CHAR i; do { i = 4; do { DelayUs(250); } while(--i); } while(--cnt); #endif } |
2樓: | >>參與討論 |
作者: xieyuanbin 于 2005/4/10 18:15:00 發(fā)布:
振蕩方式16以下的和程序無關(guān)。 燒寫時設(shè)置的,也可用偽指令設(shè)置。一旦燒寫就不能更改直到下次重新燒過。 |
3樓: | >>參與討論 |
作者: crab502 于 2005/4/11 10:49:00 發(fā)布:
請教班主 我是用ALL-100燒錄得,如何在燒錄器中設(shè)置? 偽指令設(shè)置是這樣嗎 __CONFIG(HS & WDTDIS & PWRTDIS & BORDIS & UNPROTECT) 我是用MPLAB+HT-PIC編譯的,是在MPLAB中的CONFIGURATION BIT中配置嗎? |
4樓: | >>參與討論 |
作者: xieyuanbin 于 2005/4/11 12:29:00 發(fā)布:
應(yīng)該有個CONFIG選項。 這種燒寫器我沒用過,所以不知道,但至少應(yīng)該有CONFIG選項。 偽指令的定義方法應(yīng)參照XXFXX.inc文件末尾的定義,當(dāng)然你在編程前應(yīng)該將其包含進來。 * - 本貼最后修改時間:2005-4-11 12:32:04 修改者:xieyuanbin |
5樓: | >>參與討論 |
作者: crab502 于 2005/4/11 15:20:00 發(fā)布:
再次請教班主CONFIG問題 我在編程前配置了CONFIG,我的問題是:和MPLAB中的CONFIGURATION BIT 有沖突嗎? 如果兩者不同,是以程序中的配置為準還是以MPLAB的選項為準? 與燒錄器配置沖突呢? |
6樓: | >>參與討論 |
作者: crab502 于 2005/4/11 15:58:00 發(fā)布:
我的燒錄器的配置位 班主,我的燒錄器配置的圖片, 哪個選項是配置外部振蕩和內(nèi)部振蕩? |
7樓: | >>參與討論 |
作者: HQGBOY 于 2005/4/11 16:48:00 發(fā)布:
vvv list p=16F877A, f=INHX8M, r=DEC, b=8, C=80 __config (_CP_OFF & _WDT_OFF & _RC_OSC) __idlocs H'0100' |
8樓: | >>參與討論 |
作者: crab502 于 2005/4/11 16:53:00 發(fā)布:
CP_OFF 是什么意思? _CP_ON _CP_ALL _CP_OFF 是什么意思? |
9樓: | >>參與討論 |
作者: crab502 于 2005/4/11 17:37:00 發(fā)布:
我用的MCU是PIC16F716 |
10樓: | >>參與討論 |
作者: xieyuanbin 于 2005/4/11 18:47:00 發(fā)布:
配置問題: 大多數(shù)燒寫器會自動讀入你在程序中的配置,但最終燒寫是以燒寫器中選定的為準。 XT OSCILLATOR是指標準振蕩,應(yīng)選擇INTERNAL OSC WDT DISABLE WDT關(guān)閉。 CP_ON是表示程序代碼保護開。CP ALL應(yīng)該是連同數(shù)據(jù)EEPROM一起加密,保護后不可讀出。 |
11樓: | >>參與討論 |
作者: crab502 于 2005/4/12 9:33:00 發(fā)布:
再次請教xieyuanbin班主 前面程序中的DelayMs()在實際條件下是延時幾分鐘,我的程序每次上電運行的結(jié)果都不一樣,延時點燈,要么不亮,要么亮了不停,要么用手靠近才會亮,本來以為是配置問題,按照班主的講解,似乎又不是這個原因.請您老再給把把脈 注:硬件是絕對沒問題的,因為是市面上提供的好板,燈接PORTB^5 程序如下 void main(void) { init_system(); while(1){ turnon_light(); DelayMs(5); turnoff_light(); DelayMs(5); } } void init_system(void) { STATUS = 0x00; FSR = 0x00; PORTA=0x00; PORTB=0x00; INTCON= 0x00; ADRES = 0; TRISA=0xFF; //set RA3,RA0 is input PORT TRISB=0x00; //set RB5 is OUTPUT PORT ADCON1=0x00; } void turnon_light(void) { PORTB=0xFF; } void turnoff_light(void) { PORTB=0x00; // RB5 = 0; } 對xieyuanbin班主致以崇高的敬意 |
12樓: | >>參與討論 |
作者: xieyuanbin 于 2005/4/12 10:14:00 發(fā)布:
用手靠近能亮基本是振蕩方式?jīng)]設(shè)置好。 標準振蕩是指1M-6M范圍標準外接晶振。 |
13樓: | >>參與討論 |
作者: xieyuanbin 于 2005/4/12 10:18:00 發(fā)布:
不知道你到底用哪種振蕩? |
14樓: | >>參與討論 |
作者: martin 于 2005/4/12 11:16:00 發(fā)布:
振蕩激勵不足 振蕩激勵不足,難以起振的現(xiàn)象,改成HS振蕩方式試試。 |
15樓: | >>參與討論 |
作者: crab502 于 2005/4/12 15:20:00 發(fā)布:
外接陶振4M HS振蕩方式我也試過,燈脆不亮了,有的時候亮了,卻不能關(guān) 問題是,燒了一個芯片,它每次上電都是不一樣的動作 老大,救命。 |
16樓: | >>參與討論 |
作者: newer_zhk 于 2005/4/13 9:28:00 發(fā)布:
datasheet中有啊 SPECIAL FEATURES這一章 偽指令在*.INC文件中有定義,eg:P16F877a.INC 在MPLAB的目錄里 ;========================================================================== ; ; Configuration Bits ; ;========================================================================== _CP_ALL EQU H'1FFF' _CP_OFF EQU H'3FFF' _DEBUG_OFF EQU H'3FFF' _DEBUG_ON EQU H'37FF' _WRT_OFF EQU H'3FFF' ; No prog memmory write protection _WRT_256 EQU H'3DFF' ; First 256 prog memmory write protected _WRT_1FOURTH EQU H'3BFF' ; First quarter prog memmory write protected _WRT_HALF EQU H'39FF' ; First half memmory write protected _CPD_OFF EQU H'3FFF' _CPD_ON EQU H'3EFF' _LVP_ON EQU H'3FFF' _LVP_OFF EQU H'3F7F' _BODEN_ON EQU H'3FFF' _BODEN_OFF EQU H'3FBF' _PWRTE_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _RC_OSC EQU H'3FFF' _HS_OSC EQU H'3FFE' _XT_OSC EQU H'3FFD' _LP_OSC EQU H'3FFC' |
17樓: | >>參與討論 |
作者: goodskyok 于 2005/4/15 9:51:00 發(fā)布:
我遇到過這類問題 我遇到過這類問題,用手摸它,時工作時不工作,用CONGIG設(shè)置時開啟了低電壓編程功能,要禁止低電壓編程功能舊可以了 |
|
|
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號 |