改写一个C程序,关于15个IO口根据条件循环输出的问题。
15个IO 口对应 15个LED,根据条件1 的结果来决定15路IO 口的输出状态。比如:
条件1
成立LED1=1
反之LED1=0
条件1 要循环15次,对应15个LED。
15个IO 口是
#define LED1 PORTA_Bit3
#define LED2 PORTA_Bit4
#define LED3 PORTA_Bit5
#define LED4 PORTA_Bit6
#define LED5 PORTA_Bit7
#define LED6 PORTG_Bit2
#define LED7 PORTC_Bit7
#define LED8 PORTC_Bit6
#define LED9 PORTC_Bit5
#define LED10 PORTC_Bit4
#define LED11 PORTC_Bit3
#define LED12 PORTC_Bit2
#define LED13 PORTC_Bit1
#define LED14 PORTC_Bit0
#define LED15 PORTG_Bit1
想做一个结构体或者数组之类的,让IO端口可以和条件1对应循环。
条件1(i0;i<15;i++)
{
LED ( i ) =1
}
else
{
LED ( i ) =0
} 楼主想用类似数组的方式去控制多个IO口?
可以呀,把LED的位定义到数组里,给端口赋值时就去取数组里的数就行了
#define BIT(x) (1<<(x))
char pabit={BIT(3),BIT(4),BIT(5),BIT(6),BIT(7),0,0,0.....};//PORTA对应15个LED的位
char pcbit={0,0,0,0,0,0,BIT(7),BIT(6)......};
char pgbit={0,0,0,0,0,BIT(2),0......};
for(i=0;i<15;i++)
{
if(条件成立)
{
PORTA|=pabit;
PORTC|=pcbit;
PORTG|=pgbit;
}
else
{
PORTA&=~pabit;
PORTC&=~pcbit;
PORTG&=~pgbit;
}
} lcw_swust 发表于 2013-2-4 11:36 static/image/common/back.gif
楼主想用类似数组的方式去控制多个IO口?
可以呀,把LED的位定义到数组里,给端口赋值时就去取数组里的数就 ...
谢谢解答
不过貌似不合适
因为每次只能一个IO口置位,即每次只能一个LED亮或灭。
比如
for (int i=0;i<15;i++)
{
if ( 1 < R[ i ] <10 )
{
LED[ i ] =0 ;
}
else
{
LED[ i ] =1 ;
}
}
里面的LED[ i ] 对应15个IO口。 椒盐时代 发表于 2013-2-4 11:46 static/image/common/back.gif
谢谢解答
不过貌似不合适
因为每次只能一个IO口置位,即每次只能一个LED亮或灭。
楼主啥意思呀,楼主给的程序跟我写的有区别吗? 本帖最后由 yklstudent 于 2013-2-4 12:10 编辑
呵呵 好奇吧的想法
楼主的表达或者想法太含糊了 写一个LED控制函数,传入2个参数,一个是1、0开关,一个是LED的编号。 内部有两种方法实现,一个是用是switch语句判断端口号赋值。一个是定义一个16bit的变量如unsigned char 。进行位操作(用&与0的方法置0,用|或1的方法置1),然后赋值到端口。 lcw_swust 发表于 2013-2-4 11:55 static/image/common/back.gif
楼主啥意思呀,楼主给的程序跟我写的有区别吗?
非常感谢
是我看错了
程序没问题
顺利实现了目标。
谢谢指点啊~~~
页:
[1]