導航:首頁 > 操作系統 > 51單片機怎麼用語言編輯

51單片機怎麼用語言編輯

發布時間:2023-08-07 09:52:01

① 51單片機用c語言怎麼寫延時函數

延時時間的計算與單片機的晶振頻率有關。若晶振頻率為12Mhz,那麼單片機每震動一次所需要的時間是1/12M s。那麼再來看看單片機執行一次自減所需要的振動次數是96次,假如我們對時間要求不是特別精確的話,可以約等於100來計算。現在通過上面兩個數據可以得出:單片機每執行一次自減所需要的時間是1/12M *100(s),即1/120000 s,逆向計算一下,每1ms需要自減多少次?120次對吧。所以一個簡單的延時功能就誕生了,我們只需要自減120次,就可以延時1ms,如果我們要延時50ms呢,那就自減50*120=6000次。那麼在程序上如何表達呢?我們可以用兩套for循環
void delay(int i){
int x,y;
for(x=i;x>0;x--){
for(y=120;y>0;y--)
}
}
參數 i 代表該函數延時多少ms

② 51單片機,用匯編語言編寫程序,10秒內對外部脈沖進行計數,並數出外部脈沖頻率。求高手編寫程序。

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H

MAIN:
MOV TMOD,#51H

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

MOV TH1,#0

MOV TL1,#0

SETB TR0

SETB TR1

SETB ET0

SETB EA

CLR A

MOV R2,#0

LOOP:
SJMP $

T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

SETB TR0

INC A

CJNE A,#20,T0E

MOV A,#0

INC R2

CJNE R2,#10,T0E

MOV R2,#0

MOV R1,TH1

MOV R0,TL1

MOV B,#10

LCALL DIV16

MOV P1,R0

T0E:
RETI

;R1:R0/B=R1:R0
DIV16:
MOV R7,#08H
MOV B,#6
DIV1:
CLR C
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
CLR C
SUBB A,B
JC DIV2
MOV R1,A
INC R7
DIV2:
DJNZ R7,DIV1
RET
END

③ 51單片機訪問片內數據存儲器某單元的內容用c語言怎麼寫

方法1:
char data *p; //定義一個指向片內RAM地址的指針
p = 0x30; //片內RAM地址為0x30
*p = 0x12; //向0x30內寫入立即數0x12

方法2:
#include <absacc.h>
char x;

x = DBYTE[0x30]; //將片內RANM地址0x30的內容賦給變數x
DBYTE[0x30] = 0x12; //向0x30內寫入立即數0x12

方法3:採用 _at_ 直接聲明變數所處地址,但該變數必須是全局變數。
char data x _at_ 0x30 ; //x為char型全局變數,地址位於data區地址0x30
。。。。。

x = 0x12; //向0x30內寫入立即數0x12

④ 51單片機用什麼軟體編程

51單片機用什麼軟體編程介紹如下:

與匯編相比,C語言在功能上、結構性、可讀性、握腔可維護性上有明顯的優勢,因而易學易用。用過匯編語言後再使用C來開發,體會更加深刻。KeilC51軟體提供豐富的函數庫個功能強大的集成開發調試工具,全Windows界面。

⑤ 51單片機,stm32,arino都是用什麼語言進行編程的

51單片機,STM32單片機用匯編或者C語言,現在基本都用C語言編程,Arino有自己的編程環境,用戶也是用C語言編程。

51單片機的編程

51單片機進入中國比較早,在早前用匯編編程比較多,我在上大學時也是學習的匯編編程,但是現在我用C語言編程,匯編已經不會了。51單片機比較常用的編程環境是Keil,現在Keil更新到Keil5了。如下是51單片機Keil的編程環境。

STM32單片機的編程

STM32單片機是意法半導體推出的高性價比、片上資源豐富的32位單片機,這個系列的單片機我一直在用,都是用C語言進行編程,官方推出的庫函數和HAL庫都是用C語言編程的,雖然有一部分匯編共存。STM32單片機用KeilMDK進行編程。

Arino的編程

Arino是一款做的非常成功的開源硬體,並且有自己的開發環境,將底層的寄存器設置都進行了封裝,用戶不用自己配置寄存器,調用封裝好的函數即可,可以在官方網站下載編程IDE。Arino旨在培養用戶的編程興趣,簡化了技術難度,很受歡迎。

在用戶層面,現在C語言編程已經是主流液敏,C語言的移植性和可讀性比匯編蔽槐語言有很大的優勢,也有鬧並枝很多人在使用匯編編程,尤其是涉及到底層時。

⑥ at89c51單片機 如何用c語言編程啊

隨著單片機硬體性能的提高,編寫應用程序更著重於程序本身的效率。

Franklin或KEII.C51交叉編譯器是專為51系列單片機設計的一種高效的C語言編譯器,用其開發的應用程序易於維護,可移植性好,是目前較流行的51系列單片機的開發工具。

一、C51語言程序設計的基本技巧

首先,C51語言程序設計要盡可能採用結構化的設計方法。可將整個程序按功能分成若干個模塊,不同的模塊完成不同的功能。對於不同的功能模塊,分別指定相應的入口參數和出口參數,而經常使用的一些程序最好編成函數,這樣既不會引起整個程序管理的混亂,還可使程序的可讀性、移植性增強。

C51語言的主程序結構:

#include

main0{while(1);}

