搜索
bottom↓
回复: 6

改写一个C程序,关于15个IO口根据条件循环输出的问题。

[复制链接]

出0入0汤圆

发表于 2013-2-4 10:51:11 | 显示全部楼层 |阅读模式
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
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-2-4 10:51:12 | 显示全部楼层
楼主想用类似数组的方式去控制多个IO口?
可以呀,把LED的位定义到数组里,给端口赋值时就去取数组里的数就行了
#define BIT(x)    (1<<(x))
char pabit[15]={BIT(3),BIT(4),BIT(5),BIT(6),BIT(7),0,0,0.....};//PORTA对应15个LED的位
char pcbit[15]={0,0,0,0,0,0,BIT(7),BIT(6)......};
char pgbit[15]={0,0,0,0,0,BIT(2),0......};
for(i=0;i<15;i++)
{
if(条件成立)
{
   PORTA|=pabit[i];
   PORTC|=pcbit[i];
   PORTG|=pgbit[i];
}
else
{
   PORTA&=~pabit[i];
   PORTC&=~pcbit[i];
   PORTG&=~pgbit[i];
}

}

出0入0汤圆

 楼主| 发表于 2013-2-4 11:46:45 | 显示全部楼层
lcw_swust 发表于 2013-2-4 11:36
楼主想用类似数组的方式去控制多个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口。

出0入0汤圆

发表于 2013-2-4 11:55:24 | 显示全部楼层
椒盐时代 发表于 2013-2-4 11:46
谢谢解答
不过貌似不合适
因为每次只能一个IO口置位,即每次只能一个LED亮或灭。

楼主啥意思呀,楼主给的程序跟我写的有区别吗?

出0入0汤圆

发表于 2013-2-4 12:09:34 | 显示全部楼层
本帖最后由 yklstudent 于 2013-2-4 12:10 编辑

呵呵 好奇吧的想法
楼主的表达或者想法太含糊了

出105入79汤圆

发表于 2013-2-4 12:30:43 | 显示全部楼层
写一个LED控制函数,传入2个参数,一个是1、0开关,一个是LED的编号。 内部有两种方法实现,一个是用是switch语句判断端口号赋值。一个是定义一个16bit的变量如unsigned char 。进行位操作(用&与0的方法置0,用|或1的方法置1),然后赋值到端口。

出0入0汤圆

 楼主| 发表于 2013-2-4 15:21:00 | 显示全部楼层
lcw_swust 发表于 2013-2-4 11:55
楼主啥意思呀,楼主给的程序跟我写的有区别吗?

非常感谢
是我看错了
程序没问题
顺利实现了目标。
谢谢指点啊~~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 08:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表