/* * myfirst.c * First C program for 2051 experiment * complement P1.7 every 0.5 sec * Copyright (C) 1999 Wichit Sirichote * compiled with Dunfield Micro-C for 8051 Release 3.2 */ #include c:\mc\8051io.h /* include i/o header file */ #include c:\mc\8051reg.h extern register char cputick; // cputick was incremented every 10ms register unsigned char sec100,flag1; #define n 50 task1(); // functions declarations task2(); main() { flag1 = 0; sec100 = 0; serinit(9600); // set timer0 to be 16 bit counter while(1){ while(cputick == 0) ; cputick = 0; task1(); task2(); } } task1() // set bit 0 of flag1 every n*10ms { sec100++; // increment sec100 if (sec100 >= n) {sec100 = 0; // clear sec100 flag1 |= 0x01; // set bit 0 of flag1 } } task2() { if ((flag1 & 0x01) != 0) // execute below if bit 0 of flag1 is set { // P1 ^= 0x80; // exclusive or the latch bit 7 with 0x80 asm " CPL P1.7"; // complement P1.7 flag1 &= ~0x01; // clear bit 0 of flag1 } }