📄 int0.c.bak
字号:
/*******************************************************************************
*- INT0中断计数 3位数码管显示 P3.2接按键,计数 *
********************************************************************************
* 日期: 2008-2-25 硬件: 数码管P0,数码管控制P2 *
* 版本: 3.0 *
* 作者: 深圳志博电子有限公司 专业8051单片机教学站 *
* 邮箱: zty0012001@163.com *
* 网站: http://www.elecmcu.com http://www.elecmcu.com 更多例程请登陆网站 *
********************************************************************************
* 硬件:此程序在本公司志博电子实验仪运行通过 *
********************************************************************************
* 【版权】 Copyright(C)深圳志博电子有限公司 www.elecmcu.com All Rights Reserved *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
********************************************************************************/
#include < reg51.h >
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar const seg[11]={0x7f,0x44,0xbd,0xf5,0xe6,0xf3,0xfb,0x65,0xff,0xf7,0x00};
uchar dis[8]={0,0,0,0}; //设置显示缓冲存储器
unsigned char code scan_bit[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char count,k5_count=0 ;
/********************************************************
* 延时函数 *
********************************************************/
void delay(uint ms)
// 延时子程序
{
uchar k;
while(ms--)
{
for(k = 0; k < 120; k++);
}
}
/********************************************************
* 数据处理与显示函数 *
********************************************************/
void disp_count()
{
char n;
char i=0;
char k=0;
k5_count=count;
display[2]=k5_count/100; //数据处理
k5_count=k5_count%100;
display[1]=k5_count/10;
display[0]=k5_count%10;
for (i = 0; i < 6; i++)
{ //循环显示6位数据
switch (i)
{
case 0:
P0=0Xdf;
P1=P1|0X03;
break;
case 1:
P0=0XBF;
P1=P1|0X03;
break;
case 2:
P0=0X7F;
P1=P1|0X03;
break;
case 3:
P0=0XFF;
P1=0xfe;
break;
case 4:
P0=0XFF;
P1=0XFd;
break;
case 5:
P0=0Xef;
P1=0xff;
break;
}
P2=seg[dis[i]];
}
}
/********************************************************
* 主程序 *
********************************************************/
void main(void)
{
P0=0xff;
P1=0xff;
P2=0xff;
// IT0=0; //低电平触发
IT0=1; //下降沿触发
EA=1;
EX0=1;
while(1)
{
disp_count();
}
}
/********************************************************
* INT0中断函数 *
********************************************************/
void counter(void) interrupt 0
{
uchar x;
EX0=0;
count++;
for(x=0;x<15;x++)
{
disp_count();
}
EX0=1;
}
/********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -