没有合适的资源?快使用搜索试试~ 我知道了~
89c52精确延时子函数
4星 · 超过85%的资源 需积分: 50 37 下载量 58 浏览量
2011-10-10
13:16:20
上传
评论
收藏 4KB TXT 举报
温馨提示
试读
3页
sbit?LED??=??P1^0;??????//?定义一个管脚(延时测试用) unsigned?int?i?=?3;?????//?注意i,j的数据类型, unsigned?char?j?=?3;????//?不同的数据类型延时有很大不同 //-----------------各种精确延时语句----------------------------------- while(?(i--)!=1?);??????//?延时10*i个机器周期 i?=?10;?while(?--i?);???//?延时8*i+2个机器周期 i?=?10;?while(?i--?);???//?延时(i+1)*9+2个机器周期 j?=?5;??while(?--j?);???//?延时2*j+1个机器周期 j?=?5;??while(?j--?);???//?延时(j+1)*6+1个机器周期
资源推荐
资源详情
资源评论
sbit?LED??=??P1^0;??????//?定义一个管脚(延时测试用)
unsigned?int?i?=?3;?????//?注意i,j的数据类型,
unsigned?char?j?=?3;????//?不同的数据类型延时有很大不同
//-----------------各种精确延时语句-----------------------------------
while(?(i--)!=1?);??????//?延时10*i个机器周期
i?=?10;?while(?--i?);???//?延时8*i+2个机器周期
i?=?10;?while(?i--?);???//?延时(i+1)*9+2个机器周期
j?=?5;??while(?--j?);???//?延时2*j+1个机器周期
j?=?5;??while(?j--?);???//?延时(j+1)*6+1个机器周期
i?=?5;?
while(?--i?)????????????//?延时i*10+2个机器周期,在i*10+2个机器周期
if(?LED==0?)??break;?//?内检测到LED管脚为低电平时跳出延时
i?=?5;
while(?LED?)????????????//?每隔10个机器周期检测一次LED管脚状态,当LED
if(?(--i)==0?)?break;//?为低时或者到了10*i+2个机器周期时跳出延时
//--------------------------------------------------------------------
例如18b20的复位函数(12M晶振):
//***********************************************************************
//?函数功能:18B20复位
//?入口参数:无
//?出口参数:unsigned?char?x:?0:成功?1:失败
//***********************************************************************
unsigned?char?ow_reset(void)
{
unsigned?char?x=0;??//?12M晶振?1个机器周期为1us
DQ?=?1; ??//?DQ复位
j?=?10;??while(--j);//?稍做延时(延时10*2+1=21个机器周期,21us)
unsigned?int?i?=?3;?????//?注意i,j的数据类型,
unsigned?char?j?=?3;????//?不同的数据类型延时有很大不同
//-----------------各种精确延时语句-----------------------------------
while(?(i--)!=1?);??????//?延时10*i个机器周期
i?=?10;?while(?--i?);???//?延时8*i+2个机器周期
i?=?10;?while(?i--?);???//?延时(i+1)*9+2个机器周期
j?=?5;??while(?--j?);???//?延时2*j+1个机器周期
j?=?5;??while(?j--?);???//?延时(j+1)*6+1个机器周期
i?=?5;?
while(?--i?)????????????//?延时i*10+2个机器周期,在i*10+2个机器周期
if(?LED==0?)??break;?//?内检测到LED管脚为低电平时跳出延时
i?=?5;
while(?LED?)????????????//?每隔10个机器周期检测一次LED管脚状态,当LED
if(?(--i)==0?)?break;//?为低时或者到了10*i+2个机器周期时跳出延时
//--------------------------------------------------------------------
例如18b20的复位函数(12M晶振):
//***********************************************************************
//?函数功能:18B20复位
//?入口参数:无
//?出口参数:unsigned?char?x:?0:成功?1:失败
//***********************************************************************
unsigned?char?ow_reset(void)
{
unsigned?char?x=0;??//?12M晶振?1个机器周期为1us
DQ?=?1; ??//?DQ复位
j?=?10;??while(--j);//?稍做延时(延时10*2+1=21个机器周期,21us)
资源评论
- Truman19982018-04-15上传前都不能把问号给清下吗,估计直接复制上去的,直接就不想看了
- iseerzju2013-07-16蛮实用的,可以参考!
- floje2013-04-07这个程序实用
- 佐又爸爸2014-09-16真心不错的东西,不过暂时还是用不上
- 2019-11-09不要下!!!我好想骂人
LC657913241
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功