Re: 各位前輩幫幫忙提供一下意見???
|
||||
---|---|---|---|---|
高級會員
|
非常感謝前輩的提供意見我已經照你的方式下去測試已經ok~~~~ 謝謝!!!
發表於: 2007/6/28 14:24
|
|||
|
Re: 各位前輩幫幫忙提供一下意見???
|
||||
---|---|---|---|---|
高級會員
|
想請問一下那我這裡需要怎改法才有辦法如我程式 IF ELSE
產生HI LOW 值
發表於: 2007/6/27 16:13
|
|||
|
Re: 各位前輩幫幫忙提供一下意見???
|
||||
---|---|---|---|---|
中級會員
|
從你的程式看來,e=b=A4=temp=AD值, 所以
calculate()中,只有0V時轉換後的AD值會小於2, 其餘都大於2,了嗎?
發表於: 2007/6/27 15:39
|
|||
|
各位前輩幫幫忙提供一下意見???
|
||||
---|---|---|---|---|
高級會員
|
為何我只有輸入0v的電壓才有HI的輸出電壓 可以提供我意見ㄇ???
#include <pic.h> #include "cnfig877a.h" void ADdelay(unsigned char i) { while(i--); } //********************************** //* Function Prototype Declaration //********************************** void Init_IO(void); void Init_Adc( void ); void A2D(void); void calculate(void); // ================================================================ // **** 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 ); // ================================================================= union { int AD_10bit; struct { char AD_LSB; char AD_MSB; }AD_Byte; }AD_Int; /***************************** INITIALIZE I/O PORT *****************************/ void Init_IO(void) { ADCON1=0b00000110; TRISD=0x00; PORTD=0x80; TRISA1=1; TRISB1=0; } /***************************************** Initialize A/D & Comparator Module ******************************************/ void Init_Adc( void ) { ADCON0=0b10001001; ADCON1=0b00000000; ADFM=1; } /*********************************** Convert A/D Channel ************************************/ void A2D( void ) { int temp; ADGO = 1; while (ADGO) ; AD_Int.AD_Byte.AD_MSB=ADRESH; AD_Int.AD_Byte.AD_LSB=ADRESL; temp= ADRESH *256+ ADRESL; } //****************************************************** // calculate //******************************************************** void calculate(void) { int b,A4; int e,a; a=1; b=A4; e=b/a; if(e>=2) { RB1=0; } else { RB1=1; } } //*************************************** //* Program Main ( ) * //*************************************** void main(void) { int A4, temp; Init_IO(); Init_Adc(); while(1) { A2D(); // Get 10-bit A/D result from CH1 A4=temp; calculate(); } }
發表於: 2007/6/26 22:58
|
|||
|