سلام من میخوام با یه دیپ سوییچ 8 حالته به یک 7 segment مقدار دهی کنم این برنامه رو نوشتم ولی کار نمیکنه میتونید لطفا بگید مشکل کجاس؟
#include <mega16.h>
#include <delay.h>
void main(void)
{
char x1,x2,x3,x4,y1,y2,y3,y4,led,a,b,c,d,e,f,g;
PORTA=0x00;
DDRA=0x00;
PORTC=0x00;
DDRC=0xFF;
while (1)
{
x4=PINA.0;
x3=PINA.1;
x2=PINA.2;
x1=PINA.3;
y4=PINA.4;
y3=PINA.5;
y2=PINA.6;
y1=PINA.7;
led=x4&(x3|(!x2&((x3&!y4)|(x3&!x1) ))|(y4&!y3));
a=(!x2&!x4)|(x2&x3)|(!x1&x3)|(x1&! x4)|(!x1&x2&x4)|(x1&!x2&!x3);
b=(!x1&!x2)|(!x2&!x3)|(!x2&!x4)|(!x1&a mp;!x3&!x4)|(x1&!x3&x4)|(!x1&x3&am p;x4);
c=(!x1&x2)|(x1&!x2)|(!x3&x4)|(!x2& !x3)|(!x2&x4);
d=(x1&!x3)|(!x2&x3&x4)|(x2&!x3& ;x4)|(x2&x3&!x4)|(!x1&!x2&!x4);
e=(!x2&!x4)|(x1&x2)|(x3&!x4)|(x1&x 3);
f=(!x3&!x4)|(x1&!x2)|(x2&!x4)|(x1& x3)|(!x1&x2&!x3);
g=(x1&!x2)|(!x2&x3)|(x3&!x4)|(x1&x 4)|(!x1&x2&!x3);
PORTC.0=a;
PORTC.1=b;
PORTC.2=c;
PORTC.3=d;
PORTC.4=e;
PORTC.5=f;
PORTC.6=g;
PORTC.7=led;
delay_ms(200);
}
}
ضمنا چون 7 segment اند بود یعنی با پایه ثابت مثبت روشن میشد من سر زیمن رو به ورودی های دیپ سوییچ دادم و خروجی دیپ سوییچ رو به میکرو دادم
#include <mega16.h>
#include <delay.h>
void main(void)
{
char x1,x2,x3,x4,y1,y2,y3,y4,led,a,b,c,d,e,f,g;
PORTA=0x00;
DDRA=0x00;
PORTC=0x00;
DDRC=0xFF;
while (1)
{
x4=PINA.0;
x3=PINA.1;
x2=PINA.2;
x1=PINA.3;
y4=PINA.4;
y3=PINA.5;
y2=PINA.6;
y1=PINA.7;
led=x4&(x3|(!x2&((x3&!y4)|(x3&!x1) ))|(y4&!y3));
a=(!x2&!x4)|(x2&x3)|(!x1&x3)|(x1&! x4)|(!x1&x2&x4)|(x1&!x2&!x3);
b=(!x1&!x2)|(!x2&!x3)|(!x2&!x4)|(!x1&a mp;!x3&!x4)|(x1&!x3&x4)|(!x1&x3&am p;x4);
c=(!x1&x2)|(x1&!x2)|(!x3&x4)|(!x2& !x3)|(!x2&x4);
d=(x1&!x3)|(!x2&x3&x4)|(x2&!x3& ;x4)|(x2&x3&!x4)|(!x1&!x2&!x4);
e=(!x2&!x4)|(x1&x2)|(x3&!x4)|(x1&x 3);
f=(!x3&!x4)|(x1&!x2)|(x2&!x4)|(x1& x3)|(!x1&x2&!x3);
g=(x1&!x2)|(!x2&x3)|(x3&!x4)|(x1&x 4)|(!x1&x2&!x3);
PORTC.0=a;
PORTC.1=b;
PORTC.2=c;
PORTC.3=d;
PORTC.4=e;
PORTC.5=f;
PORTC.6=g;
PORTC.7=led;
delay_ms(200);
}
}
ضمنا چون 7 segment اند بود یعنی با پایه ثابت مثبت روشن میشد من سر زیمن رو به ورودی های دیپ سوییچ دادم و خروجی دیپ سوییچ رو به میکرو دادم
دیدگاه