Browsing this Thread:
1 Anonymous Users
|
CCP(2)
|
|
資深會員
Joined
: 2009/8/17 13:53 最後登入時間
: 2013/9/4 9:22
Group:
註冊會員
Level : 12 HP : 0 / 277 MP : 56 / 12252 EXP : 9
|
#include <p18f4520.h> #include <delays.h> #include <adc.h> #include <timers.h> #include <pwm.h>
#pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF
void main () { PORTD = 0x00; TRISD = 0;
ADCON0=0x01; // 選擇AN0通道轉換,開啟ADC模組 ADCON1=0x0E; // 使用VDD,VSS為參考電壓,設定AN0為類比輸入 ADCON2=0x3A; // 結果向左靠齊並設定轉換時間為Fosc/32,採樣時間為20TAD
TRISCbits.TRISC2 = 0; // 設定CCP1為輸出 OpenPWM1(0x9B); // 設定CCP1為PWM功能與時脈周期 OpenTimer2(TIMER_INT_OFF&T2_PS_1_4&T2_POST_1_1); //開啟TIMER2 while(1) { // 永久迴圈 Delay10TCYx(5); // 時間延遲以完成採樣 ConvertADC() ; // 進行訊號轉換 while(BusyADC()); // 等待轉換完成 PORTD = ADRESH ; // 將轉換結果顯示於LED SetDCPWM1((unsigned int)ADRESH<<2); // 調整PWM工作週期 } }
OpenPWM1(0X9B); 所以PR2=155 PWM的PERIOD=155*4*(1/10MHZ)*4=0.00025sec 就是頻率4000 但OpenPWM1(0X9B); 它也說它設定了CCP1為PWM的功能,是設定了CCP1CON嗎?如果要設成PWM功能不是最後4bits要11xx嗎?B=1011因該是相等時觸發才對!這邊不了解,這是我在跑的時後,燈也沒亮,蜂鳴器有叫,它那行指令是蜂鳴器的?是在那設定的!而且PR2=155了,為什為調可變電阻,還可以改變他的週期,我想因該是最後一句SetDCPWM1((unsigned int)ADRESH<<2); 這裡面左移兩個BITS是什麼意思?麻煩各位先進指點迷津
發表於: 2009/11/19 10:41
|
|
You can view topic.
你 不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.