با سلام
برنامه زیر صفحه کلید 4*4 همراه با سون سگمت هست که بخش هایی که به رنگ قرمز هست رو خودم به برنامه اضافه کردم البته طبق گفته های استاد برای کار کردن سون سگمنت برنامه
که البته کار هم نمیکنه
میشه اشکال برنامه رو بگیرید
ممنون از همکاریتون
#include<mega16.h>
#include<delay.h>
#define maxkeys 16
unsigned char key,butnum;
flash unsigned char keytb1[16]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xb d,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};
void main(void)
{
DDRB=0xFF;
PORTB=0xFF;

while(1)
{
DDRC=0x0F;
PORTC=0xF0;
delay_us(5);
key=PINC;
DDRC=0xF0;
PORTC=0x0F;
delay_us(5);
key=key|PINC;

if(PINC.0==1&&PINC.4==1)
{
butnum=1;
}
if(PINC.0==1&&PINC.5==1)
{
butnum=1;
}
if(PINC.0==1&&PINC.6==1)
{
butnum=1;
}
if(PINC.0==1&&PINC.7==1)
{
butnum=1;
}
if(PINC.1==1&&PINC.4==1)
{
butnum=1;
}
if(PINC.1==1&&PINC.5==1)
{
butnum=1;
}
if(PINC.1==1&&PINC.6==1)
{
butnum=1;
}
if(PINC.1==1&&PINC.7==1)
{
butnum=1;
}
if(PINC.2==1&&PINC.4==1)
{
butnum=1;
}
if(PINC.2==1&&PINC.5==1)
{
butnum=1;
}
if(PINC.2==1&&PINC.6==1)
{
butnum=1;
}
if(PINC.2==1&&PINC.7==1)
{
butnum=1;
}
if(PINC.3==1&&PINC.4==1)
{
butnum=1;
}
if(PINC.3==1&&PINC.5==1)
{
butnum=1;
}
if(PINC.3==1&&PINC.6==1)
{
butnum=1;
}
if(PINC.3==1&&PINC.7==1)
{
butnum=1;
}

if(key|=0xFF)
{
for(butnum=0;butnum<maxkeys;butnum++)
{
if(keytb1[butnum]==key)

break;
}
if(butnum==maxkeys) butnum=0;
else butnum++;
}
else butnum=0;
PORTB=~butnum;

}
}