控制灯移位(c):
/*中断控制灯移位实验(查询方式) */
//===================声明区=================================
#include <reg51.h> // 定义8051暂存器之标头档
#define LED P0 //定义LED端口
unsigned char SHIFT=0x01; //LED显示初始状态
unsigned char i;
//===================主程序==================================
main() // 主程序开始
{
LED=0x00;//LED熄灭
IT0=1; //外部中断1控制为边沿触发方式(下降沿有效)
EX0=1; //允许INT0中断
EA=1; //开放所有中断
while(1) // 无穷回圈,程序一直跑
{
while(IE0) //等待中断标志位
{
LED=(SHIFT<<i); //左移一位
i=(++i)%8; //调整移位位置
IE0=0; //清中断标志位
}
}
} // 主程序结束
控制数码管(c):
/*数码管中断控制实验 (数码管七段输出8闪烁,若有中断产生,
七段笔划A、B、C、D、E、F依次来回逐个点亮3轮后又循环复原。)*/
//===================声明区=================================
#include <reg51.h> // 定义8051暂存器之标头档
#define LED P2 //定义LED端口
unsigned char SHIFTL=0x01; //LED显示初始状态
unsigned char SHIFTR=0x20; //LED显示初始状态
unsigned char i;
void delay1ms(int x); //延迟函数
//===================中断程序================================
void service_int0(void) interrupt 0 using 1
{
unsigned char j;
for(j=0;j<3;j++)
{
while(LED!=0xdf) //七段笔划A、B、C、D、E、F依次顺时针方向逐个点亮3轮
{
LED=~(SHIFTL<<i);
delay1ms(500);