We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I declared different parameters, variables and pointers and I put into in two blocks. I declare and defined function for calculating, saving and checking chksum for both block. I realised that the compiler give error message when I try to pass through the pointer's address to a function. I tried to use an another pointer to point to the pointer's address but the compiler didn't support it. Has anybody a good idea to solve my problem. thank in advace leslie #include <reg51.h> #define record 7 #define byte unsigned char #define word unsigned int #define dword unsigned long int //declare funtions void save_block(byte xdata *start_addr,word xdata *chksum); word calc_block(byte xdata *start_addr,word xdata *chksum); bit chk_block(byte xdata *start_addr,word xdata *chksum); //declare variables xdata byte par_buff1[14]; xdata word chksum1; // xdata byte dummy1; // xdata byte xdata *rec_buf_start; xdata byte xdata *rec_buf_end; xdata byte xdata *wr_ptr; xdata byte xdata *rd_ptr; xdata word chksum2; // xdata word xdata **valami; main() { //valami=&rec_buf_start; if(chk_block&rec_buf_start,&chksum2)) { // do something } if (chk_block(&par_buff1[0],&chksum1)) { //do something } else { //do something } for(;;) { //do something } } // // functions definition // bit chk_block(byte xdata *start_addr,word xdata *chksum) { if(*chksum!=calc_block(start_addr,chksum)) { return 1; //setb c } else { return 0; } } word calc_block(byte xdata *start_addr,word xdata *chksum) { xdata word blsumma; while(start_addr!=(byte *)chksum) { blsumma+=(byte)*start_addr++; } return blsumma; } void save_block(byte xdata *start_addr,word xdata *chksum) { *chksum=calc_block(start_addr,chksum); }