找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 170|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

C語言程序怎樣知道另一變量加1并跟隨加1

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:965189 發(fā)表于 2025-5-8 12:33 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機C程序,怎樣知道另一個變量a在加一。如果a加1,b也加1。如果a停止加1,b也停止并退出。怎樣寫?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:332444 發(fā)表于 2025-5-8 13:33 | 只看該作者
用狀態(tài),+1同時賦值狀態(tài),跟隨后狀態(tài)取消.
回復(fù)

使用道具 舉報

板凳
ID:1121801 發(fā)表于 2025-5-8 13:43 | 只看該作者
定義變量x,x=a,然后在后面需要b+1的程序之前用a-x==1作為條件,再在b+1語句后加一條x=a,納入a-x==1條件中.
回復(fù)

使用道具 舉報

地板
ID:68189 發(fā)表于 2025-5-8 13:43 | 只看該作者
常規(guī)思維: 定時器中斷函數(shù)中添加:   if(b!=a)  b=a;  這樣變量b的值永遠(yuǎn)追隨a  
回復(fù)

使用道具 舉報

5#
ID:1109793 發(fā)表于 2025-5-8 14:36 | 只看該作者
在加一,說的是多久?
比如1秒,那么先TMP=A,每秒鐘IF(A==TMP+1){B++;TMP = A;}ELSE IF(A==TMP)RETURN;
如果一秒內(nèi)沒變化或者加了大于1,就退出,退出就是啥也不做,意思就是B沒有變化。
周期很重要,可以0.1秒,也能1天。
回復(fù)

使用道具 舉報

6#
ID:583948 發(fā)表于 2025-5-8 15:04 | 只看該作者
volatile unsigned char a = 0; // 使用volatile防止優(yōu)化
unsigned char b = 0;
unsigned char last_a = 0;

void main() {
    while(1) {
        if (a != last_a) { // 檢測a是否變化
            b++; // 同步增加b
            last_a = a; // 更新舊值
        }
    }
}
回復(fù)

使用道具 舉報

7#
ID:69038 發(fā)表于 2025-5-8 15:46 | 只看該作者
char A,B;
char OA;

  //外部引入
回復(fù)

使用道具 舉報

8#
ID:69038 發(fā)表于 2025-5-8 15:49 | 只看該作者
if (OA !=A)
  {
    if (OA=A+1){OA=A;B++;}
    if(OA!=A+1){OA=A;}
}
回復(fù)

使用道具 舉報

9#
ID:1130698 發(fā)表于 2025-5-8 21:06 | 只看該作者
你這個需求是怎么來的?不可以直接使用變量a嗎?
回復(fù)

使用道具 舉報

10#
ID:1149928 發(fā)表于 2025-5-8 21:25 | 只看該作者
C語言不太好做,要么利用中斷檢測,檢測到a的值變化就觸發(fā)一次中斷然后b+1;要么使用輪詢的方法,一直循環(huán)查詢a是否加一。如果你是用FPGA就好辦很多,將a作為always的邊沿觸發(fā)條件,里面b+1。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表