永发信息网

单片机c语言带参数延时怎么写?

答案:2  悬赏:60  手机版
解决时间 2021-12-17 03:23
下面这段是不带参数的,怎么改带参数的20MS延时?
void Delay10ms() //@12.000MHz
{
unsigned char i, j;

i = 117;
j = 184;
do
{
while (--j);
} while (--i);
}

可以改for语句延时吗?
最佳答案
12MHz的晶振,一个机器周期是1uS. 

void Delay_ms(unsigned char i, unsigned char j) //@12.000MHz
{
     unsigned char n = 0;
     unsigned char m = 0;
     for(n = 0; n < i; n++)
         for(m = 0; m < j; m++);
}

然后调用:
Delay_ms(117, 184);//Delay 20 mS
117 × 184 = 21528, 约等于 20mS.
这样很不准确,实际计算指令周期的话,接近了40mS
下面这中方法能准确一些:
void Delay_ms(uchar count)
{
    uchar i, j, k;
    for(k = count; k > 0; k--)
    for(i=5; i>0; i--)
    for(j=98; j>0; j--);
}
全部回答
在循环里判断是否满足跳出的条件,满足则跳出循环,不满足就继续延时直到延时结束。 具体的条件要有程序的要求来,比如说某个io口的电平的状态。 sbit state=p1^7; delay(uint) { uint x,y; for(x=1000;x>0;x--) for(y=1200;y>0;y--) { if(state==1) return ;//当p1.7口为高时跳出循环 } } //由于加入了一条语句,延时要重新计算
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
开机时出现RuntimeError!Program:C:\Windows\
如何上好语文课外阅读指导课的活动反思
邮政储蓄银行的存折定期,请问定期当天到期当
如果手机欠费,是不是要交清话费,才能办新的
古代描写天庭公主的外貌的句子
如何用word2003做流程图
关于信心的歇后语有哪些?
我的导航是飞歌3代,怎样把开机画面改为汽车
c照升b照c照丢了可以补办吗
从丰桥到京都怎么走?
完美国际妖精多少级用挂开始挂机
梦见菜地里全部都是水是什么意思?
至元通宝是哪个朝代的
决斗之城怎么升级决斗之城快速升级攻略
订婚都需要做些什么?
推荐资讯
前光庄村委会地址在哪?我要去那里办事
当一个大你的女生说你傻得可爱,我25,那说明
崔各庄派出所办公位置在哪啊?好找么?
桃源县交通局交通管理一所办公位置在哪啊?好
选择一个行业,按公司可能扮演的角色分类。谈
上海市烟草专卖局静安分局位置在什么地方啊,
41除以333的商的小数部分前二十位的数字之和
神盾局特工在哪里能看?求解
单选题Ben has not the leas
美国恐怖故事第三季里有一个放烟的神奇是什么
BTC123怎么样啊?
把56.05的小数点先向右移动两位,再向左移动
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?