AVR_studio_中断、计时器程序
2012-12-13 14:18
405 查看
/* 本程序应用了外部中断1、0,定时器中断0, 初始显示变量uname(100000), 按下中断1显示内容减1,中断0加1,定时器每隔一秒加1 显示子函数AVR_display; 频率1M A口接数码管段选 B口接数码管位选 */ #include<avr/io.h> #include <avr/interrupt.h> volatile unsigned long Ex_i; //定时器用的变量 volatile unsigned long uname=100000;//初始显示内容 /*=====0-9=====A-G=====*/ unsigned char table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E F /*0-7*/ unsigned char num[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //共阳极数码管的wei码0 1 2 3 4 5 6 7 8 void init_avrinter();//外部中断初始化 void init_avrtimer0();//计数器0初始化 void delay(unsigned int x);//延时函数 void AVR_display(unsigned long nnn);//显示函数 int main() //主程序 { DDRA=0xff; //设置方向寄存器为输出 DDRB=0xff; DDRD=0xff; PORTD=0xff; init_avrinter(); init_avrtimer0(); while(1) { AVR_display(uname); } } void init_avrinter()//外部中断初始化 { sei(); //开总中断 MCUCR |= (1 << ISC10)|(1 << ISC00)|(1 << ISC01); //INT1下(shang)降沿触发 INT0上降沿触发 GICR |= (1 << INT1)|(1 << INT0);//使能INT1 INT0 } void init_avrtimer0()//定时器0初始化 { TCNT0 = 5; TIMSK |= (1 << TOIE0);//使能TC0溢出中断 TCCR0 |= (1 << CS01);// 8分频 } SIGNAL(SIG_INTERRUPT0)//外部中断0程序 { uname++; //显示内容加1 } SIGNAL(SIG_INTERRUPT1)//外部中断1程序 { uname--; //显示内容减1 } SIGNAL(SIG_OVERFLOW0)//外部中断1程序 { Ex_i ++; TCNT0 = 5; if(Ex_i>=500) { Ex_i=0; uname++; } } void delay(unsigned int x)//延时 { unsigned int Dl_i; for(Dl_i=0;Dl_i<x;Dl_i++); } void AVR_display(unsigned long nnn)//显示 9999 9999一下十进制数 { unsigned char n[8],i,j=8; unsigned long nn; nn = nnn; for(i=0;i<8;i++) { n[i] = nn%10; nn /= 10; } for(i=0;i<8;i++) { if(n[7-i])break; j--; } for(i=0;i<j;i++) { PORTA = table[n[i]]; PORTB = num[7-i]; //板子上数码管 位方向 是高位到低位(7>>>0); delay(270); PORTA = 0xff; PORTB = 0xff; } }
相关文章推荐
- AVR 定时器中断程序
- 一个相当经典的AVR中断程序
- AVR单片机使用外部中断和定时器的NEC红外解码程序
- AVR USART接收中断程序
- AVR-3 进入比较器中断的服务程序
- 2、一个简单的AVR中断程序
- AVR之最简单外部中断、定时器0、定时器1程序
- 未能从程序 集'Microsoft.VisualStudio.DataDesign.SyncDesigner.DslPackage,Version=9.0.0.0,Culture=neutral
- 利用PROGISP实现ARDUINO IDE编写的程序的下载以及如何把AVR单片机做成ARDUINO板
- js中不存在exit函数,程序的运行中断停止,可使用return
- InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
- eclipse android 程序 转化为android studio
- vs2012 调用外部代码问题 打开项目一直加载外部dll是程序中断!!
- 各种Arduino外部中断程序
- 定时器中断彩灯控制程序
- Android Studio HelloWord 测试程序在Android5.1真机上运行异常分析
- 示范如何在命令行程序中处理用户中断信号(ctrl+c)
- Visual Studio InstallShield 2015 Limited Edition 打包程序详解
- 新版MDK使用JLINK下载程序出现中断停止的解决办法
- 《Linux内核设计与实现》读书笔记(4)--- 中断和中断处理程序