i made this code to calculate the freq using Rb0/int and then shows it on portd
when i tested it on protues it didnt work i dont know why please check and tell me the mistake
كود:
char x=0;
void check(){
x=1;
delay_ms(1000);
portd=x;
x=0 ;}
void Interrupt(){
if (x==0){ check();
}else{x++ ;}
intcon.f1=0;}
void main() {
trisb=0b0000001;
trisd=0;
portd=0;
portb=0;
cmcon=0x07;
intcon=0b1001000;
option_reg=0b1000000;}
|
السلام عليكم
في البداية يظهر انك تستخدم البيك 16F877A حيث يحتوي على بورت D ، وليس هناك داع لاستخدام CMCON=0x07 انما تستخدم الامر ADCON1=0x07 لتستخدم البورت A كمدخل او مخرج رقمي وليس انالوج . هذه ملاحظة .
ثانية مسجل المقاطعة : INTCON=0b10010000; كتبته انت بوجود نقص 0 لتحصل على الاعداد المناسب .
ثالثا قمت باعداد المداخل والمخارج ومن ثم انهيت البرنامج ..وهكذا في حال بدأ البرنامج فانه يقوم باعدادات المداخل وينهي البرنامج مباشرة وهكذا لن تحصل على اشارة في برنامجك ، حيث يجب ان تقوم بعمل حلقة لا منتهية :
while (1)
{
}
بحيث يبدا العد في اي وقت جاءت فيه الاشارة .. قم بهذا التعديل وبعدها نناقش تكملة البرنامج ..
ارجو لك التوفيق ...
واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم ..
رابعا