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

📄 interrupt.c

📁 手把手教你单片机
💻 C
字号:
#include <reg52.h>
typedef  unsigned char   uint8;
typedef  unsigned int    uint16;
typedef  unsigned long   uint32;  
code uint8 number[] = {0xc0,0xf9,0xa4,0xb0,
				   	   0x99,0x92,0x82,0xf8,
				 	   0x80,0x90,0x88,0x83,
				 	   0xa7,0xa1,0x86,0x8e};
uint8 a[6]; 
uint16 counter = 0;
sbit ENLED = P1^4;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;

void timer1_init()
{
	TMOD |= 0x10;
	TMOD &= 0xdf;  
	TH1   = 0xFC;
	TL1   = 0x67;
	TR1   = 1;
}
void int_init()
{
	ET1 = 1;
	EA  = 1;
}
void refresh_led()
{
	  static uint8 j = 0;
		switch(j)
	   {
	   	case 0: ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[0]];break;
		case 1: ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;j++;P0 = number[a[1]];break;
		case 2: ADDR0 = 0;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[2]];break;
		case 3: ADDR0 = 1;ADDR1 = 1;ADDR2 = 0;j++;P0 = number[a[3]];break;
		case 4: ADDR0 = 0;ADDR1 = 0;ADDR2 = 1;j++;P0 = number[a[4]];break;
		case 5: ADDR0 = 1;ADDR1 = 0;ADDR2 = 1;j = 0;P0 = number[a[5]];break;
		default: break;
		}
	
}

main()
{
	ENLED = 0; ADDR3 = 1;
	timer1_init();
	int_init();
	while(1);
	
}
void interrupt_timer1()	interrupt 3
{
	  static uint32 sec = 0;
	  TH1 = 0xFC;
	  TL1 = 0x67;
	  counter++;
	  if(counter == 1000)
	  {
	  	sec++;
		counter = 0;
		a[0] = sec%10;
		a[1] = sec/10%10;
		a[2] = sec/100%10;
		a[3] = sec/1000%10;
		a[4] = sec/10000%10;
		a[5] = sec/100000%10;
	  }
	  refresh_led();
						 
}

⌨️ 快捷键说明

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