函数 单片机glint_为什么用单片机写的自锁开关程序,把开关放到P0.0脚后LED就开始闪烁?...
其实程序简单没更没复杂呀简单事要搞复杂呢 见图程序: 图" class="ikqb_img_alink"> #include sbit k1=P3^2; sbit k2=P3^3; bit glint; //闪烁标志位 void delay() { unsigned int i; for(i=12000;i>0;i--); } main() { while(1) { if(glint==1) { P0=~P0; delay(); } if(k1==0) { glint=0; //停止闪烁 P0=0; //全亮 while(k1==0); } if(k2==0) { glint=1; //始闪烁 while(k2==0); } } }@_@/*----------------------------------------------- ------------------------------------------------*/ #include //包含文件般情况需要改 //文件包含特殊功能寄存器定义 #define LED P0 sbit KEY1=P3^2; sbit KEY2=P3^3;// 用define sbit 关键字 定义 LEDP0端口 //LED自任意定义且容易记忆符号 void DelayUs2x(unsigned char t); void DelayMs(unsigned char t); unsigned char KeyScan(void);//函数声明 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { unsigned char num = 0; while (1) //主循环 { num=KeyScan(); switch(num) { case 1: LED=0xff; break; case 2: LED=0x00; //P0口赋值 0x00 DelayUs2x(10000); //调用延程序;更改延数字更改延度; //用于改变闪烁频率 LED=0xff; //P0口赋值 0xff DelayUs2x(10000); break; default: break; } DelayMs(1); } } /*------------------------------------------------ uS延函数含输入参数 unsigned char t返值 unsigned char 定义符号字符变量其值范围 0~255 使用晶振12M精确延请使用汇编,致延 度 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延函数含输入参数 unsigned char t返值 unsigned char 定义符号字符变量其值范围 0~255 使用晶振12M精确延请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //致延1mS DelayUs2x(245); DelayUs2x(245); } } /*------------------------------------------------ 按键扫描函数返扫描键值 ------------------------------------------------*/ unsigned char KeyScan(void) { /********************************************************/ if(!KEY1) //检测低电平说明按键按 { DelayMs(10); //延抖般10-20ms if(!KEY1) //再确认按键否按没按则退 { while(!KEY1);//确认按按键等待按键释放没则退 { return 1; } } } /********************************************************/ else if(!KEY2) //检测低电平说明按键按 { DelayMs(10); //延抖般10-20ms if(!KEY2) //再确认按键否按没按则退 { while(!KEY2);//确认按按键等待按键释放没则退 { return 2; } } } else return 0; return 0 ; } 展开@_@啊!这个很简单啊,兄弟。你行的,加油!可能是驱动不足了,去掉电阻然后按P22口的开关测P21的电压是否正常。
总结
以上是生活随笔为你收集整理的函数 单片机glint_为什么用单片机写的自锁开关程序,把开关放到P0.0脚后LED就开始闪烁?...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 人工神经网络优化算法,进化算法优化神经网
- 下一篇: 怎么看待凯恩斯主义