ex.c

来自「AT89S51 红外程序 单片机学习板的程序 外部中断0程序」· C语言 代码 · 共 77 行

C
77
字号
//****************Copyright (c)*************
//         成都麟鑫科技有限责任公司
//         http://www.linxinpro.com
//******************************************
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code tab1[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9字形代码
uint counter1=0,counter2=0,counter3=0,counter4=0;time=100; //计数器变量初始化
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2; 
sbit P1_3=P1^3;
void delay(uint tx);//延时程序
void show(uint tx1,uint tx2,uint tx3,uint tx4);
void main()
{
	P1_3=1;//初始化数码管控制位
	P1_2=1;
	P1_1=1;
	P1_0=1;
	EA=1;   //开中断
	IT0=1;	//外部中断0低电平触发
	EX0=1;	//外部中断0允许
	while(1)
		show(counter1,counter2,counter3,counter4);
}
/*中断服务程序*/
void interrupt0() interrupt 0 using 2
{
	counter1++;
	if(counter1>9)
	{ 
		counter1=0;
	    counter2++;
	};
	if(counter2>9)
	{
	    counter2=0;
		counter3++;
	};
	if(counter3>9)
	{
		counter3=0;
		counter4++;
	};
	if(counter4>9)
		counter4=0;
}
/*延时子程序*/
void delay(uint tx)
{
	uint x=tx;
	do
		x--;
	while(x>1);
}
/*显示计数次数*/
void show(uint tx1,uint tx2,uint tx3,uint tx4)
{
	P2=tab1[tx1];
	P1_0=0;
	delay(time);
	P1_0=1;
	P2=tab1[tx2];
	P1_1=0;
	delay(time);
	P1_1=1;
	P2=tab1[tx3];
	P1_2=0;
	delay(time);
	P1_2=1;
	P2=tab1[tx4];
	P1_3=0;
	delay(time);
	P1_3=1;
}

⌨️ 快捷键说明

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