اخي حيدر توصلت لحل وهو عد النبضات الداخلة على تايمر 1 وهو كل نبضة داخلة يعدها بواحد اثنين ثلاث اربع .... وهكذا طيب انا اريد الزمن بين نبضتين وليس عدد النبضات الداخلة.
كود:
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;
int maximum=0;
unsigned int TMR1_value;
char to_LCD[6];
void main()
{trisa=1;trisb=0;portb=0;trisc.f0=1;
ADCON1.PCFG3=0; ADCON1.PCFG2=0;ADCON1.PCFG1=0; ADCON1.PCFG0=1;
T1CON.T1CKPS0=0; T1CON.T1CKPS1=0;
T1CON.T1OSCEN=0;
T1CON.T1SYNC=1;
T1CON.TMR1CS=1;
TMR1H = TMR1L = 0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
while(1)
{
while(adc_read(0)> maximum) maximum = adc_read(0);
portb.f0=1;
T1CON.TMR1ON=1;
delay_ms(100);
portb.f0=0;
TMR1_value = (TMR1H << 8) + TMR1L;
WordToStr(TMR1_value, to_LCD);
LCD_Out(2, 1, to_LCD);
while((adc_read(0)< maximum-1) ){}
maximum=0;
}
}