欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1370|回復: 7
收起左側

單片機控制A觸發接著B觸發,輸出1 B觸發接著A觸發,輸出0 如下函數怎么實現這樣的功能

[復制鏈接]
ID:302293 發表于 2021-11-24 13:40 | 顯示全部樓層 |閱讀模式
u8 hc[2];
void saomiao(){
    hc[1]=hc[0];//上次掃描的結果
    hc[0]=0xff;//本次掃描
    if(A==0)hc[0]&=0xfe;11111110
    if(B==0)hc[0]&=0xfd;11111101
}
u8 countAB=0;//A-B的計數
u8 countBA=0;//B-A的計數
void main(){
    while(1){
        saomiao();
        if(hc[1]==0xfe){//上次只有A有信號
                if((hc[0]==0xfd)||(hc[0]==0xfc)){//這次B有信號
                        countAB++;                        
                  }   
        }
        if(hc[1]==0xfd){//上次只有B有信號
                if((hc[0]==0xfe)||(hc[0]==0xfc)){//這次A有信號
                        countBA++;                        
                  }   
        }
        OUT=((countAB==countBA)0:1);//相等時輸出0,不相等時輸出1

    }
}

回復

使用道具 舉報

ID:123289 發表于 2021-11-24 15:23 | 顯示全部樓層
1、你要先弄清楚,什么是A觸發?什么是B觸發?即它們是如何表達的。
2、畫出邏輯真值表。
3、寫出目標表達式。
4、寫程序
回復

使用道具 舉報

ID:161164 發表于 2021-11-24 17:09 | 顯示全部樓層
  1. u8 hc[2];
  2. void saomiao(){
  3.     hc[1]=hc[0];//上次掃描的結果
  4.     hc[0]=0xff;//本次掃描
  5.     if(A==0)hc[0]&=0xfe;11111110
  6.     if(B==0)hc[0]&=0xfd;11111101
  7. }
  8. u8 countAB=0;//A-B的計數
  9. u8 countBA=0;//B-A的計數
  10. void main(){
  11.     while(1){
  12.         saomiao();
  13.         if(hc[1]==0xfe){//上次只有A有信號
  14.                 if((hc[0]==0xfd)||(hc[0]==0xfc)){//這次B有信號
  15.                         OUT=1;                        
  16.                   }   
  17.         }
  18.         if(hc[1]==0xfd){//上次只有B有信號
  19.                 if((hc[0]==0xfe)||(hc[0]==0xfc)){//這次A有信號
  20.                        OUT=0;                        
  21.                   }   
  22.         }
  23.     }
  24. }
復制代碼


回復

使用道具 舉報

ID:276663 發表于 2021-11-24 17:54 | 顯示全部樓層
樓上說的好!

時間結構,觸發條件,動作間隔,動作結束的條件,很多因素。
回復

使用道具 舉報

ID:88256 發表于 2021-11-24 19:13 | 顯示全部樓層
可以參考編碼器的程序
回復

使用道具 舉報

ID:685684 發表于 2021-11-24 20:40 | 顯示全部樓層
在A的下降沿判斷B的狀態。
回復

使用道具 舉報

ID:123289 發表于 2021-11-25 08:18 | 顯示全部樓層
教你一個方式:(C是輸出結果)
1、設置一個變量:SA。
2、當A動作時,將SA清0。
3、當B動作時,將SA+1,但如果SA>10 就不再加了,保持不變。
4、當SA=1時,就表示:A觸發,接著B觸發。就就讓 C=1。
C 如何 =0 呢,就不再教了吧。再弄一個SB,......
回復

使用道具 舉報

ID:213173 發表于 2021-11-25 11:12 | 顯示全部樓層
看這里的回帖示例,可以滿足你的要求。
http://m.raoushi.com/bbs/forum.php?mod=viewthread&tid=214265
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表