Cepark 51基于RTX-51 tiny的花样流水灯
时间:11-25
来源:互联网
点击:
/*
** 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);
}
}
** 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);
}
}
Cepark51RTX-51tiny花样流水 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)