C语言能子函数调用子函数么?我在C51中断程序中调用了延迟函数delay(),中断反应就不正常 30

源码:#include<reg52.h>sbitweia=P2^0;sbitweib=P2^1;sbitweic=P2^2;unsignedcharletter;unsi... 源码:
#include <reg52.h>
sbit weia=P2^0;
sbit weib=P2^1;
sbit weic=P2^2;
unsigned char letter;
unsigned char num;
unsigned char table[5]={0x76,0x79,0x38,0x38,0x3f};
void delay(unsigned int yc);
void ls();/*数码管流水灯效果函数*/
void main()
{
EA=1;
EX0=1;
IT0=1;
while(1)
{
for(num=0;num<5;num++)
{
letter=table[num];
ls();
}

}
}
void delay(unsigned int yc)
{
unsigned long a;
unsigned long b;
for(a=yc;a>0;a--)
for(b=20;b>0;b--);
}
void ls()
{
weia=1;
weib=1;
weic=1;
P0=letter;
delay(350);//8
weia=0;
weib=1;
weic=1;
P0=letter;
delay(350);//7
weia=1;
weib=0;
weic=1;
P0=letter;
delay(350);//6
weia=0;
weib=0;
weic=1;
P0=letter;
delay(350);//5
weia=1;
weib=1;
weic=0;
P0=letter;
delay(350);//4
weia=0;
weib=1;
weic=0;
P0=letter;
delay(350);//3
weia=1;
weib=0;
weic=0;
P0=letter;
delay(350);//2
weia=0;
weib=0;
weic=0;
P0=letter;
delay(350);//1
}
/*中断函数不需要声明*/
void exter0() interrupt 0
{
P1=0X55;//为什么中断函数中引用delay延迟函数会出问题
delay(1000);//出问题的地方
P1=0XFF;
}
那该怎么修改呢???求指导
展开
 我来答
Oo没有蜡oO
2011-01-21 · TA获得超过3036个赞
知道小有建树答主
回答量:1602
采纳率:0%
帮助的人:1294万
展开全部
和调用延时无关,是你中断使用有问题,你在中断函数中需要做到以下几步才行,1,关闭中断,2,重设中断计数值,3,功能实现部分,在你的程序里就是P1的赋值及延时部分,4,开启中断
这样才是正确的中断调用
tech2china
2011-01-21 · 超过15用户采纳过TA的回答
知道答主
回答量:100
采纳率:0%
帮助的人:0
展开全部
可以的
不过你的中断写错了,有固定的格式的,关中断、计数器TR0=0,设置TH0,TL0,中断优先级(需要时),TR0=1,开中断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梵天弘业T2
2011-01-26 · TA获得超过2140个赞
知道小有建树答主
回答量:1305
采纳率:0%
帮助的人:983万
展开全部
这是c的编译规则的问题。对于int型7FFF次是可直接执行的 因为不管你定义的是什么型,对于1个循环跳转次数来说都是0-255是单跳转 0-7fff是2个跳转嵌套,16位数的最高位是符号的。这里不管i是什么型 对于循环就是把i的值带入入口而已。

通常做软循环不建议用INT的变量因为太不好就算了 而且切效率低。用UCHAR的2个循环嵌套就可完成你的要求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友173f3529c
2011-01-26 · TA获得超过678个赞
知道小有建树答主
回答量:355
采纳率:50%
帮助的人:296万
展开全部
中断的话,一般延时比较短,写几个_nop_就可以了。但是在其它程序里面调用延时函数一点问题也没有,可以放心的用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式