当前位置: 首页 > news >正文

长清区网站建设宣传网站找百度做可以嘛

长清区网站建设宣传,网站找百度做可以嘛,seo外包服务,网站优化自已做还是请人做在51中我们的延时函数都是自己编写的#xff0c;无论是在汇编中还是在C言语中。虽然有模板#xff0c;有时还是有点烦。呵呵。不过在应用avr 单片机的时候我们就有福了。因为avr-gcc 提供给我们很方便的delay 延时函数, 只有在源文件包含#xff1a; #include util/dela… 在51中我们的延时函数都是自己编写的无论是在汇编中还是在C言语中。虽然有模板有时还是有点烦。呵呵。不过在应用avr 单片机的时候我们就有福了。因为avr-gcc 提供给我们很方便的delay 延时函数, 只有在源文件包含 #include util/delay.h就可以使用了。这个头文件定义了两个级别的延时函数分别是 void _delay_us (double __us) ; //微秒级 void _delay_ms (double __ms); //毫秒级不过不可以高兴的太早因为要在你的avr-gcc中正确使用它们是有条件的下面我将慢慢道来。这个参数和 Makefile 中的 F_CPU 值有关Makefile 所定义的的F_CPU 变量的值会传递给编译器。你如果用AVR_studio 4.1X来编辑和调试用内嵌AVR-GCC的进行编译并且让AVR_studio 帮你自动生成Makefile 的话那你可以在Project - Configuration Options - Gerneral - Frequency 如下图写下你的F_CPU的值F_CPU这个值表示你的AVR单片机的工作频率。单位是 Hz ,不是 MHZ不要写错。如 7.3728M   则 F_CPU 7372800。 你会发现在delay.h 头文件中有这个样的一个定义如下#ifndef F_CPU # warning F_CPU not defined for util/delay.h # define F_CPU 1000000UL // 1MHz #endif 这是为了在你没有定义F_CPU这个变量(包括空)或是AVR_studio Frequency没有给值的时候提供一个默认的 1MHz频率值。让编译器编译时不至于出错。 下面是这两个函数的实体 void _delay_us(double __us) // 微秒{uint8_t __ticks;double __tmp ((F_CPU) / 3e6) * __us; // 3e6 是因为调用的_delay_loop_1()是三条指令的if (__tmp 1.0)__ticks 1;else if (__tmp 255)__ticks 0;else__ticks (uint8_t)__tmp;_delay_loop_1(__ticks);}void _delay_ms(double __ms) // 毫秒{uint16_t __ticks;double __tmp ((F_CPU) / 4e3) * __ms; // 4e3 是因为调用的_delay_loop_2()是四条指令的if (__tmp 1.0)__ticks 1;else if (__tmp 65535)__ticks 0;else__ticks (uint16_t)__tmp;_delay_loop_2(__ticks);} 你会发现他们都分别调用了  _delay_loop_1(); 和_delay_loop_2(); 这两个函数 而这两个函数又如下所示 void _delay_loop_1(uint8_t __count){__asm__ volatile (1: dec %0 \n\tbrne 1b: r (__count): 0 (__count));} 从其函数注释里面可以了解到该函数用来延迟3个晶振时钟周期不包括程序调用和退出该函数所花费的时间。该函数的形参__count是一个8位的变量由此我们就可以根据系统采用的晶振频率算出该函数最大的延迟时间了 1MHz时  MAX_DELAY_TIME  (1/1000000)*3*256  0.000768 S  768 uS 8MHz时  MAX_DELAY_TIME  (1/8000000)*3*256  0.000096 S  96  uS ............ F_CPU     MAX_DELAY_TIME  (1/F_CPU)*3*256 依此类推。 void _delay_loop_2(uint16_t __count){__asm__ volatile (1: sbiw %0,1 \n\tbrne 1b: w (__count): 0 (__count));} 该函数延时4个晶振周期形参是一个16位的变量同样我们也可以算出该函数最大的延迟时间 1MHz时  MAX_DELAY_TIME  (1/1000000)*4*65535  0.26214 S  262.1 mS 8MHz时  MAX_DELAY_TIME  (1/8000000)*4*65535  0.03277 S  32.8  mS ............ F_CPU     MAX_DELAY_TIME  (1/F_CPU)*4*65535 依此类推。 重要提示_delay_loop_1(0)、_delay_loop_1(256)延时是一样的 同理_delay_loop_2(0)、_delay_loop_2(65536)延时也是一样的这些函数的延时都是最长的延时。 这两个函数都是avr-gcc 的 inline汇编格式写的具体的语法规则我就不多说了。可以参考avr-libc。不过这两个函数很简单很容易明白。一个是字节递减一个是字递减。如果你认真看上面几个函数你就会发现要正确使用它们是有如下条件的         1. 首先你要正确定义你的 F_CPU 的值也就是你的AVR单片机实际的频率。否则延时不准。延时只在数字上不准确具体可以计算         2. 你在编译时一定要打开优化Makefile中OPT 不要选 0 ,如果AVR_studio 不要选O0 。         3. 你在使用这两个delay()时传递给两个函数的实参要使用常量不要使用变量。         4. 设置的时间参数__ms , __us 是有范围的不要超过范围。__ms1 - [262.14 ms / (F_CPU/1e6) ]  __us1- [768 us / (F_CPU/1e6)]   。 [...]  表取整数部分.(此处结论错误?)。__us的最大值应该是768us1M频率下   MAX_VALUE  256*3/F_CPU s最小值3个时钟周期MIN_VALUE  1*3/F_CPU s; __ms最大值MAX_VALUE  65536*4/F_CPU sMIN_VALUE  1*4/F_CPU s; 只有具备了上面的条件你才可以正确使用延时函数 _delay_us () 和 _delay_ms () 。对于第三个条件为什么要选用常量还有第二个条件为什么要打开优化选项。这是为了让编译器在编译的时候就把延时的值计算好而不是把它编译到程序中在运行时才进行计算那样的话一是会增加代码的长度还会使你的延时程序的延时时间加长或是变得不可预料。产生时序的错误。在08版本中已经修改具体函数如下 void_delay_us(double __us){uint8_t __ticks;double __tmp ((F_CPU) / 3e6) * __us;if (__tmp 1.0)__ticks 1;else if (__tmp 255){_delay_ms(__us / 1000.0);return;}else__ticks (uint8_t)__tmp;_delay_loop_1(__ticks);} 当__us过大的时候就会调用_delay_ms();由上面可以知道8M时候_delay_ms最小可以延时4/80000000.5us  1M时最小延时4/10000004us,可以连接上。 void _delay_ms(double __ms){uint16_t __ticks;double __tmp ((F_CPU) / 4e3) * __ms;if (__tmp 1.0)__ticks 1;else if (__tmp 65535){// __ticks requested delay in 1/10 ms__ticks (uint16_t) (__ms * 10.0);while(__ticks){// wait 1/10 ms_delay_loop_2(((F_CPU) / 4e3) / 10);__ticks --;}return;}else__ticks (uint16_t)__tmp;_delay_loop_2(__ticks);} 当__ms过大时只采用__ticks --的方式延时。先延时一个262ms(1M32ms 8M),然后用递减方式。
http://www.yutouwan.com/news/184064/