這是最小的C程序,包括頭部文件和程序主體。頭部文件為引用的外部資源文件,包括硬體信息和外部模塊提供的可使用的函數和變數的說明。

語句定義後,就可以在C語言程序中像匯編一樣使用這些硬體設備。

在C5l中常用項目來管理,項目一般分為C文件塊和頭部文件塊,常把不同的功能寫在不同的C文件中,依靠項目的管理,最後把所有文件連接起來,這樣就可以得到燒錄的HEX文件或BIN文件。沒有在頭部文件中列出的文件,可以算是該C文件的內部函數和變數,外部C不能使用。另外,在程序設計過程中要充分利用C51語言的預處理命令

對於一些常用的常數,如TRUE、FAlSE、PI,以及各種特殊功能寄存器,或程序中一些重要的依據外界條件可變的常量,可採用宏定義(#de-fine)或集中起來放在一個頭文件中進行定義,再採用文件包含命令(#in-elude)將其加入到程序中,這樣當需要修改某個參量時,只需修改相應的包含文件或宏定義,而不必對使用它們的每個程序文件都進行修改,有利於文件的維護和更新。

舉例:利用宏定義和條件編譯,源程序不作任何修改就可適用於不同時鍾頻率的單片機系統,並可根據情況的不同取不同的delay值,完成不同的目的。程序如下:

#define flag 1#ifdef flag==l#define fose 6Mdelay=10;#elif flag==0#define fose 8Mdelay=12;#else#define fosc 12Mdelay=20;#endiFMain0{ for(I=O;l

⑦ 51單片機設計跑馬燈的程序用(c語言)編寫

|P1口接8個發光二極體共陽

#include <AT89X51.H>

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<<i;

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

(7)51單片機怎麼用語言編輯擴展閱讀:

Proteus 自從有了單片機也就有了開發系統,隨著單片機的發展開發系統也在不斷發展。 keil是一種先進的單片機集成開發系統。它代表著匯編語言單片機開發系統的最新發展,首創多項便利技術,將開發的編程/模擬/調試/寫入/加密等所有過程一氣呵成,中間不須任何編譯或匯編。

⑧ 51單片機中如何用匯編語言編寫流水燈

流水燈就是51單片機控制led燈依次點亮的控制方式。具體程序如下:

ORG 0000H ;復位啟動
AJMP START ;
ORG 001BH ;T1中斷
AJMP T1INT ;

;定義變數========================
YSJS EQU 30H;延時計數器
LED EQU 31H;LED控制緩沖器

;主程序==========================
START: MOV LED,#0FEH ;初始化數據
MOV YSJS,#0 ;
MOV TMOD,#10H ;定時器1工作於方式1,16位定時器
MOV TL1,#0B0H ;設置定時初值
MOV TH1,#3CH ;定時時間=50mS
SETB ET1 ;使能定時器1中斷
SETB TR1 ;啟動定時器1
SETB EA ;開總中斷

MOV P1,LED ;初始化流水燈
LOOP: JMP LOOP ;循環等待中斷
T1INT: PUSH PSW ;定時器1中斷程序
PUSH ACC ;保護現場
MOV TH1,#3CH ;定時時間=50mS
MOV TL1,#0B0H ;
INC YSJS ;

PUSH ACC ;保護ACC
MOV A,YSJI ;
CJNE A,#2,QT1 ;50mS*2=100mS
MOV P1,LED ;
MOV A,LED ;
RL A ;累加器A的值循環左移1位
MOV LED,A ;
MOV YSJS,#0 ;
QT1: POP ACC ;恢復現場
POP PSW ;
RETI ;返回主程序
END ;匯編程序結束

(8)51單片機怎麼用語言編輯擴展閱讀:

實現流水燈的三個方法:

第一種,匯流排方法實現流水燈。這是一種比較笨但又最易理解的方法,採用順序程序結構,用位指令控制P1口的每一個位輸出高低電平,加上延時函數,即可控制每個LED燈的亮滅。

第二種,移位方法實現流水燈採用循環程序結構編程。首先在程序開始給P1.0口送一個低電平,其它位為高。然後延時一段時間再讓低電平往高位移動,這樣就實現「流水」的效果了。

第三種,庫函數實現流水燈。利用左移函數進行。

閱讀全文

與51單片機怎麼用語言編輯相關的資料

熱點內容
doc轉為pdf 瀏覽:48
華為加密壁紙怎麼提取 瀏覽:52
曲線命令的描述 瀏覽:454
php模板怎麼修改 瀏覽:999
單片機和微機編程的區別 瀏覽:642
金牛期貨哪個app好 瀏覽:803
程序員越老越貶值嗎 瀏覽:211
安卓手機用計算機如何隱藏應用 瀏覽:459
網吧伺服器如何架設 瀏覽:322
垃圾壓縮罐用電安全 瀏覽:621
b150能用什麼伺服器cpu 瀏覽:477
支付寶批量付款app哪個好 瀏覽:849
java開源社區源碼 瀏覽:475
cad哪個命令和滾輪一樣縮放 瀏覽:986
5日金叉10均量線選股公式源碼 瀏覽:593
文件夾有豎線怎麼去 瀏覽:1002
如何連接伺服器並實現同步 瀏覽:332
androidseekbar進度條 瀏覽:358
梯度上升演算法知乎 瀏覽:652
qt項目源碼下載 瀏覽:395