单片机ms延迟函数无缘无故的错误

单片机ms延迟函数无缘无故的错误,第1张

有时候需要长时间的延时时,可以用循环也可以传一个大点的参数。但是在传大点的参数时一定要看清楚参数的类型及此类型所能表示的值的范围。

如我所编AD转换程序中,在转换时间要长达30ms时才能有有效的数据输出。如果时间过短,则不会起到即时的效果。unsigned char 最大值为255再大就要用循环了。

下面是原码:

#include

#include

sbit wr = P3^6

sbit rd = P3^7

sbit dula = P2^6

sbit wela = P2^7

unsigned char j,k,aa

void delay(unsigned char i) //最大值255

{

for(j=ij>0j--)

for(k=125k>0k--)

}

void main()

{

unsigned char a

while(1)

{

wela = 1//选通P0的74hc573

P0 = 0//选通ADCS

wr = 0//起动adc0804,写入模拟信号

_nop_()

wr = 1

delay(10)

// for(a = 20a>0a--)

delay(255)//转换等待

rd = 0//AD读使能

}

}

你可以先分开来调,把每个部分先分别调好了,让数码管能单独显示了,然后再调ad部分,然后综合起来调,你那个数码管部分用的是573,把这一块调好了,然后多读adc0804的资料,了解清楚adc0804的资料后再写程序,注意时序不要错了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10944911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存