单片机补充案例--中断到底用不用
【摘要】 是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。
下面两段程序都能实现实验二的要求,对比学习一下吧:
中断方式:
/***************************************************************************** * 头文件 * *************************...
是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。
下面两段程序都能实现实验二的要求,对比学习一下吧:
中断方式:
-
/*****************************************************************************
-
* 头文件 *
-
*****************************************************************************/
-
#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);
-
}
-
}
-
}
-
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/110729285
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)