السلام عليكم ورحمة الله
اريد من الاعضاء مساعدتي في كود بسيط
لدي اشارة داخلة الى الميكروكنترول من 0 الى 4 فولت
وقمت بمحاكاتها على البروتس
تصاعديا

وكل 80 ملي ثانية منذ بداية الاشارة يختبر الشرط ووضعت الشرط الاول في المجال 1فولط لايزيد ولاينقص ثم بعد 80 ملي ثانية اخرى في المجال 2فولط وهاكذا حتى 4فولط
ثم يشتعل الليد المربوط بالb0
لاكن لم ينجح
sbit led at RB0_bit ;
int yy;
int y;
void main(){
TRISA.f0=1;
TRISB = 0;
PORTB = 0;
adc_init();
while(adc_read(0)>0){
y=adc_read(0);
yy=(y*5)/1023;
delay_ms(80);
if((yy<=1)&&(yy>=1)){delay_ms(80);
if((yy<=2)&&(yy>=2)){delay_ms(80);
if((yy<=3)&&(yy>=3)){delay_ms(80);
if((yy<=4)&&(yy>=4)){led=1;}
;}
;}
;}
}
}
|
الملف
http://www.4shared.com/rar/sEPKhepl/ADC1.html
ثانيا جربت
استعمل المصفوفة ونفس المشكلة
sbit led at RB0_bit ;
int mn[]={1,2,3,4};
int mx[]={1,2,3,4};
int x;
int yy;
int y;
void main(){
TRISA.f0=1;
TRISB = 0;
PORTB = 0;
adc_init();
while(adc_read(0)>0){
y=adc_read(0);
yy=(y*5)/1023;
while(x<4){
delay_ms(80);
if((yy<=mx[x])&&(yy>=mn[x])){x+1;}
}
if(x==3){led=1;x=0;}
}
}
|
كل 80 ملي ثانية يتم اختبار قيمة من المصفوفتين متزايدتين
mxاعلى قيمة 1v
mnادنى قيمة 1v
الملف
http://www.4shared.com/rar/NZcvQk7Z/ADC2.html