您的位置 首页 嵌入式

Cepark 51根据RTX-51 tiny的把戏流水灯

***RTX-51的移植**此程序是循环花样显示LED灯**有三个显示样式,分别对应下面的三个进程**下面的算法中用到了时间到空间的转换,

/*
** RTX-51的移植
** 此程序是循环把戏显现LED
** 有三个显现款式,别离对应下面的三个进程
** 下面的算法顶用到了“时刻到空间”的转化,使得算法简化不少
** 此程序我已在Cepark 51开发板上实验经过。
** P0口接8个LED灯,低电平点亮!
*/
#include
#include
constunsignedchartable[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x00};

/*时刻到空间的转化,假如table是:
const unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
则算法和代码会多出一倍来。table数组尽管增加了一倍,算法也随之减少了一半,
优点当然不止在这里表现,下面的进程2也减少了一半*/

//进程0 左->右->左

voidLED0(void)_task_ 0

{
inti;
os_create_task(1);//创立进程1

os_create_task(2);//创立进程2

while(1)
{
for(i=0;i<15;i++)
{
P0=table[i];
os_wait(K_TMO,30,0);//等候30*10000奇妙 = 0.3秒

}
os_send_signal(1);//发送Signal信号,激活进程1

os_wait(K_SIG,0,0);//等候信号

}

}

//进程1 全亮->全灭->全亮

voidLED1(void)_task_ 1

{
inti;
while(1)
{
os_wait(K_SIG,0,0);
for(i=0;i<3;i++)
{
P0=table[15];//全亮

os_wait(K_TMO,30,0);
P0=table[16];//全灭

os_wait(K_TMO,30,0);
}
os_send_signal(2);
}

}

//进程2 两头->中心中心->两头

voidLED2(void)_task_ 2

{
inti;
while(1)
{
os_wait(K_SIG,0,0);
for(i=0;i<8;i++)
{
P0=table[i]|table[i+7];//因为table长度多一倍,省去了一个循环,并且算法也简化了。

os_wait(K_TMO,30,0);
}
os_send_signal(0);

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/258798.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部