anjianzhongduan.c

来自「通过C语言实现的基于AVR单片机的按键中断程序」· C语言 代码 · 共 68 行

C
68
字号
#include<iom8v.h>
#include<macros.h>

unsigned char CountNum;  //全局变量,用来计数
#pragma interrupt_handler int_fun1:2
#pragma interrupt_handler int_fun2:3

void int_fun1(void)
{
  if(++CountNum>=100)
  CountNum=0;
  }
void int_fun2(void)
{
  if(--CountNum<=0)
  CountNum=99;
  
 }
  void delay_1ms(void)
{
   unsigned int i;
   for(i=1;i<(unsigned int)(1144-2);i++);
   }
   void  delay_ms(unsigned int n)
   { 
      unsigned int i=0;
	  while(i<n)
	  {
	    delay_1ms();
		i++;
		}
		}
  void main()
  {
  unsigned char temp,temp2;
  unsigned char num[10]={0x3F,0x06,0x5B,0X4F,0X66, 
                         0X6D,0X7D,0X07,0X7F,0X6F};
  DDRB=0XFF;
  PORTB=0XFF;
  DDRC=0X03;
  PORTC=0XFF;
  DDRD=0XFF;
  PORTD=0XFF;
  MCUCR=0X0f;
  GICR|=0XC0;
  GIFR=0X00;
  CountNum=0;
  SEI();     //打开全局中断
  while (1)
  {
  //CLI();     //关闭全局中断
  temp=CountNum/10;
  PORTC&=~(1);
  PORTB=num[temp];
  
  delay_ms(1);
  PORTC|=0XFF;
  
  temp=CountNum%10;
 // SEI();
  PORTC&=~(2);
  PORTB=num[temp];
  delay_ms(1);
  PORTC|=0xff;
  //SEI();
  delay_ms(1);
  }
}

⌨️ 快捷键说明

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