久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2467|回復: 6
收起左側

各位大佬這單片機電路怎么按鍵了沒反應?麻煩幫我看看程序

[復制鏈接]
ID:1052650 發(fā)表于 2022-11-23 20:07 | 顯示全部樓層 |閱讀模式
50黑幣
開始時,第一個燈閃爍,時間間隔為1s。當按下按鍵后,八個燈閃爍,時間間隔為 2s;若在時間間隔為4s時按下按鍵,則進入呼吸燈模式,八個燈從亮到暗,再由暗到亮如此循環(huán);再次按下按鍵,則恢復最初狀態(tài)(第一個燈閃爍,間隔1s)。要求是這樣子的,仿真圖在最后,感謝各位
0.png

單片機源程序如下:
  1. #include <REGX51.H>

  2. unsigned char a[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  3. int count0=0,count1=0,count=0,num0=0,num1=0;
  4. int temp=1,temp1=1,temp2=1,n=0,flag=0;

  5. void delay()
  6. {
  7.         unsigned char i,j;
  8.         for(i=0;i<20;i++){
  9.                 for(j=0;j<120;j++);
  10.         }
  11. }
  12. void inittimer0()
  13. {
  14.         TMOD=0x01;
  15.         TH0=(65536-50000)/256;
  16.         TL0=(65536-50000)%256;
  17.         TR0=1;
  18.         EA=1;
  19.         ET0=1;
  20. }
  21. void display(){
  22.         int i;
  23.         for(i=0;i<8;i++){
  24.                 delay();
  25.                 delay();
  26.                 delay();
  27.                 delay();
  28.                 delay();
  29.                 P2=~a[i];
  30.         }
  31.         for(i=7;i>1;i--){
  32.                 delay();
  33.                 delay();
  34.                 delay();
  35.                 delay();
  36.                 delay();
  37.                 P2=~a[i];
  38.         }
  39. }

  40. void button_scan(){
  41.         delay();
  42.         if(P1_0!=1&&n>3) {temp=temp?0:1;}
  43.         else if(P1_0!=1){flag=1;temp2=0;}
  44.         while(P1_0==0);
  45. }

  46. void main(){
  47.         inittimer0();
  48.         while(1){
  49.                 button_scan();
  50.                 if(temp==1){
  51.                         P2=0xff; //±£3ÖLEDè«°μ
  52.                         P2_0=num0;
  53.                 }
  54.                 else if(temp1!=temp ){
  55.                         display();
  56.                 }
  57.                 else if(flag){
  58.                         P2=num1;
  59.                 }
  60.         }
  61. }
  62. void timer0_isr() interrupt 1
  63. {
  64.         TH0=(65536-50000)/256;
  65.         TL0=(65536-50000)%256;
  66.         count0++;
  67.         count1++;
  68.         count++;
  69.         if(count>=20) {
  70.                 n++;
  71.                 count=0;
  72.                 if(n>=4) {n=0;}
  73.         }
  74.         if(count0>=20&&!temp2){
  75.                 num0=num0?0:1;
  76.                 count0=0;
  77.         }
  78.         else if(count1>=40){
  79.                 num1=~num1;
  80.                 count1=0;
  81.         }
  82. }
復制代碼

回復

使用道具 舉報

ID:1034262 發(fā)表于 2022-11-24 09:51 | 顯示全部樓層
示波器看看按鍵時IO有變化嗎?有變化就是電路有反應。
回復

使用道具 舉報

ID:1052650 發(fā)表于 2022-11-24 16:18 來自觸屏版 | 顯示全部樓層
coody_sz 發(fā)表于 2022-11-24 09:51
示波器看看按鍵時IO有變化嗎?有變化就是電路有反應。

按了后p1.0口有反應,但是p2口沒反應。。沒有變化成下面?zhèn)z種模式,
回復

使用道具 舉報

ID:161164 發(fā)表于 2022-11-24 17:58 | 顯示全部樓層
代碼邏輯太混亂了
理一下邏輯,畫一畫流程圖
回復

使用道具 舉報

ID:1052650 發(fā)表于 2022-11-24 19:44 來自觸屏版 | 顯示全部樓層
lkc8210 發(fā)表于 2022-11-24 17:58
代碼邏輯太混亂了
理一下邏輯,畫一畫流程圖

終于找到哪里邏輯錯了。大佬有沒有優(yōu)化的方法
回復

使用道具 舉報

ID:1049152 發(fā)表于 2023-1-12 14:59 | 顯示全部樓層
把你要實現(xiàn)的狀態(tài)分幾個函數(shù)寫好,定義一個變量,按一下按鍵變量加1,有幾種狀態(tài)就加到幾,大于之后清零如此循環(huán)。
回復

使用道具 舉報

ID:1049152 發(fā)表于 2023-1-12 15:00 | 顯示全部樓層
變量是幾就執(zhí)行第幾個函數(shù)就行了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 热99在线 | 精品视频一区二区在线观看 | 国产一区二区av | 亚洲综合无码一区二区 | 成人在线黄色 | 日韩免费成人av | 久久精品二区亚洲w码 | 欧美久久不卡 | 一区二区三区四区视频 | 亚洲一区国产 | 欧美a在线 | 亚洲精品成人在线 | 欧美日韩视频一区二区 | 天天草狠狠干 | 羞羞视频网站免费看 | 国产一区二区三区精品久久久 | 国产一区二区在线免费观看 | 欧美成人精品一区二区男人看 | 国产在线精品一区二区 | 婷婷不卡 | 91亚洲国产成人久久精品网站 | 四虎影音| 天堂免费看片 | 最近中文字幕第一页 | 日韩成人一区二区 | 午夜在线影院 | 国产三级网站 | 自拍偷拍亚洲视频 | 欧美三级成人理伦 | 成人做爰69片免费观看 | 欧美精品一区在线 | 欧美三级成人理伦 | 91精品国产欧美一区二区 | 亚洲一区中文字幕在线观看 | 国产一区二区三区欧美 | 亚洲精品日韩精品 | 天天操天天射天天舔 | av激情在线 | 日韩在线视频一区 | 日韩精品中文字幕一区二区三区 | 国产一区 在线视频 |