I am using the following code to blink a LED 10 times and then stop. But it goes on blinking even after 10 counts. please let me know where i have gone wrong in the code
#include <stdio.h> #include <chipcon/hal.h> #include <chipcon/cc1010eb.h> #define Wait_Time 200 void main() { int a=0; // Set Port 1 Bit 2 as O/P halSetPortBitDir(1, 2, POUT); // Initialise Counter while(a!=10) { // Wait period between blinks halWait(Wait_Time, CC1010EB_CLKFREQ); //Toggle LED halSetPortBit(1, 2, FALSE); a++; } } //main
As Dan pointed out, you must have some type of forever loop in some task. By default, Keil adds a jump to main for all of us that might forget the forever loop. This keeps our program from running wild through bad code. For the task that must run one time only such as initialization, place the forever loop with careful thought. Bradford
"By default, Keil adds a jump to main for all of us that might forget the forever loop." Eh?? Where???
Andrew; Look at the Hello World example code. Remove the while(1) and look at the disassembly. At the bottom of the code you will see a LJMP to Main put there by the closing brace.