⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tc1_3.c

📁 arm的功能测试模块
💻 C
字号:
/*****************************************************
****    AVR T/C1 使用范例3(T/C1比较匹配定时中断)  ***
****       作者:  liugangdi                       ***
****       编译器:WINAVR20050214                  ***
****       日期:2005.11.25                        ***
******************************************************/

/*功能简单说明: 每隔1s使PC5取反1次,采用T/C1比较匹配中断,
  时钟为8MHZ,256分频,每32us计数1次,1s需要计数31250次,
  T/C1比较匹配取值0X7A12(即31250)。
  补充说明:采用T/C1溢出中断送初值0X85EE,也可以实现上述功能,
  但每次中断服务子程序中都要送初值。如果没有及时进入该中断服务
  子程序,则定时的间隔时间就会变长,程序也不如比较匹配中断简短,
  所以一般TC0、TC1、TC2能用比较匹配中断就不用定时器溢出中断。
  在TC0_2.c的例子中利用的是定时器溢出中断。*/
  
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdio.h>
#define uchar unsigned char
#define  PC5  5

//TC1比较匹配A中断初始化
void init_timer1(void)
{
  TCCR1B=0X0C;     //采用CTC模式,WGM13 WGM12 WGM11 WGM10=0 1 0 0 ;具体见手册,对主频256分频
  TCNT1=0X0000;    //置TCNT1初值为0
  OCR1A=0X7A12;    //OCR1A置0X7A12,即1s中断1次
  TIMSK=0X10;      //允许TC1比较匹配A中断
  }
  
  
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
   PORTC^=_BV(PC5);         //哪一位要取反就与1异或
   }
   
   
int main(void)
{
  DDRC|=(1<<PC5);     //定义C口方向
  init_timer1();
  sei();
  while(1){}
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -