//--------------------------------------------------------------- // EXAMPLE EX16.C : Demonstrate a FUNCTION call - V. // // Using a POINTER to pass an array to/from a function. // // C.P. Diduch, Dec 1999. //--------------------------------------------------------------- #define KEY_PA 0x138 // 82C55A port addresses for PA, #define KEY_PB 0x13A // PB, #define KEY_PC 0x13C // PC and the #define KEY_CON 0x13E // Control Register. #include // conio.h contains prototypes for // inportb() and outportb(). char sum(char *A, char N); // Function definition or prototype. //--------------------------------------------------------------- void main() { unsigned char DATA[] = {0,1,2,3,4,5,6,7}; char Y; outportb(KEY_CON, 0x82); // Initialize 82C55A PPI with ports // KEY_PC and KEY_PA as OP ports and // port PB as an IP port. Y = sum(&DATA[0], 5); outportb(KEY_PC, Y); Y = sum(&DATA[0], 7); outportb(KEY_PC, Y); } //--------------------------------------------------------------- char sum(char *A, char N) { unsigned i, j; char X; j = 0; X = 0; for (i = 0; i < N; i++) { X = X + *(A + j); j = j + 1; } return X; }