لقد كتبت لك في الكود سوى تلات اسطر لزر يمكن الزيادة حتى 24 زر
كتبت text[2]ستصل الى text[23]
كود:
char text[24];
char x,i,u;
int temp0 = 0;
char flag_sw1=0,flag_sw2=0,flag_sw3=0,flag_sw4=0;
unsigned int time_sw1,time_sw2,time_sw3,time_sw4;
void InitTimer0()
{
OPTION_REG = 0x84;
TMR0 = 100;
INTCON = 0xA0;
}
void Interrupt()
{
if (TMR0IF_bit)
{
TMR0IF_bit = 0;
TMR0 = 100;
for(x=0;x<24;x++){
portb.f1=text[x];
portb.f0=0;portb.f0=1;}
portb.f2=0;portb.f2=1;
if(flag_sw1==1)time_sw1++;
if(flag_sw2==1)time_sw2++;
if(flag_sw3==1)time_sw3++;
}
}
void main()
{
InitTimer0();
trisd=0xff;
portd=0;
trisb=248;
portb=0;
i=0||1;
while(1){
if(portd.f0==1)flag_sw1=1;
if(portd.f1==1)flag_sw2=1;
if(portd.f2==1)flag_sw3=1;
if(time_sw1>40){time_sw1=0;flag_sw1=0;i=~i;text[0]=i;}
if(time_sw2>40){time_sw2=0;flag_sw2=0;i=~i;text[1]=i;}
if(time_sw3>40){time_sw3=0;flag_sw3=0;i=~i;text[2]=i;}
}}