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

單片機代碼修改變數

發布時間: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存儲器,這樣修改方便。

閱讀全文

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

熱點內容
unix網關命令 瀏覽:873
想自己做網站要學編程嗎 瀏覽:597
租個伺服器開個私服需要什麼 瀏覽:272
圖片換成pdf格式 瀏覽:663
javamidi編程 瀏覽:833
android60demo 瀏覽:69
頭條演算法怎麼復習 瀏覽:514
燈光控制通道可以編程設置嗎 瀏覽:783
webpack命令行 瀏覽:807
卸載雲伺服器操作系統 瀏覽:31
java文件移動文件夾 瀏覽:451
針織公斤足稱演算法 瀏覽:460
電腦下載的圖片從文件夾重新編組 瀏覽:645
安卓源碼編譯引導失敗 瀏覽:676
蘋果怎麼添加自定義app文件夾 瀏覽:930
橙牛app怎麼找客服 瀏覽:307
php對象魔術方法 瀏覽:487
OBV能量潮幅圖指標源碼 瀏覽:915
編程15個好習慣 瀏覽:678
電腦u盤文件夾顯示屏幕保護程序 瀏覽:803