亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機流水燈的子程序調用問題 [打印本頁]

作者: 孫韜    時間: 2018-4-10 15:18
標題: 單片機流水燈的子程序調用問題
編好了一個控制流水燈的程序,思路是在沒有開關閉合的時候P1的燈是流水燈狀態,如果開關閉合,控制P1處的燈以兩種不同的模式交替點亮,
這個程序在keil的編譯中沒有錯誤,但是在Proteus仿真中,我發現P1的燈并不會對按鍵有反應,始終保持流水燈的狀態,就算是長時間保持開關閉合,也并不會發生P1口的燈改變閃爍模式的情況,這個問題困擾了我很長時間,我認為既然開關按下,在if中就可以根據P3.3,P3.2口的狀態進行相應的函數調用,但是在仿真中這沒有發生,誰知道是為什么嗎?


單片機源程序如下:
  1. #include<reg51.h>//頭文件
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. void delay(unsigned int i)//控制燈亮時間的延時函數
  5. {
  6. uchar t;
  7. while(i--)
  8. {
  9.   for(t=0;t<120;t++);
  10. }
  11. }
  12. void light_0()//控制燈亮的第一種模式
  13. {
  14. uchar m;
  15. for(m=0;m<5;m++)
  16. {
  17.   P1=0x0f;//P1口高四位燈亮
  18.   delay(500);
  19.   P1=0xf0;//p1口第四位燈亮
  20.   delay(500);
  21. }
  22. }
  23. void light_1()//燈亮的第二種模式
  24. {
  25. uchar n;
  26. for(n=0;n<5;n++)
  27. {
  28.   P1=0xff;//P1口全為高電平,燈滅
  29.   delay(500);
  30.   P1=0x00;//P1口全為低電平,燈亮
  31.   delay(500);
  32. }
  33. }
  34. void main()//主程序
  35. {
  36. uchar temp_0,temp_1;
  37. P1=0xfe;
  38. while(1)
  39. {
  40.   temp_0=P3&0x40;//將P3.2口的電位值賦給temp_0
  41.   temp_1=P3&0x80;//將P3.3口的電位值賦給temp_1
  42.   P1=_crol_(P1,1);循環左移
  43.   delay(500);//保持燈亮
  44.   if(temp_0==0)//判斷P3.2口的電位大小
  45.   light_0();//如果是低電平,執行燈亮模式一的函數
  46.   if(temp_1==0)//檢查P3.3口的電平
  47.   light_1();//如果P3.3口是低電平,執行燈亮模式二的函數
  48.   
  49. }
  50. }  
復制代碼



作者: wulin    時間: 2018-4-10 20:44
你把賦值寫錯了,不過這個程序還有問題,切換顯示模式后恢復不了原來流水燈模式,因為P1狀態變化了。
temp_0=P3&0x04;//將P3.2口的電位值賦給temp_0
temp_1=P3&0x08;//將P3.3口的電位值賦給temp_1
作者: lon15926    時間: 2018-4-11 08:59
wulin 發表于 2018-4-10 20:44
你把賦值寫錯了,不過這個程序還有問題,切換顯示模式后恢復不了原來流水燈模式,因為P1狀態變化了。
temp ...

還要把P1=0xfe;加到while里面去
作者: 孫韜    時間: 2018-4-11 16:44
疏忽了,多謝各位!




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1