打印
[AVR单片机]

我在ICCAVR中使用的芯片是ATMEGA8A

[复制链接]
1209|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
故奇|  楼主 | 2018-10-15 08:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 故奇 于 2018-10-15 09:08 编辑

使用内部晶振,如何写1S的定时程序,各位大神请教教我,我第一次接触AVR单片机。下面是我写的程序。
/******************端口初始化*********************************************/
void port_init()         //端口初始化子函数
{
   DDRB = 0xFF;         //PB口配置为输出
   PORTB = 0xFF;        //PB口初始值为“1“
}
        
        
/*************************定时器0初始化***********************************/
void timer0_init()            //因为定时时间太短,看不到灯的变化
{
   SREG=0x80;                 //使能全局中断
   TIMSK|=(1<<TOIE0);         //定时器中断溢出标志位
   TCCR0|=(1<<CS02)|(0<<CS01)|(1<<CS00);      //T/C0工作于普通模式,1024分频,
                                                  //定时器频率=8M/1024=7812.5Hz
   TCNT0=61;                 //定时初值设置,定时时间=(256-61)/7812.5=25ms
        }


/***********************主函数*******************************************/
int main()
{
  DDRD |=(1<<4)|(1<<3)|(1<<2)|(1<<1);   //PD第1-4口配置为输出
  PORTD |=(0<<4)|(0<<3)|(1<<2)|(1<<1);   
  port_init();
  timer0_init();
  SREG=0x80;      //使全局中断
  
  while(1)
  {
     
  }
}
        
/******************************定时器0中断服务函数***********************/
#pragma interrupt_handler  timer0_ovf:10
unsigned int con;
void timer0_ovf(void)
{
    TCNT0=61;           //重新计数初值
        con++;              //中断次数累加

}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