|
楼主 |
发表于 2020-8-25 08:08:18
|
显示全部楼层
程序来了。
写的不够简练。竟然用了rtx51。
#include<rtx51tny.h>
#include"stc15.h"
sbit led=P3^6; //运行指示灯
sbit gpio0_sw=P3^2; //GPIO0反向
sbit gpio2_sw=P3^3; //GPIO2反向
sbit gpio3_sw=P5^5; //GPIO3反向
sbit sp4t_a=P1^3; //SP4T的A
sbit sp4t_b=P1^2; //SP4T的B
sbit sp8t_a=P1^5; //SP8T的A
sbit sp8t_b=P1^4; //SP8T的B
sbit sp8t_c=P5^4; //SP8T的C
void init(void) _task_ 0
{
//IO初始化
// P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
// x x 推挽输出 推挽输出 推挽输出 推挽输出 推挽输出 推挽输出
//P1M1 0 0 0 0 0 0 0 0
//P1M0 0 0 1 1 1 1 0 0
P1M1 = 0x00;
P1M0 = 0x3c;
// P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
// x 推挽输出 x x 高阻输入 高阻输入 推挽输出 高阻输入
//P3M1 0 0 0 0 1 1 0 1
//P3M0 0 1 0 0 0 0 1 0
P3M1 = 0x0d;
P3M0 = 0x42;
// P5.7 P5.6 P5.5 P5.4 P5.3 P5.2 P5.1 P5.0
// x x 高阻输入 推挽输出 x x x x
//P5M1 0 0 1 0 0 0 0 0
//P5M0 0 0 0 1 0 0 0 0
P5M1 = 0x20;
P5M0 = 0x10;
os_create_task(1);
os_create_task(2);
os_delete_task(0);
}
void channel_switch(void) _task_ 1
{
while(1)
{
if((!gpio0_sw)&(!gpio2_sw)&(gpio3_sw))
{
sp8t_a=1;sp8t_b=1;sp8t_c=1;
sp4t_a=1;sp4t_b=1;
}//ch1
if((!gpio0_sw)&(!gpio2_sw)&(!gpio3_sw))
{
sp8t_a=0;sp8t_b=1;sp8t_c=1;
sp4t_a=0;sp4t_b=1;
}//ch2
if((gpio0_sw)&(gpio2_sw)&(gpio3_sw))
{
sp8t_a=1;sp8t_b=0;sp8t_c=1;
sp4t_a=1;sp4t_b=0;
}//ch3
if((!gpio0_sw)&(gpio2_sw)&(gpio3_sw))
{
sp8t_a=1;sp8t_b=0;sp8t_c=0;
sp4t_a=1;sp4t_b=1;
}//ch4
if((gpio0_sw)&(gpio2_sw)&(!gpio3_sw))
{
sp8t_a=0;sp8t_b=0;sp8t_c=0;
sp4t_a=1;sp4t_b=1;
}//ch5
if((gpio0_sw)&(!gpio2_sw)&(gpio3_sw))
{
sp8t_a=0;sp8t_b=0;sp8t_c=1;
sp4t_a=0;sp4t_b=0;
}//ch6
os_wait(K_TMO,10,0);
}
}
void run(void) _task_ 2
{
while(1)
{
led=!led;
os_wait(K_TMO,100,0);
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|