9-定时器0动态显示数码管.rar

  • wlf_0606
    了解作者
  • C/C++
    开发工具
  • 52KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2018-04-07 16:20
    上传日期
在8M晶振下,实现四位数码管利用定时器0定时动态显示
9-定时器0动态显示数码管.rar
  • 9-定时器0动态显示数码管
  • BACKUP
  • main.c.120425114854
    4.1KB
  • main.c.120215200048
    4.3KB
  • main.c.130413151420
    3.4KB
  • main.c.120215201414
    2.1KB
  • main.c.120215201732
    2.9KB
  • main.c.121211131550
    3.4KB
  • main.c.120215201518
    2.9KB
  • main.c.130413151308
    3.4KB
  • main.c.121211132004
    3.4KB
  • main.c.120215202056
    2.9KB
  • main.c.120215202014
    2.9KB
  • main.c.120215202130
    2.9KB
  • main.c.120215200632
    4.5KB
  • main._c
    3.4KB
  • main.c.120215201710
    2.9KB
  • main.c.120425113832
    4.1KB
  • main.c.120215202038
    2.9KB
  • main.c.120215201948
    2.9KB
  • main.c.130413151456
    3.4KB
  • main.c.121211131608
    3.4KB
  • main.c.120426155738
    4KB
  • main.c.130413151542
    3.4KB
  • main.c.120215200750
    3.8KB
  • main.c.121211132026
    3.4KB
  • main.c.120215202352
    3.3KB
  • main.c.120215202420
    3.3KB
  • main.c.120215201104
    2.9KB
  • main.c.121211131648
    3.4KB
  • main.c.120215201756
    2.9KB
  • main.c.120215201436
    2.1KB
  • main.c.120215202250
    2.9KB
  • main.c
    3.4KB
  • SEG_D_TIMER0.mp
    2KB
  • main.lis
    19.1KB
  • SEG_D_TIMER0.mak
    528B
  • SEG_D_TIMER0.lst
    10.1KB
  • SEG_D_TIMER0.lk
    9B
  • SEG_D_TIMER0.SRC
    41B
  • SEG_D_TIMER0.hex
    1.1KB
  • main.o
    4.2KB
  • SEG_D_TIMER0.cof
    2.8KB
  • SEG_D_timer0.prj
    1.2KB
  • SEG_D_TIMER0.dbg
    1.6KB
内容介绍
/******************************************************************************* * 版权: 木仔工作室 * * 单片机: ATMAGE16 * 晶振: 外部8MHz * 编译器: ICC 7.22 * * 文件名: main.c * 作者: 木仔工作室 * 版本: 1.0 * 完成日期: * 功能描述: 在8M晶振下,实现四位数码管利用定时器timer0定时动态显示 *******************************************************************************/ #include<iom16v.h> #include<macros.h> #define S_1 PORTD&=~BIT(7);PORTD|=BIT(6);PORTD|=BIT(5);PORTD|=BIT(4); #define S_2 PORTD|=BIT(7);PORTD&=~BIT(6);PORTD|=BIT(5);PORTD|=BIT(4); #define S_3 PORTD|=BIT(7);PORTD|=BIT(6);PORTD&=~BIT(5);PORTD|=BIT(4); #define S_4 PORTD|=BIT(7);PORTD|=BIT(6);PORTD|=BIT(5);PORTD&=~BIT(4); #define S_OFF PORTD|=BIT(7);PORTD|=BIT(6);PORTD|=BIT(5);PORTD|=BIT(4); #define S_ON PORTD&=~BIT(7);PORTD&=~BIT(6);PORTD&=~BIT(5);PORTD&=~BIT(4); unsigned char tab[16] = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; //初始化 变量 声明////////////////////////////////////////////////////////////// unsigned char cnn=0;//定时器变量 unsigned char i=0;//数码管位选用 unsigned int data=0; /******************************************************************************* * 函数名称: delay_us() * 入口参数: microsecond : 输入延时微秒的时间 * 出口参数: * 功能描述: 微秒的延时 *******************************************************************************/ void delay_us(unsigned int microsecond) { do { microsecond--; } while (microsecond>1); } /******************************************************************************* * 函数名称: delay_ms() * 入口参数: millisecond : 输入延时毫秒的时间 * 出口参数: * 功能描述: 毫秒的延时 *******************************************************************************/ void delay_ms(unsigned int millisecond) { while (millisecond--) { delay_us(999); } } //I、O口初始化 void port_init(void) { PORTC = 0xFF; //m103 output only DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; } /**************************************************************************** 函数功能: 入口参数: 出口参数: ****************************************************************************/ void display(unsigned char n) { PORTC = tab[n]; } /////////////////////////////////////////// //定时器0初始化 void timer0_int(void) { TCCR0 =(1<<CS01) | (1<<CS00); TCNT0 = 0X05; TIMSK = 0x01; //T0/C0溢出中断使能 } //CPU总体初始化 void init_devices(void) { CLI(); //disable all interrupts port_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x00; //timer interrupt sources timer0_int(); SEI(); //re-enable interrupts //all peripherals are now initialized } //定时器0/////////////////////////////////////////////////////////////////////// #pragma interrupt_handler timer0_ovf_isr:17 void timer0_ovf_isr(void) { TCNT0 = 0X05;//内部晶振,几分频算出时间初值 data++; if(500 == data) { data = 0; display(cnn++); S_1; if(10 == cnn)cnn = 0; }//end of if(1000==++cnn) }//end of void timer0_ovf_isr(void) //////////////////////////////////////////////////////////////////////////////// void main(void) { init_devices(); PORTC = 0X00; S_OFF; S_1; while(1) { } }
评论
    相关推荐