单片机
返回首页

外部异步时钟的操作

2016-09-14 来源:eefocus

#include

#define uchar unsigned char
#define uint  unsigned int
#define OUT PORTA
uchar Data[4];//={0,0,0,0};
uchar CNT;//定义中断次数
void DelayMs(uint i)  //0.25ms
{uchar j;
 for(;i!=0;i--)
  {for(j=250;j!=0;j--) {;}}
}
/************以下为显示*************************/
void Display(uchar *p) //适当地调节延时,可以改变其亮度
  {   
    OUT=0x70+p[0]; DelayMs(15);
 OUT=0xb0+p[1]; DelayMs(15);
    OUT=0xd0+p[2]; 
 DelayMs(15);
 OUT=0xe0+p[3]; DelayMs(15);
  }
/****************************************/
/**************以下为端口初使化*******************/
void intio()
 { 
   DDRA=0XFF;
   OUT=0XFF;
 }
/*****************以下为溢出处理*******************/
void dealwith(uchar *p)
{
 p[3]++;
 if(p[3]==10){p[3]=0;p[2]++;}
 if(p[2]==6) {p[2]=0;p[1]++;}
 if(p[1]==10){p[1]=0;p[0]++;}
 if(p[0]==6) {p[0]=0;}

/***********************************************/
void main()
{uchar i;
 intio();
 DelayMs(2000);
 ASSR=0X08;//异步时钟使能
 TCCR2=0X07;//1024分频
 TIMSK=0X40;//T/C2中断使能
 SREG=SREG|0X80;//全局中断使能
 while(1)
 {
  Display(Data);
  if(TCNT2==32)
   {TCNT2=0;
   dealwith(Data);
   }
  }
}

/*********************

//1.由于ATMEGA8中没有A口,故采用一宏定义,只能在ATMEGA8中采用D口,也因此在设计中,采用宏定义;
//2.经测试:采用内部2M及以下运行不稳定,故推荐采用场4M—8M;
//3.关于外部采用外部异步晶振不必采用外接电容,内部有36PF电容;当然接上也无防;
//4.注意32.768K晶振的使用,以及1024分频;

进入单片机查看更多内容>>

上一篇:万能PWM子程序

下一篇:ATMEGA8计数器

相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 如何利用ESP8266制作一个简单的四轴飞行器

  • 非常简单的150W功放电路图

  • 一个简单的警笛电路图

  • 基于IC555的可变PWM振荡器电路

  • 一个简单的立体声平衡指示器电路

  • 电谐波图形均衡器示意图

    相关电子头条文章