導航:首頁 > 操作系統 > 單片機代碼修改變數

單片機代碼修改變數

發布時間:2023-07-20 12:41:53

❶ 51單片機程序修改

現在,你顯示的是num1,其范圍是0~60。
可以把它的上限,改為30,這就符合你的要求了。

另外再增加一個變數num2,其范圍是0~60。
用它來控制紅綠黃的交替變化,即可。

voiddisplay(ucharge,ucharshi)
{
if(num2<=25){P1=0xfe;}
elseif(num2<=30){P1=0xff;delay(2);P1=0xfd;}
elseif(num2<=60){P1=0xfb;}
……
}
……
voidtime0()interrupt1
{
TH1=(65536-5000)/256;//--應該是TH0=...
TL1=(65536-5000)%256;//--應該是TL0=...

num++;

if(num==10){
num=0;

num1++;
if(num1==30)num1=0;//用於顯示秒數
shi=num1/10;
ge=num1%10;

num2++;
if(num2==60)num2=0;//用於控制變換

}
}

❷ 單片機定時器中斷改變全局變數

int h1,m1,s1; //時分秒全局變數
int tt; //定時器0進入中斷的次數
void main()
{
init(); //初始化
while(1)
{
display(h1,m1,s1);
}
}
void dingshi0() interrupt 1 //定時器0中斷
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==20)
{
tt=0;
s1++; //秒數+1
if(s1==60){ s1=0; m1++;}//計滿60秒分位進1,秒位清0
if(m1==60){ m1=0; h1++; }//計滿60分時位進1
if(h1==24){ h1=0; }//計滿24小時時位清0
}
}

在中斷內,你可以直接寫成這樣

只用全局變數更方便

再有,你苦惱的問題是因為函數每次調用的時候

都是以0為數據傳遞的,錯誤在串口初始化部分以及你調用函數的時候

你的變數S,沒有全局變數聲明,切也沒有局部變數聲明

所以每次調用函數的時候,S都是以0開始,最多加到1,之後又從0開始遞增

❸ 單片機中有一個整型變數,如何給它賦值。

嘿嘿 俺來幫你解答
1 先在片內RAM中定義一個字變數(裝整型數據 16位數) 再傳送數據(先傳送低8位 再傳送高8位)
2 參考程序:
IN16 DATA 40H ;在片內RAM中定義一個整型變數 40H單元為低旅宴8位 41H單元為高做數8位
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV IN16,#12H ;將數據1234H傳送拆胡銀給整型變數
MOV IN16+1,#34H

呵呵 滿意就給 滿意回答吧

❹ 51單片機如何設置數組變數

因為,51單片機的位地址,只能直接定址,不能間接定址。
所以,51單片機的位地址,就不能用數組來進行操作。

不過,可以利用邏輯運算,進行位操作。

先定義一個數組:a[8] = [128, 64,...8, 4, 2, 1];
然後:P1 |= a[3]; ,這就是令 P1.3 置一。

其實,採用數組的方法,並非是最簡單的。
直接:P1 |= (1 << 3); ,就可以了。

❺ 在單片機C語言中如何對變數的某一位進行操作或賦值。

在C語言中,一般有兩種方法來操作位,一種是使用C語言提供的位運算操作符,一種是使用位域。

1、使用位域

在C語言中定義位域的一般格式如下:

struct位域結構名
{位域列表};

struct:在C語言中定義位域所使用的關鍵字是struct。

位域結構名:是一個C語言中的標識符,有字母、數字、下劃線組成,而且第一個字元必須是字母或者下劃線。

位域列表:組其中位域列表的形式為: 類型說明符 位域名:位域長度

下面的示例代碼,通過位域來計算IEEE754浮點數編碼中單精度數的最大值 、最小值和最小弱規范數。

#include<stdio.h>
typedefstructFP_SINGLE
{
unsigned__int32fraction:23;
unsigned__int32exp:8;
unsigned__int32sign:1;
}fp_single;
intmain()
{
floatx;
fp_single*fp_s=(fp_single*)&x;
fp_s->sign=0;
fp_s->exp=0xfe;
fp_s->fraction=0x7fffff;
printf("float最大數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0x1;
fp_s->fraction=0x0;
printf("float最小數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0;
fp_s->fraction=0x1;
printf("float最小弱規范數:%le ",(double)x);
return0;
}

2、使用位運算符

C語言中的位運算符有一個基本的常識,即只能操作整數,不能操作浮點數,因為浮點數是使用IEEE754編碼的,使用位操作數沒有任何意義。

C語言提供的位運算符列表:
&按位與如果兩個相應的二進制位都為1,則該位的結果值為1,否則為0
|按位或兩個相應的二進制位中只要有一個為1,該位的結果值為1
^按位異或若參加運算的兩個二進制位值相同則為0,否則為1
~取反~是一元運算符,用來對一個二進制數按位取反,即將0變1,將1變0
<<左移用來將一個數的各二進制位全部左移N位,右補0
>>右移將一個數的各二進制位右移N位,移到右端的低位被舍棄,對於無符號數,高位補0

❻ 怎麼從單片機外部改變單片機中程序的變數

直接修改程序中的變數,危謹兆險性很清櫻大呢,要是改錯了位元組讓指令變成非法的,那程序就亂祥正租套了。最好是把那些變數分離出來單獨放在一個地方,比如24C02存儲器,這樣修改方便。

閱讀全文

與單片機代碼修改變數相關的資料

熱點內容
app的競爭力如何寫 瀏覽:585
linux刪除swp 瀏覽:588
pdfxchange40 瀏覽:75
車牌號碼是哪個app 瀏覽:48
文件夾如何添加圓點 瀏覽:729
如何建立主索引命令 瀏覽:599
mac電腦怎麼打開終端命令 瀏覽:741
androidvpn待機不斷 瀏覽:756
硬碟的文件夾如何設置密碼 瀏覽:384
plc定位編程 瀏覽:47
mac命令添加用戶 瀏覽:815
android時間widget 瀏覽:393
qd128h壓縮機參數 瀏覽:287
用單片機測車距 瀏覽:394
去哪裡找加密的便簽 瀏覽:19
武漢訂酒店旅館哪個app平台好 瀏覽:114
c語言在線編譯器位元組流 瀏覽:317
帶隊伍pdf 瀏覽:951
電腦如何形成伺服器 瀏覽:522
javaprint換行 瀏覽:785