函数 单片机glint_为什么用单片机写的自锁开关程序,把开关放到P0.0脚后LED就开始闪烁?...
其實(shí)程序簡單沒更沒復(fù)雜呀簡單事要搞復(fù)雜呢 見圖程序: 圖" class="ikqb_img_alink"> #include sbit k1=P3^2; sbit k2=P3^3; bit? glint;? //閃爍標(biāo)志位 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 關(guān)鍵字 定義 LEDP0端口 //LED自任意定義且容易記憶符號 void DelayUs2x(unsigned char t); void DelayMs(unsigned char t); unsigned char KeyScan(void);//函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char num = 0; while (1) //主循環(huán) { num=KeyScan(); switch(num) { case 1: LED=0xff; break; case 2: LED=0x00; //P0口賦值 0x00 DelayUs2x(10000); //調(diào)用延程序;更改延數(shù)字更改延度; //用于改變閃爍頻率 LED=0xff; //P0口賦值 0xff DelayUs2x(10000); break; default: break; } DelayMs(1); } } /*------------------------------------------------ uS延函數(shù)含輸入?yún)?shù) unsigned char t返值 unsigned char 定義符號字符變量其值范圍 0~255 使用晶振12M精確延請使用匯編,致延 度 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延函數(shù)含輸入?yún)?shù) unsigned char t返值 unsigned char 定義符號字符變量其值范圍 0~255 使用晶振12M精確延請使用匯編 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //致延1mS DelayUs2x(245); DelayUs2x(245); } } /*------------------------------------------------ 按鍵掃描函數(shù)返掃描鍵值 ------------------------------------------------*/ unsigned char KeyScan(void) { /********************************************************/ if(!KEY1) //檢測低電平說明按鍵按 { DelayMs(10); //延抖般10-20ms if(!KEY1) //再確認(rèn)按鍵否按沒按則退 { while(!KEY1);//確認(rèn)按按鍵等待按鍵釋放沒則退 { return 1; } } } /********************************************************/ else if(!KEY2) //檢測低電平說明按鍵按 { DelayMs(10); //延抖般10-20ms if(!KEY2) //再確認(rèn)按鍵否按沒按則退 { while(!KEY2);//確認(rèn)按按鍵等待按鍵釋放沒則退 { return 2; } } } else return 0; return 0 ; } 展開@_@啊!這個很簡單啊,兄弟。你行的,加油!可能是驅(qū)動不足了,去掉電阻然后按P22口的開關(guān)測P21的電壓是否正常。
總結(jié)
以上是生活随笔為你收集整理的函数 单片机glint_为什么用单片机写的自锁开关程序,把开关放到P0.0脚后LED就开始闪烁?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工神经网络优化算法,进化算法优化神经网
- 下一篇: Linux内核为大规模支持100Gb/s