ATmega16延时程序

发布者:知音学友最新更新时间:2020-04-25 来源: eefocus关键字:ATmega16  延时程序  ATmega16A 手机看文章 扫描二维码
随时随地手机看文章

使用ATmega16A单片机的延时程序是经常遇到的情况,有的时候没有办法准确的确定延时的长度,使用定时器的有太浪费,可以使用这个不太精确的延时程序,适用于各种晶振的情况下,


#define FSOC 8    //  //晶振频率宏定义,使用8MHZ晶振,可以使用其他频率的晶振

void Delay_1ms(void)

{

uint i;

for(i=1;i<(uint)(FSOC*124);i++)

{

;

}

}

void Delay_nms(uint n)  //延时n*1ms

{

uint i=0;

while(i {

Delay_1ms();

WDR();//看门狗

i++;

}

}


关键字:ATmega16  延时程序  ATmega16A 引用地址:ATmega16延时程序

上一篇:Atmel studio注意事项
下一篇:Atmel Studio 6.1 delay函数错误的解决方法

推荐阅读最新更新时间:2024-11-10 17:03

AVR单片机(学习ing)—(二)、ATMEGA16的中断系统—02
二、ATMEGA16的中断系统 二—(02)、4*4行列式按键的睡眠模式中断唤醒 废话不多说了,上一篇有这一片所用的寄存器,所以你要想看这篇,还是建议看看上一篇 ,当然要是会~~~ 直接上图~~~ 好了,下面的就是程序了(这里要注意一下,Proteus中的二极管的作用,一定要弄明白~~呵呵,虽然我不明白~~笨死了~~但是有一点我是知道的,防止回流,但是为什么这么接~~我蛋疼了~~不会啊) //------------------------------------------------------------------------------ //4*4行列式按键的睡眠模式中断唤醒实验 //其中睡眠模式再 intri
[单片机]
AVR单片机(学习ing)—(二)、<font color='red'>ATMEGA16</font>的中断系统—02
Keil C51程序设计中精确延时的总结
一、实现延时的两种方法 1、硬件延时 优点:用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时; 缺点:往往在精度要求不是很高时,会使定时器/计数器大材小用,而且很极端时,定时器根本不够的。 2、软件延时 优点:节省硬件资源的同时,只要正确使用可接近要求的精度,这种方法主要采用循环体进行; 缺点:精度不高,对编程者经验要求甚高。 二、硬件延时 1、常用晶振:11.059 2 MHz(容易产生各种标准的波特率)、12 MHz或6 MHz(机器周期 分别为1 μs和2 μs,便于精确延时)。 2、本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达2的16次方=65 536 。若定时器工作在
[单片机]
AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02
1)那就是在之前的介绍中说过,在说一遍~~ 主机和从机的两个移位寄存器可以被认为是一个公开的16位环形移位寄存器,当数据从主机移向从机时,同时从机饿数据也向相反的放向移向主机。这就意味着在一个以为周期内,主机和从机的数据进行了交换。(不过这个例子里没有用到这个,下个会用到~~呵呵~~),早知道对谁都好~~ 2)配置为SPI主机时,SPI接口不自动控制SS引脚,必须由用户软件来处理。还有配置为从机时,只要SS引脚为高,SPI接口将一直保持睡眠状态,并保持MISO为三态。(这个章节的第一篇文章有详细的介绍~~自己可以看看~~) 3)SPI系统的发送方向只有一个缓冲器,而接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束
[单片机]
AVR单片机(学习ing)—(十)、<font color='red'>ATMEGA16</font>的同步串行接口SPI—02
stm32的微秒延时程序
我的stm32系统时钟为72MHZ,用软件延时方法实现微秒级的延时,既空循环: 延时函数为: #define delayUs(x) { unsigned int _dcnt; \ _dcnt=(x*16); \ while(_dcnt-- 0) \ { continue; }\ } x---------为延时时间(单位为us) 其中_dcnt=(x*16); 中的16,是可以改的,改为8的时候延时间时间为x*0.5。
[单片机]
ATmega16定时器1的时间设定
在Atmel Studio 7环境下编写程序感觉比较舒服。 目的:根据设定的时间触发中断,触发一次,变量累加一次; 用到中断,所以一开始需要#include 变量:unsigned char time = 0; 定时器1配置: void ConfigTimer1(unsigned int set) { TCCR1B |= (1 2);//256分频 比如12M ,就是12000000/256 tmp = 65536-set;//set=( 晶振频率/分频) * 定时时间) TCNT1H = (unsigned char)(tmp 8);//赋初值 高8位 TCNT1L = (uns
[单片机]
ATmega16 掉电检测
ATmega16 具有片内BOD(Brown-out Detection) 电路,通过与固定的触发电平的对比来检测工作过程中VCC 的变化。此触发电平通过熔丝位BODLEVEL 来设定, 2.7V(BODLEVEL 未编程),4.0V (BODLEVEL 已编程)。BOD 的触发电平具有迟滞功能以消除电源尖峰的影响。这个迟滞功能可以解释为VBOT+ = VBOT + VHYST/2 以及VBOT- = VBOT- VHYST/2。 BOD 电路的开关由熔丝位BODEN控制。当BOD使能后(BODEN被编程),一旦VCC下降到触发电平以下(VBOT-, Figure 19), BOD 复位立即被激发。当VCC 上升到触发电平以上时
[单片机]
<font color='red'>ATmega16</font> 掉电检测
单片机1s延时程序
#include reg52.h sbit P1_0 = P1^0; void Delay(); // 下面引用时一定要和这里的大小写一致否则会有警告或错误 void Main() { while (1) // 开始一直循环 { P1_0 = 0; Delay(); // 没有参数也要加 () 否则会有Warning P1_0 = 1; Delay(); } } void Delay() // 12M晶振1s延时 { unsigned char h, i, j, k; for (h = 5; h 0; h--) for (i = 4; i 0; i--) for (j = 116; j 0; j--) for (k = 21
[单片机]
单片机1s<font color='red'>延时</font><font color='red'>程序</font>
ATmega16驱动ds12c887显示于lcd1602
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define DS_ PORTC&=~BIT(6) #define DS PORTC|=BIT(6) #define RW_ PORTC&=~BIT(5) #define RW PORTC|=BIT(5) #define AS_ PORTC&=~BIT(4) #define AS PORTC|=BIT(4) #define CS_ PORTC&=~BIT(3) #define CS PORTC|=BIT(3) uchar tab1 ={"DAT:"};
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved