大锤子 发表于 2024-11-9 00:56:13

Tiny RTOS 学习第一篇


完全按照楼主的教程,使用自制学习机验证简单流水灯测试程序:


流水灯原理图:

按键原理图:

测试功能:
程序初始功能为左到右的流水灯。
按键1: 左向右的流水灯;
按键2: 右向左的流水灯;
按键3: 三个灯闪烁;

代码:
Task0:
/* LED控制任务*/
void Task0(void)
{
        for(;;)
        {
                if(mode == 1) {
                        P35 = 0;                //LED On
                        OSDelay(t) ;    // 任务延时
                        P35 = 1;                //LED Off
                        P36 = 0;                //LED On
                        OSDelay(t) ;
                        P36 = 1;                //LED Off
                        P37 = 0;                //LED On
                        OSDelay(t) ;
                        P37 = 1;                //LED Off
                } else if (mode == 2) {
                        P37 = 0;
                        OSDelay(t) ;    // 任务延时
                        P37 = 1;
                        P36 = 0;                //LED On
                        OSDelay(t) ;
                        P36 = 1;                //LED Off
                        P35 = 0;                //LED On
                        OSDelay(t) ;    // 任务延时
                        P35 = 1;                //LED Off
                } else {
                        P35 = 0;
                        P36 = 0;
                        P37 = 0;
                        OSDelay(t) ;    // 任务延时
                        P35 = 1;
                        P36 = 1;
                        P37 = 1;
                        OSDelay(t) ;    // 任务延时
                       
                }
               
               
        }
}

/* 按键检测 任务 */
void Task1(void)
{
        static unsigned char Key1Cnt ;
        unsigned char newKey;
        for(;;)
        {
                if(!P64 || !P65 || !P66)
                {
                        if(!P64) {
                                newKey = KEY1;
                        } else if (!P65) {
                                newKey = KEY2;
                        } else {
                                newKey = KEY3;
                        }
                       
                        if(oldKey != newKey) {
                                Key1Cnt = 1;
                                oldKey = newKey;
                        }
                       
                        if(Key1Cnt < 0xff) Key1Cnt ++ ;
                }
                else
                {
                        Key1Cnt = 0 ;
                }
               
                if(Key1Cnt == 250)
                {
                        OSEnterCritical() ;
                        mode = newKey;
                        OSExitCritical() ;
                }
               
                OSTaskSuspend() ;// 任务挂起
        }
}

实验效果:




大叶子 发表于 2024-11-9 08:26:45

本帖最后由 大叶子 于 2024-11-9 08:28 编辑

大锤子 发表于 2024-11-9 00:56
Tiny RTOS 学习第一篇



看这面板是,游戏机?

展示一下,游戏机的内容吧,我挺好奇的。

大锤子 发表于 2024-11-9 17:25:17

大叶子 发表于 2024-11-9 08:26
看这面板是,游戏机?

展示一下,游戏机的内容吧,我挺好奇的。

不是游戏机, 温湿度计。 学习用的。

大叶子 发表于 2024-11-10 14:05:07

大锤子 发表于 2024-11-9 17:25
不是游戏机, 温湿度计。 学习用的。

有游戏机颜值的温湿度计,是不错呢

大锤子 发表于 2024-11-10 15:35:05

它里边有蓝牙模块,语音模块,温湿度模块。 还有flash。 外部有5个按键, 背部还有一个P32用于Usb烧录程序的, 如果强行做成游戏机也是可以的。{:4_167:}

wlhet 发表于 2024-11-11 08:50:46

大锤子 发表于 2024-11-10 15:35
它里边有蓝牙模块,语音模块,温湿度模块。 还有flash。 外部有5个按键, 背部还有一个P32用于Usb烧录程序 ...

那就做个?我来复刻

hande5 发表于 2024-11-11 09:49:04

学习了

大锤子 发表于 2024-11-14 09:35:14

大佬这个OS有最新版本吗? 和新例程吗?

hande5 发表于 2024-11-14 11:41:08

学习一下

fanxsp 发表于 2024-11-15 07:16:34

本帖最后由 fanxsp 于 2024-11-15 09:30 编辑

大锤子 发表于 2024-11-14 09:35
大佬这个OS有最新版本吗? 和新例程吗?
有新版本,新增一些功能,有空的时候,整理一下再上传。
我手头只有一块开天斧实验板,只能做一些很简单的例程。
关于例程,你有什么建议?
页: 17 18 19 20 21 22 23 24 25 26 [27] 28 29
查看完整版本: 原创极简的51-MCU专用RTOS TinyRTOS51