是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。
下面两段程序都能实现实验二的要求,对比学习一下吧:
中断方式:
/*****************************************************************************
* 头文件 *
*****************************************************************************/
#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);
}
}
}