单片机实验

外部中断检查P32低电平时间

通过按下连接到P3.2引脚的按钮,来模拟外部中断的触发,即按下按钮时,按钮连接到P3.2的引脚,会导致P3.2的电平从高变为低,这将触发外部中断0

#include <reg51.h>

unsigned int counter=0,time=0,i=0;
unsigned char num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0~9
sbit P22=P2^2;// 数码管控制引脚
sbit P23=P2^3;
sbit P24=P2^4;
sbit P32=P3^2;

void main()
{
  TMOD=0x01;
  TH0=0x4c;// (65536-50000)/256
  TL0=0x00;// (65536-50000)%256
  ET0=1;// 允许定时器0中断
  EX0=1;// 允许外部中断0
  EA=1;
  IT0=0;
  PT0=1;// 定时器0为高优先级中断
  while(1)
  {
    switch(i)
    {
      case 0:P0=0x00;P24=1;P23=1;P22=1;P0=num[time/10];i++;break;//先关闭数码管
      case l:P0=0x00;P24=1;P23=1;P22=0;P0=num[time%10];i=0;break;//显示个位数
      default:break;
    }
  }
}

void int_0() interrupt 0  //外部中断0
{
  TR0=1;
}

void Timer_0() interrupt 1
{
  TH0=0x4c;//重装初值
  TL0=0x00;
  counter++;
  if(counter==20) //1min
  {
    counter=0;  
    time++;
  }
  if(P32==0)
  {
    TR0=0;// 低电平时,关闭定时器0
  }
}

外部中断触发方式:代码中通过 IT0=1 设置外部中断0为下降沿触发。当P3.2引脚的电平从高变为低时,外部中断0会触发

中断的优先级设置:通过 PT0=1 将定时器0的中断优先级设置为高优先级

定时器工作模式选择与初值设置根据需要进行调整和适配

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值