相关文章:

  • 建网站用什么程序好长春小学网站建设
  • 网站备案是否收费标准wordpress分类信息发布系统
  • 电商网站 编程语言哪个网站能看到医生做的全部手术
  • 2017网站设计四川建设厅官方网站是多少
  • 注册域名后怎么建设网站小抖音小程序入口
  • 随州网站优化佛山网站建设有哪些
  • 做网站笔记本2014h5企业模板网站模板下载
  • 找人做任务网站有哪些贵州网站建设公司推荐
  • 上海高品质网站建设公司成都三网合一网站建设
  • easyui做网站在线做图的网站
  • 连云港公司网站优化服务邯郸设计公司有哪些
  • php网站建设设计方法怎么把模板导入wordpress
  • 可以免费秒玩游戏的网站中国能源建设集团有限公司子公司
  • 用手机做电影网站做视频网站要多少钱
  • 兰州网站设计公司有哪些网站怎么做备案号超链接
  • 天津自己制作网站网站做全景图
  • 嘉兴网站建设解决方案网站怎么制作的
  • 绵阳专门做网站的公司计算机自学app
  • 个人设计师网站 青春沧州网站制作
  • 免费自助建站哪个好专业网站建设效果显著
  • 企业网站建设申请域名网页编辑教程
  • 学校网站建设的优势和不足wordpress 4.5 模板
  • 5站合一 网站建设海口网站建设优化公司
  • 常用的电子商务网站网络培训心得体会
  • 网站编程培训哪好网络推广是啥
  • 如何建立属于个人网站wordpress get_post_mime_type
  • 网站的第二域名怎么用小程序报价开发
  • 数据库网站开发网站建设实施方案ppt
  • 做透明头像的网站珠海专业网站制作公司
  • 西安今天的新消息未央区优化seo技术