• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: INT0  中断计数  

资源简介

INT0中断计数,并在数码管显示所计数,按下按键后对所计的数进行清零操作

资源截图

代码片段和文件信息

/*****外部中断0 定时器0 实现1秒led自动加1;按下按键后清零*****/	

#include
#include
 
sbit AA=P2^2;  
sbit BB=P2^3;
sbit CC=P2^4; 
sbit clear_key=P3^6;
#define uchar unsigned char
#define uint  unsigned int
unsigned int ledout[8]time_count=0time=0led_count=0;

unsigned char code CODE[]=
 {
  ~0xC0~0xF9~0xA4~0xB0~0x99~0x92~0x82~0xF8~0x80~0x90
  //0x3f0x060x5b0x4f0x660x6d0x7d0x7f0x6f0x00
 };

void Delay(unsigned int ms)   //延迟20Ms
{
    char ij;
    for(i=ms; i > 0; i--)
        for(j = 110; j > 0; j--);
}

void Display()
{
unsigned int i;  
ledout[0]=CODE[led_count%10000/1000];
ledout[1]=CODE[led_count%1000/100];
ledout[2]=CODE[led_count%100/10];
ledout[3]=CODE[led_count%10];

for(i=0;i<8;i++)
{
P0=ledout[i];
switch(i)
{
case 0:AA=0;BB=0;CC=0;break;
case 1:AA=1;BB=0;CC=0;break;
case 2:AA=0;BB=1;CC=0;break;
case 3:AA=1;BB=1;CC=0;break;
case 4:AA=0;BB=0;CC=1;break;
case 5:AA=1;BB=0;CC=1;break;
case 6:AA=0;BB=1;CC=1;break;
case 7:AA=1;BB=1;CC=1;break;

Delay(5);
}
}

/************************************************
****函数名:Creat_Tmr0_Second
****函数描述:创建 T0 定时器秒函数  
****参数: 对应 多少秒
****返回值: 成功到时 返回1  否则返回0
*************************************************/  
unsigned char Creat_Tmr0_Second(unsigned int second){

if(time_count>=second){
time_count=0;
return 1;
}
return 0;
}   


void main()
{

IT0=1;  //边沿触发方式
// IT0=0;      //电平触发方式
SCON=0X50; 
TMOD = 0x20;
TH0=(65536-10000)/256;  //50MS 触发一次中断
TL0=(65535-10000)%256;
TR0=1;

EX0 = 1;   //开启外部中断0
ET0 = 1;   //开启定时器0
EA = 1;   //总中断开关 

  
Delay(1);
while(1)
{
if(Creat_Tmr0_Second(1)==1

评论

共有 条评论

相关资源