Browsing this Thread:
1 Anonymous Users
|
Re: 計算問題
|
|
高級會員
Joined
: 2007/3/24 9:21 最後登入時間
: 2018/3/21 10:42
Group:
註冊會員
Level : 7 HP : 0 / 163 MP : 24 / 8165 EXP : 53
|
不好意思 我現在只有一個a/d的值 另一個為我設定
發表於: 2007/6/23 16:32
|
|
|
計算問題
|
|
高級會員
Joined
: 2007/3/24 9:21 最後登入時間
: 2018/3/21 10:42
Group:
註冊會員
Level : 7 HP : 0 / 163 MP : 24 / 8165 EXP : 53
|
我現在用c寫了有關 於 e=p(n)-p(n-1)/v(n)-v(n-1)這樣的一個式子 因為我利用a/d的方式將資料放在我所設定的暫存器中(也就是p 和v的值)我利用了 *和&讓 新資料和舊資料相減但是我測試結果就是無法無預期 不知道有人有這樣經驗ㄇ?可以討論依下
#include <pic.h> // processor if/def file #include "cnfig877a.h" unsigned char i ;
//*************************** // A/D延遲 //***************************** void ADdelay(unsigned char i) { while(i--); } //********************************** //* Function Prototype Declaration //********************************** void Init_IO(void); void Init_Adc_1( void ); void A2D_1(void); void calculate(float A2, float *A4);
//============================================================ // **** Establish PIC16F877A Configuration Word // **** == HS Oscillator Mode // **** == Brown-Out Detect Enabled // **** == Watch-Dog Timer Off // **** == Code Protect Off // **** == Low Voltage Programming Off // **** == ICD2 Debug Mode On
__CONFIG ( HS_OSC & BODEN_ON & WDT_OFF & CP_OFF & LVP_OFF & DEBUG_ON ); //==========================================================
unit int AD_10bit_1; struct { char AD_LSB_1; char AD_MSB_1; } AD_Byte_1; } AD_Int_1;
/***************************** INITIALIZE I/O PORT *****************************/
void Init_IO(void) { ADCON1=0b00000110; TRISD=0x00; PORTD=0x80; TRISA0=1; }
/***************************************** Initialize A/D & Comparator Module ******************************************/ void Init_Adc_1( void ) { ADCON0=0b10000001; ADCON1=0b00000100; ADFM=1; }
/*********************************** Convert A/D Channel ************************************/ void A2D_1(void ) { float temp_1; ADGO = 1; while (ADGO) ; AD_Int_1.AD_Byte_1.AD_MSB_1=ADRESH; AD_Int_1.AD_Byte_1.AD_LSB_1=ADRESL; temp_1= ADRESH *256+ ADRESL; } //******************************************* // calculate //******************************************* void calculate(float A2, float *A4) { float a,b; float e; a=2; b=(A2-*A4); e=b/a; if(e<0) { RB1=1; } else { RB1=0; } *A4=A2; }
//*************************************** //* Program Main ( ) * //*************************************** void main(void) { float A2, A4,temp_1; unsigned int j; Init_IO(); while(1) { Init_Adc_1(); ADdelay(2); A2D_1(); A4=temp_1;
for( j=1; j<65535; j++) { A2=temp_1; calculate(A2, &A4); } } }
發表於: 2007/6/23 16:31
|
|
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.