??? 02/22/09 12:16 Read: times |
#162637 - Please have a look Responding to: ???'s previous message |
In the following code the value of a variable "row" is not increasing(automatically goes back to zero) due to which P2 is not working properly.
But when i remove the "switch" statement, it starts working properly. Why??any help? #include <reg51.h> sbit P2_0 = P2^0; sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; sbit P2_5 = P2^5; sbit P2_6 = P2^6; sbit P2_7 = P2^7; sbit P1_0 = P1^0; sbit P1_1 = P1^1; sbit P1_2 = P1^2; sbit P1_3 = P1^3; unsigned int row_data1[5][5]={ {1,1,1,1,1}, {0,1,0,0,0}, {0,0,1,0,0}, {1,1,1,1,1}, {1,1,1,1,1} }; unsigned int word; unsigned int i; unsigned int j; unsigned char row_data[5][5]; unsigned char loop_words; unsigned char loop; unsigned char loop1; unsigned char a; unsigned int row; unsigned char delay; unsigned char col; unsigned char sr; unsigned char msg[3]; unsigned char row_buff[6]; code unsigned char msg_org[3]={"ABC"}; main() { while (1) { word=0; a=0; //strobe P1_0=0; //EO enable P1_3=0; for (sr=0;sr<7;sr++) { row_buff[sr]=0; } for (loop_words=0;loop_words<3;loop_words++) { for (loop=0;loop<=5;loop++) { for (loop1=0;loop1<50;loop1++) { for (row=0;row<=5;row++) { for (word=0;word<=loop_words;word++) { msg[word]=msg_org[word]; //WHEN I REMOVE THIS SWITCH IT WORKS PROPERLY switch(msg[word]) { case 'A': for (i=0;i<6;i++) { for (j=0;j<6;j++) {row_data[i][j]=row_data1[i][j]; } } break; } if (loop_words==0) { for (col=0;col<=loop;col++) { row_buff[a]=row_data[row][col]; P1_1=row_buff[a] ; //clock P1_2=0; P1_2=1; a=a+1; } }//if loop words==0 else if (loop_words>0) { if (word<loop_words) { for (col=0;col<=5;col++) { row_buff[a]=row_data[row][col]; P1_1=row_buff[a] ; //clock P1_2=0; P1_2=1; a=a+1; }//for col }//for if else if (word=loop_words) { for (col=0;col<=loop;col++) { row_buff[a]=row_data[row][col]; P1_1=row_buff[a] ; //clock P1_2=0; P1_2=1; a=a+1; }//for col }//for if }//for if }//for word //PROBLEM // "NOT INCREASING and every time P2_2 is zero" if (row==0) P2_0=0 ; if (row==1) P2_1=0 ; if (row==2) P2_2=0; if (row==3) P2_3=0; if (row==4) P2_4=0; //strobe P1_0=1; //EO enable P1_3=1; // delay for (delay=0;delay<200;delay++) { } //clr the buffer here for (sr=0;sr<6;sr++){ row_buff[sr]=0; } a=0; //clr strobe P1_0=0; //clr EO enable P1_3=0; //ports initializaion P2=0xFF; //clr the SR for (sr=0;sr<9;sr++){ P1_1=0; //clock P1_2=0; P1_2=1; } }//for row }//fr loop1 }//for loop }//for loop_words }//while }//main |