我编的一个小程序

[复制链接]
3235|11
 楼主| hlhfootbal 发表于 2007-6-17 14:12 | 显示全部楼层 |阅读模式
void&nbsp;main(void)&nbsp;{<br />&nbsp;&nbsp;/*&nbsp;put&nbsp;your&nbsp;own&nbsp;code&nbsp;here&nbsp;*/<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;t=0;<br />&nbsp;&nbsp;&nbsp;DDRB=0XFF;<br />&nbsp;&nbsp;&nbsp;PORTB=0XFF;<br />&nbsp;&nbsp;&nbsp;for(t=0;t++;t&lt8){<br />&nbsp;&nbsp;&nbsp;PORTB-=1;<br />&nbsp;&nbsp;&nbsp;}<br />}<br />这是我编的一个小程序,我是想让和B口相连的那8盏灯依次闪亮,但不知道是什么原因没有正常工做。不知道这个程序的逻辑错误出在哪里?那位大虾能否帮个忙?谢谢!
softradio 发表于 2007-6-17 20:51 | 显示全部楼层

什么器件?

  
dongshan 发表于 2007-6-18 07:53 | 显示全部楼层

晕,两个问题需考虑

1.从你程序看,你的是低电平点亮,不过在减的过程中,可能有多个灯同时点<br /><br />亮的情况。比如为0xfc时。<br /><br />2.点亮之后无延时,又进行了下一次赋值,你肉眼是看不出的。<br /><br />
 楼主| hlhfootbal 发表于 2007-6-18 17:40 | 显示全部楼层

谢谢

我用的是mc9s12dg12b
张明峰 发表于 2007-6-18 18:55 | 显示全部楼层

最根本的错误就是

所有单片机的程序都是一个死循环,亦即main函数不能退出。遗憾的是你的main函数在执行完for循环后就结束了。
doth 发表于 2007-6-19 11:45 | 显示全部楼层

回答

&nbsp;&nbsp;for(t=0;t++;t&lt8)<br />语句错误!!!!!<br />应该是for(t=0;t&lt8;t++)吧<br />我觉得应该是这样。。我也问个问题。。<br />我对智能小车中用的连续性红外线传感器理解有问题,<br />就是:<br />红外线传感器应该是照到黑线,接受的值应该是小于0xff吧,现在假设黑线的距离是25mm,以黑线的中心线为空间坐标的y轴建立空间坐标系,我的两个连续型红外传感器分别安装在x轴上的-12mm和12mm处,你说传感器应该返回小于0xff的值吧,为什么返回的值是0xff(相当于传感器没有检测到黑线)?????
doth 发表于 2007-6-19 11:46 | 显示全部楼层

回答

传感器有效半径设为10mm!
dongshan 发表于 2007-6-19 15:03 | 显示全部楼层

厉害

楼主一出手,处处经典。<br /><br />哈哈!不仔细看真看不出这么多。。。
h0uwenb0 发表于 2007-6-19 18:58 | 显示全部楼层

路过

void&nbsp;main(void)&nbsp;{<br />&nbsp;&nbsp;/*&nbsp;put&nbsp;your&nbsp;own&nbsp;code&nbsp;here&nbsp;*/<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;t=0;<br />&nbsp;&nbsp;&nbsp;DDRB=0XFF;<br />&nbsp;&nbsp;&nbsp;PORTB=0XFF;<br />&nbsp;&nbsp;&nbsp;for(t=0;t++;t&lt8){<br />&nbsp;&nbsp;&nbsp;PORTB-=1;<br />&nbsp;&nbsp;&nbsp;}<br />}<br />大家提过的问题我就不说了,这牌子的片子我没用过,如果没猜错DDRB是定义输入输出,在我使用过的片子里都是为0时是输出,为1是输入,不知你这个片子是不是这个样子的!
 楼主| hlhfootbal 发表于 2007-6-19 19:33 | 显示全部楼层

谢谢,各位

doth,我觉的连续性红外线传感器照到黑线的取值大小还更你设计的电路有关.真羞愧,犯了for(t=0;t++;t&lt8)这样的错误.<br />DDRB是定义输入输出,不过我不知道为0时是输出还是为1时是输出,我只知道为1时灯亮.<br />
h0uwenb0 发表于 2007-6-20 11:54 | 显示全部楼层

简单写两句,不对别笑!

//试试这段能用不?<br />void&nbsp;delay(){<br />/*延时的循环*/<br />}<br />void&nbsp;main(void)&nbsp;{<br />&nbsp;&nbsp;/*&nbsp;put&nbsp;your&nbsp;own&nbsp;code&nbsp;here&nbsp;*/<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;t=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这里可以定义无符号字符型,不然太浪费资源了!<br />&nbsp;&nbsp;&nbsp;DDRB=0X00;<br />&nbsp;&nbsp;&nbsp;while(1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTB=0X1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//让最低位控制的灯亮;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(t=0;t&lt8;t++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//要有延时的不然闪了也看不出来<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTB=PORTB&lt&lt1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//左移一位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />}<br />
 楼主| hlhfootbal 发表于 2007-6-20 18:20 | 显示全部楼层

LS,谢谢

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

417

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部