[SIZE="3"]اولاانا عايز اعمل كود بيعمل ايه ؟
1-يقراء قيمه البورت B
2-يطلع اشاره على البورت Aمناظر للبيانات الموجوده على البورت B
يعنى يا جماعه انا عايز اعمل ريموت كنترول دائر ه الارسال تكون مكونه من بيك
و8سويتشات موصله بالبورت بى
ويوجد خرج من البك (الرجل a0)
ايه المطلوب انى لما اتكى على اى سويتش يدينى تركيبه معينه على الخرج
مكونه من نبضه عاليه لمده 5ميلى ثانيه وبعدين يقسم باقى الفرام 8 اجزاء مثل البورت بى ولاكن على التوالى كل بت وقته 1ميلى ثانيه
فكرت فى البرنامج ده
3-تعريف البورت a على انها خرج
4- تعريف البورت b على انها دخل
5-اللوب علشان البرنامج يعيد تانى
6- لما تكون البورت بى =0يعنى جميع مداخل البورت بى مضغوط عليها
7-اعمل الاتى
الرجل a0 عاليه لمده 5 ميلى
\\\\\\\\\منخفضه لمده1ميلى (اول بت للبورت بى)
\\\\\\\\\منخفضه لمده1ميلى(ثانى بت)
\\\\\\\\منخفضه لمده 1 ميلى (ثالث بت )
\\\\\\\منخفضه لمده 1 ميلى (رابع
وهاكذا الى اخر
البرنامج وبعدين ياتى الى جمله else
]وبيعيد نفسه
المشكله انو لما اتكى مثلا على السويتش الاول بيشتغل عادى وبيدينى التركيبه
بس لو اتكيت على السوتش وسيبت بسرعه ما بيكملش التركيبه الى انا حاطتهه
ايه حلهه
انا عايز انى اول لما اتكى على السويتش واسيبه التركيبه تتنيها تتعمل حتى ولو كانت وقتها كبير
void main()
{
TRISA=0;
TRISB=0XFF;
loop:
if(portb==0){
porta.f0=1;delay_ms(40); //start freame
porta.f0=1;delay_ms(20); //first bit
porta.f0=0;delay_ms(20); //2
porta.f0=0;delay_ms(20); //3
porta.f0=0;delay_ms(20); //4
porta.f0=0;delay_ms(20); //5
porta.f0=0;delay_ms(20); //6
porta.f0=0;delay_ms(20); //7
porta.f0=0;delay_ms(20); //8
}
else{porta.f0=0;}
goto loop;
}
SIZE]