单片机补充案例--中断到底用不用

2020/12/08 12:36
阅读数 82
AI总结

是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。

下面两段程序都能实现实验二的要求,对比学习一下吧:

中断方式:

/*****************************************************************************
 *                             头文件                                   *
 *****************************************************************************/
#include "8052.h"
#define LSA P1_5					
#define LSB P1_6
#define LSC P1_7
void EXINT0() __interrupt 0;
void EXINT1() __interrupt 2;

void delay(unsigned int ms)	//
{
  unsigned int x;
  unsigned int y;
  for(x=ms;x>0;x--)
	for(y=110;y>0;y--)
	  ;
}

/*****************************************************************************
 *                             初始化和功能函数                                   *
 *****************************************************************************/
void sys_init(void)
{
	LSA=0;
	LSB=0;
	LSC=0;
	IT0=0;                     
	IT1=0;
	EA=1;                       
	EX0=1;                      
	EX1=1;	
}
void Up2Down(int x) 		
{	
	int i, j;
	unsigned char sel=0x7f;
	for(i=0;i<x;i++)			
	{	
		for(j=0;j<8;j++)		
		{	
			P0 = sel;
			delay(125);	
			sel=sel>>1|0x80; 	
		}
		sel=0x7f;						
	}
}
void EXINT0() __interrupt 0     	
{
	Up2Down(1);					
}
void EXINT1() __interrupt 2       
{
	P0=0xFF;
	delay(125);
	P0=0x7F;
	delay(125);
	P0=0xFF;
	delay(125);					
}
/*****************************************************************************
 *                             主函数                                   *
 *****************************************************************************/
void main(void)
{
    sys_init();
    while(1)
    {
	P0=0x7F;
    }
}

查询方式:

/*****************************************************************************
 *头文件                                   *
 *****************************************************************************/
#include "8052.h"
#define LSA P1_5					
#define LSB P1_6
#define LSC P1_7
#define KEY0   P3_2 
#define KEY1   P3_3 
void delay(unsigned int ms)	//延时
{
  unsigned int x;
  unsigned int y;
  for(x=ms;x>0;x--)
	for(y=110;y>0;y--)
	  ;
}

/*****************************************************************************
 *初始化和功能函数                                   *
 *****************************************************************************/
void sys_init(void)
{
	LSA=0;
	LSB=0;
	LSC=0;
}
void left(int x) 		
{	
	int i, j;
	unsigned char sel=0x7f;
	for(i=0;i<x;i++)			
	{	
		for(j=0;j<8;j++)		
		{	
			P0 = sel;
			delay(125);	
			sel=sel>>1|0x80; 	
		}
		sel=0x7f;						
	}
}
/*****************************************************************************
 *                             主函数                                   *
 *****************************************************************************/
void main(void)
{
    sys_init();
    while(1)
    {
	if(KEY0&&KEY1)
	{
		P0=0x7F;
	}
	if(KEY0==0)
	{
		left(1);	
	}
	if(KEY1==0)
	{
		P0=0xFF;
		delay(125);
		P0=0x7F;
		delay(125);
		P0=0xFF;
		delay(125);	
	}
    }
}


 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部