两个外中断的应用


                                            两个外中断的应用

中断服务函数的格式

函数类型 函数名(形参)interrupt n  using n

关键字interruot  后面的n 是中断好 对应8051 中断号 0~4 

 n             中断源             中断向量 (8*n +3)

0             外部中断          0003h

1              定时器0         000Bh

2             外部中断1      0013h

3              定时器1        001Bh

4               串行口         0023h

例如 :

    void int1()    interrupt 2 using 0     //中断号 是2 选 0 工作区域

  

EA  中断允许总开关   

ES   串行口中断允许位

ET1   定时器1 中断允许位

EX1  外部中断1 中断允许位

ET0      定时器T0 

EX0    外部中断允许位

IT1  = 0 电平触发  =1 跳沿触发  (外部中断请求)

#include <reg51.h>
#define uint  unsigned int
#define uchar unsigned char 

void delay(unsigned int  i)
{//ÑÓʱº¯Êý
		uchar j;
	  for(; i>0 ; i--)
	 {
	  for(j = 0 ; j <125; j++)
	  {;}
		}
}
void main()
{
	 uchar display[9] = {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  //Á÷Ë®µÆҪʵÏÖµÄÊý¾ÝÊý×é¡¢
   uint a;
   while(1)
	 {
		  EA = 1; //ÔÊÐíÍⲿÖжÏ
		  EX0 = 1; //ÔÊÐíÍⲿÖжÏ0
		  EX1 = 1;  //ÔÊÐíÍⲿÖжÏ1
		  IT0 = 1; //ÍⲿÖжÏ0 ΪÌøÑØ´¥·¢
		  IT1 = 1;   //ÍⲿÖжÏ1ΪÌøÑØ´¥·¢
		  IP = 0;    //Á½¸öÍⲿÖжϾùΪµÍÓÅÏȼ¶
		  for(a = 0 ; a < 9 ; a++)
		  {
			  delay(500); //ÑÓʱ
			  P1= display[a];
			}
	 }
}
void int0_isr(void) interrupt 0 using 1    // ÍâÖжÏ0 µÄÖжϷþÎñº¯Êý
{
	 uchar n ;
	 for(n = 0 ; n < 10; n++)
	 {
		  P1 = 0xf0; //00
		  delay(500);
		  P1 = 0xf0;
		  delay(500);
	 }
}
void int1_isr(void) interrupt 2  using 2         //ÍⲿÖжÏ1µÄÖжϷþÎñº¯Êý
{
	  uchar  m;
	  for(m = 0 ; m <10 ; m++)
	  {
			 P1 = 0xff;
			 delay(500);
			 P1 = 0;
			 delay(500);  
	 }
}

仿真:


wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值