《拨码开关控制流水灯》实作报告
班级: 姓名:
一、任务描述:
利用一只拨码开关控制流水灯的流动方向。拨码开关往上拨动时,流水灯自左往右流动,拨码开关往下拨动时,流水灯自右往左流动。流动速度不限。
往上拨动
往下拨动
二、要完成本次任务,你需要把以下问题搞清楚: 1、硬件连接:
根据任务描述,共需要 根导线连接LED灯, 根导线连接拨码开关。共需要 根导线。 2、程序设计:
(1)实验箱上拨码开关往上拨动时输出 电平,用数字 来表示。往下拨动时输出 电平,用数字 来表示。
(2)本例程序 (需要/不需要)导入头文件 (5)本例程序对流水灯流动速度不作要求, (需要/不需要)延时子函数。 (6)本例程序 (需要/不需要)对某些引脚进行位定义(单独使用)?有的话,是哪些脚? (7)利用 (if/while/for)基本语句和 逻辑运算符来判断拨码开关当前状态是往上拨动,还是往下拨动;利用 (if/while/for)基本语句来反复扫描拨码开关的状态。 (8)流水灯的三要素是:P1=a; yanshi(数值);数值大小决定的led的 a=_cror_(a,1);或=_crol_(a,1); 3、把程序补充完整(假定拨码开关接P2.0脚,LED接P1脚) #include< > //导入头文件,方便寻址// # include< > //导入头文件,便于使用移位指令// #define unsigned int //宏定义,简化程序// void yanshi(uint); //声明子函数// sbit k= ; //位定义单独使用的引脚// uint a=0x ; //设置流水灯初值// void main() { (1) { if(k= = ) { P1= ; yanshi( ); a=_crol_(a,1); } if(k= = ) { P1= ; yanshi( ); a=_cror_(a,1); } } } void yanshi(uint x) { uint i,j; for(i=x;i>0;i--) for(j= ;j>0;j--); } //主函数// //死循环// //判断拨码开关状态// //将a值送给P1口 // //延时// //a向左移动一位// //判断拨码开关状态// //将a值送给P1口 // //延时// // a向右移动一位// //延时子函数// 因篇幅问题不能全部显示,请点此查看更多更全内容