实验3 按键 K1-K4 分组控制LED
目标功能: K1按下时递增点亮一只LED,全亮后再次按下则再次循环开始, K2按下后点亮上面4只LED,
K3按下后点亮下面4只LED, K4按下后关闭所有LED。
每位同学单独要求提交实验报告,内容包含:
1 实验步骤 2 Debug步骤
3 附电路图运行结果截图 4 程序详细注释
5 实验报告命名规则 : “学号后四位” + “K1-K4 分组控制LED”.doc
参考电路图
参考程序:
#include
#define uchar unsigned char #define uint unsigned int //延时
void DelayMS(uint x) { uchar i; while(x--) for(i=0;i<120;i++); } //主程序 void main() { uchar k,t,Key_State; P0=0xff; P1=0xff; while(1) { t=P1; if(t!=0xff) { DelayMS(10); if(t!=P1) continue;
//取得4位按键值,由模式XXXX1111(X中有一位为0,其他均为1) //变为模式0000XXXX(X中有一位为1,其他均为0) Key_State=~t>>4; k=0;
//检查1所在位置,累加获取按键号k while(Key_State!=0) { k++; Key_State>>=1; }
//根据按键号k进行4种处理 switch(k) { case 1: if(P0==0x00) P0=0xff; P0<<=1; DelayMS(200); break; case 2: P0=0xf0;break; case 3: P0=0x0f;break; case 4: P0=0xff;
}
}
}
}
课后作业:
自行复习汇编语言, 用汇编实验相同功能(可参考教材第二章程序)。 下周一将保存好的项目文件带到实验室,检查。

