السلام عليكم
ارجو من عباقرة الميكروكونترولر شرح هذا الكود
جزاكم الله كل خير
#include "D:\PFE2007S1\ROBOT\PROGRAMME\16F84.h"
#use fast_io(b)
#use fast_io(a)
byte const AV1[8]={0b00000001,0b00000011,0b00000010,0b00000110,0b00 000100,0b00001100,0b00001000,
0b00001001};
byte const AV2[8]={0b00010000,0b00110000,0b00100000,0b01100000,0b01 000000,0b11000000,0b10000000,
0b10010000};
void avantM1()
{
byte p,i;
p=(input_b()&0xF0);
for (i=0;i<=7;++i){output_b(p|AV1[i]);delay_ms(80);}
}
void avantM2()
{
byte p,i;
p=(input_b()&0x0F);
for (i=0;i<=7;++i){output_b(p|AV2[i]);delay_ms(80);}
}
void avantM1M2()
{
byte i;
for (i=0;i<=7;++i){output_b(AV2[i]|AV1[i]);delay_ms(80);}
}
void ariereM1()
{
byte p,i;
p=(input_b()&0xF0);
for (i=0;i<=7;++i){output_b(p|AV1[7-i]);delay_ms(80);}
}
void ariereM2()
{
byte p,i;
p=(input_b()&0x0F);
for (i=0;i<=7;++i){output_b(p|AV2[7-i]);delay_ms(80);}
}
void ariereM1M2()
{
byte i;
for (i=0;i<=7;++i){output_b(AV2[7-i]|AV1[7-i]);delay_ms(80);}
}
void avantM1AriereM2()
{
byte i;
for (i=0;i<=7;++i){output_b(AV2[7-i]|AV1[i]);delay_ms(80);}
}
void avantM2AriereM1()
{
byte i;
for (i=0;i<=7;++i){output_b(AV1[7-i]|AV2[i]);delay_ms(80);}
}
void main()
{
byte a;
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
set_tris_b(0);
while (true)
{
a=input_A()&0x0F;
switch (a) {
case 1 :avantM1();break;
case 2 :AriereM1();break;
case 4 :avantM2();break;
case 8 :ariereM2();break;
case 5 :avantM1M2();break;
case 10 :AriereM1M2();break;
case 9 :avantM1AriereM2();break;
case 6 :avantM2AriereM1();break;
}
}
}
:code 16F84.H
#include <16F84A.h>
#use delay(clock=4000000)
#fuses NOWDT,XT, NOPUT, NOPROTECT