#include rtx51tny.h
#include reg51.h
#define LED_PORT1 P1
#define LED_PORT2 P2
void delay_ms(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 120; j++); // Approximate 1ms delay at 12MHz
}
}
void job0 (void) _task_ 0 {
os_create_task (1);
os_create_task (2);
os_create_task (3);
os_delete_task (0);
}
void job1 (void) _task_ 1
{
unsigned char i;
while (1) {
for (i = 0; i < 10; i++) {
LED_PORT1 = 0xFF; // Turn all LEDs on
delay_ms(100);
LED_PORT1 = 0x00; // Turn all LEDs off
delay_ms(100);
}
delay_ms(10); // Delay 10ms
os_send_signal(2); // Signal Task 2
os_wait(0x01); // Wait for signal from another task
}
}
void job2 (void) _task_ 2
{
unsigned char i;
while (1) {
os_wait(0x01); // Wait for signal from Task 1
for (i = 0; i < 20; i++) {
LED_PORT2 = 0xFF; // Turn all LEDs on
delay_ms(100);
LED_PORT2 = 0x00; // Turn all LEDs off
delay_ms(100);
}
os_send_signal(3); // Signal Task 3
}
}
void job3 (void) _task_ 3
{
unsigned char message[] = "Hello\r\n";
unsigned char i;
SCON = 0x50; // Configure UART in Mode 1 (8-bit UART)
TMOD = 0x20; // Timer 1 in Mode 2
TH1 = 0xFD; // Set baud rate to 9600 (11.0592 MHz crystal)
TR1 = 1; // Start Timer 1
while (1) {
os_wait(0x01); // Wait for signal from Task 2
for (i = 0; message[i] != '\0'; i++) {
SBUF = message[i]; // Send character
while (!TI); // Wait for transmission to complete
TI = 0; // Clear transmit interrupt flag
}
os_send_signal(1); // Signal Task 1
}
}