تم عمل التحويل ب الكومبيلر بس لو نقلتة علي البروتس عشان انفذة علي PIC16F877A
و وصلت البتنات زي اللي كان في البيك السابق بس مش بيعمل اي خرج خالص
و في سوال تاني انا اخت الكود زي مهو وشلت الجزء بتاع الكومبارتور
كود:
char x;
void main() {
TRISA=255;TRISB=0;portb=0;
PWM1_Init(38000);
PWM1_Set_Duty(255);
while (1) {
if (porta.f0==0){
PWM1_Start();delay_us(2400);PWM1_Stop();
delay_us(600);
for(x=0;x<7;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
PWM1_Start();delay_us(1200);PWM1_Stop();
delay_us(600);
for(x=0;x<4;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
delay_ms(250);
}
if (porta.f1==0){
PWM1_Start();delay_us(2400);PWM1_Stop();
delay_us(600);
PWM1_Start();delay_us(1200);PWM1_Stop(); //1
delay_us(600);
for(x=0;x<6;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
PWM1_Start();delay_us(1200);PWM1_Stop();
delay_us(600);
for(x=0;x<4;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
delay_ms(250);
}
if (porta.f2==0){
PWM1_Start();delay_us(2400);PWM1_Stop();
delay_us(600);
PWM1_Start();delay_us(600);PWM1_Stop(); //1
delay_us(600);
PWM1_Start();delay_us(1200);PWM1_Stop(); //2
delay_us(600);
for(x=0;x<5;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
PWM1_Start();delay_us(1200);PWM1_Stop();
delay_us(600);
for(x=0;x<4;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
delay_ms(250);
}
if (porta.f3==0){
PWM1_Start();delay_us(2400);PWM1_Stop();
delay_us(600);
for(x=0;x<2;x++){
PWM1_Start();delay_us(1200);PWM1_Stop();delay_us(600); }
for(x=0;x<5;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
PWM1_Start();delay_us(1200);PWM1_Stop();
delay_us(600);
for(x=0;x<4;x++){
PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
delay_ms(250);
}
}
}
هو فين في الكود الجزء اللي بيقول لليمكرو نفذ الخرج علي البورت b اذا حصل الضغط علي الزر كذا