/*SINE4INT.C-SINE PROGRAM WITH 4 POINTS USING INTERRUPTS */ #include "aiccomc.c" /*AIC comm routines */ int AICSEC[4] = {0x162c,0x1,0x4892,0x67}; /*config data for AIC */ int data_out, loop = 0; /*declare global variables */ int sin_table[4] = {0,1000,0,-1000}; /*values for 4-point sinewave */ int ampt_ctrl = 10; int delay_cnt = 0; void c_int04() { asm(" AND 0FFFFFFF7h,IE"); delay_cnt = 0; if (ampt_ctrl < 10) ampt_ctrl++; else ampt_ctrl = 0; } void c_int05() { int out; out = sin_table[loop] * ampt_ctrl * 0.1; PBASE[0x48] = out << 2; /*output value from sine table*/ if (loop < 3) ++loop; /*increment loop counter < 3 */ else loop = 0; /*reset loop counter */ if (delay_cnt < 5000) delay_cnt++; else if (delay_cnt == 5000) { asm(" AND 0FFFFFFF7h,IF"); asm(" OR 00000008h,IE"); } else asm(" OR 00000008h,IE"); } main() { asm(" OR 00000008h,IE"); /*enable EINT3 CPU interrupt*/ AICSET_I(); /*function to configure AIC */ for (;;); /*wait for interrupt */ }