永发信息网

求助单片机C语言不能正常进入延时子程序

答案:2  悬赏:80  手机版
解决时间 2021-02-22 22:44
程序的功能是根据拨码开关的位置驱动四个电磁铁吸合断开,其吸断的时间由延时程序delay()的循环次数决定,吸合为delay(50),断开为delay(k),如下:
#include
#include


void delay(unsigned int k)
{
unsigned int i;
for(;k>0;k--)
for(i=0;i<200;i++);
}


void button(unsigned int j)
{
unsigned int k;
k=25*j;
P1=0x01;delay(50);
P1=0x00;delay(k);
P1=0x02;delay(50);
P1=0x00;delay(k);
P1=0x04;delay(50);
P1=0x00;delay(k);
P1=0x08;delay(50);
P1=0x00;delay(k);
}

void main()
{
while(1)
{

switch(P0)
{
case 0xFE:button(8);break;
case 0xFD:button(7);break;
case 0xFB:button(6);break;
case 0xF7:button(5);break;
case 0xEF:button(4);break;
case 0xDF:button(3);break;
case 0xBF:button(2);break;
case 0x7F:button(1);break;
default:break;
}
}
}
程序可以通过keil(评估版)编译,没有warnings,问题是在软件仿真时button()函数定义段中的delay(k)可以顺利跳进delay()延时子程序,但delay(50)怎么也跳不进去,除了P1=0x08;delay(50);这一行是个例外。通过观察时间seconds也是同样的情况。怀疑是字符书写的问题,已重试过无效。感觉很奇怪,望前辈指导,谢谢!
最佳答案
确实奇怪。
从打开的反汇编窗口来看,delay(50)确实没有生成汇编语言的程序。
全部回答
先设置好中断,在中断中设置标志,在主程序中对标志进行检测来确定你的哪个灯亮与不亮和延时,具体程序要配合你的硬件才能写得出来.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
玩红警怎么老是出现ok这个东西
新锅怎么去锈
果园里桃树的棵树比梨树多百分之二十五,桃树
是单独这一颗牙带牙套 还是全部
普洱福源茶庄地址有知道的么?有点事想过去
柳江区名途幼儿园我想知道这个在什么地方
出纳工作怎样才能做好
跪求秦赢儿的《吸血迷情》txt完结版
有人说用桑槐茶能降血糖,是否真实
小学语文自然段起什么结构,是哪些结构
形容杏仁的词语
百越商场化龙仙岭农家店这个地址在什么地方,
洞口梦航教育咨询有限公司在哪里啊,我有事要
肺心病病情,人血白蛋白和丙种球蛋白哪种药效
小洪峪地址在哪,我要去那里办事
推荐资讯
竹笋画怎么画
描写麻雀样子、叫声、动作的作文
你的拼音怎么写
手机屏幕倒置怎么办
桌面的数据太多,导致电脑很卡也很乱,有什么
南通的手机号码开头大多数都是什么撒
五彩文化中心在什么地方啊,我要过去处理事情
如山律师地址有知道的么?有点事想过去
慈溪农村商业银行白沙支行天东分理处地址在哪
关于电驴继续下载part met文件的问题
佳艺玻璃滑动门怎么去啊,有知道地址的么
广达人力资源地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?