单片机延时程序怎么计算的

{unsignedinti;while(m--)//这个延时程序内部循环90次{for(i=0;i<90;i++);}}voidmain(){unsignedchart;... {unsigned int i;
while(m--) //这个延时程序内部循环90次
{
for(i=0;i<90;i++);
}
}

void main()
{unsigned char t;
t=0xfe; //这个t=0xfe;是根据什么来算的?我把它改成0x01时,发现LED灯全亮着
P1=t;
while(1)
{
delay(500); //调用延时程序 循环次数500*90次 . 不理解的是:写的那个内部循环90是指什么意思?delay(500); 这个里面的500是指500us还是500ms?
我想问各位二个问题:第一个:t=0xfe; //这个t=0xfe;是根据什么来算的?我把它改成0x01时,发现LED灯全亮着 ???
第二个是:delay(500); //调用延时程序 循环次数500*90次 . 不理解的是:写的那个内部循环240是指什么意思?delay(500); 这个里面的500是指500us还是500ms?
展开
 我来答
寒试决
2012-04-14 · TA获得超过675个赞
知道答主
回答量:55
采纳率:100%
帮助的人:19.6万
展开全部
这样 我很想帮你回答,但是你贴出来的程序都略去delay函数了。而且m也没有定义。
P1所谓都亮着 你总得贴出硬件图才能让我们告你吧。完善一下问题 ,很乐意帮你。

那个500 并不是具体的多长时间 ,应该是500*m个机器周期的时间,他是不能具体的。
在你这里并没有用到定时器。

再补充一点,刚才看你问数码管的问题,为什么不可以这样设置0x00 0x01 0x02用数字呢?
答曰:你要想想,单片机的一组八个口是分别接到七段数码管的7个灯和一个小数点的。倘若你的数码管是阴极连接,你想想0X00能点亮数码管的灯吗?0X01也只能点亮一个小横杠。

一个 “8.” 你观察一下数码管 是不是有7个小横杠,和一个小数点?
那么如果你硬件是数码管阴极连接,你想显示数字8. 是不是要写0XFF? 如果你想显示1. 那么你看看这里需要点亮三个东西,假设这三个灯对应的是你的P1口=00010011,那你是不是只能给P1口赋值0X13呢? 如果不理解。请追问。
玲玲于于
2012-04-11 · 超过16用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:85.3万
展开全部
(1)设置的t赋给P1口,应该是利用移位来实现LED依次亮的,0xfe=11111110, 是0的那一位亮,0x01=00000001,按理是1的那个灭的,是不是移位出错了或者延时什么问题。
(2)delay()函数里的500是个初值通过改变它调节延时的,不是时间
追问
为什么很写之类的东西都是设为0xfe 、0xbo之类的为什么不可以这样设置0x00  0x01  0x02用数字呢?例如写个数码管的数组定义unsigned char  code shu[]={0xfe  0xe0  0xb1 ···}为什么不可以用0x00   0x01  0x02呢?这是为什么呢?帮忙回答 加分
追答
端口置1不接通,置0接通。八位二进制组合成两位16进制,单片机计算机之中16进制通常前面加0x。
如何设置根据LED在单片机连接的端口、要求亮灯的形式确定的。
如果设置0x00二进制就是00000000,八位端口设置为低,则接通灯全亮。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式