導航:首頁 > 操作系統 > 51單片機函數

51單片機函數

發布時間:2024-06-26 09:50:01

⑴ 51鍗曠墖鏈洪噷闈㈢殑鍑犱釜鍑芥暟 璋佽兘甯鎴戣В鍐充竴涓 姣忎竴琛岃兘甯鎴戣︾粏璁茶В涓涓嬩箞

void Timer0Init(void) //1寰縐扏11.0592MHz
{
TMOD &= 0xF0; //瀹氭椂鍣1淇濇寔鍘熺姸鎬佷笉鍙
TMOD |= 0x02; //瀹氭椂鍣0璁劇疆涓烘ā寮2
TH0=0xF7; //鍒濆間負256-9
TL0=0xF7; //閲嶈呭
EA=1; //寮鎬諱腑鏂
ET0=1; //寮t1涓鏂

// TR0=1; // 寮濮嬭℃椂

void tm0_isr() interrupt 1 using 1//瀹氭椂鍣0涓鏂鏈嶅姟鍑芥暟錛屼嬌鐢ㄥ伐浣滃瘎瀛樺櫒鍖1
{

}

///////////////////////////////////////////////////////////////

//External interrupt0 service routine
void exint0() interrupt 0 //(location at 0003H) //澶栭儴涓鏂0鏈嶅姟鍑芥暟
{
Alarm_Off = 1; //鎶ヨ︽帶鍒朵俊鍙風疆1

}

////////////////////////////////////////////////////////////////

void delay200ms(void) //寤舵椂200姣縐
{
unsigned char a,b,c;
for(c=55;c>0;c--)
for(b=100;b>0;b--)
for(a=3;a>0;a--);
}

void delay500ms(void) //寤舵椂500姣縐
{
unsigned char a,b,c;
for(c=67;c>0;c--)
for(b=141;b>0;b--)
for(a=18;a>0;a--);
_nop_();
}

void delay1s(void) //寤舵椂1縐
{
unsigned char a,b,c;
for(c=95;c>0;c--)
for(b=26;b>0;b--)
for(a=185;a>0;a--);
}

//----------- INIT UART ----------------------------------------

void UartInit()//涓插彛鍒濆嬪寲鍑芥暟
{
SCON = 0x50; //8-bit variable UART
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
EA = 1; //Open master interrupt switch
}

//------- Send a byte data to UART ----------------------------
void SendData(unsigned char dat)//鍙戦佷竴涓瀛楄妭
{
SBUF = dat; //Send data to UART buffer
while(!TI);
TI=0;
}

//------- Send a string to UART -------------------------------
void SendString(char *s)//鍙戦佸瓧絎︿覆
{
while (*s) //Check the end of the string
{
SendData(*s++); //Send current char and increment string ptr
}
} 鏀惰搗 sunqi8838306 5

⑵ 51單片機的函數

stdlib 頭文件即standard library標准庫頭文件 stdlib 頭文件里包含了C、C++語言的最常用的系統函數 該文件包含了的C語言標准庫函數的定義 stdlib.h裡面定義了五種類型、一些宏和通用工具函數。 類型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函數如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 具體的內容你自己可以打開編譯器的include目錄裡面的stdlib.h頭文件看看。

⑶ 51單片機c語言里 _nop_ 函數怎麼用

在單片機c語言中直接調用庫函數即可,具體如下:

#include<intrins.h> // 聲明了void_nop_(void);

_nop_(); // 產生一條NOP指令。

該函數的作用:對於延時很短的,要求在us級的,採用「_nop_」函數,這個函數相當信亂游匯編NOP指令,延時幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時時間,對於12M晶振,延時1uS。

⑷ 51單片機中斷函數怎麼寫

51單片機的中斷函數格式:


void jump_low() interrupt 2
{
P1 = ~P1; //位反轉
}

interrupt函數格式:

void +函數名()+interrupt +數字0~4

0 表示外部中斷0

1 表示定時器/計數器(T0)

2外部中斷1

3:定時器/計數器(T1)

4:串列口

⑸ 51單片機C語言中delay函數是怎麼定義和使用的

定義一個延時xms毫秒的延時函數

void delay(unsigned int xms) // xms代表需要延時的毫秒數

{

unsigned int x,y;

for(x=xms;x》0;x--)

for(y=110;y》0;y--);

}

使用:

void Delay10us(uchar Ms)

{

uchar data i;

for(;Ms》0;Ms--)

for(i=26;i》0;i--);

}

i=[(延時值-1.75)*12/Ms-15]/4

(5)51單片機函數擴展閱讀

1、在C51中進行精確的延時子程序設計時,盡量不要或少在延時子程序中定義局部變數,所有的延時子程序中變數通過有參函數傳遞。

2、在延時子程序設計時,採用do?while,結構做循環體要比for結構做循環體好。

3、在延時子程序設計時,要進行循環體嵌套時,採用先內循環,再減減比先減減,再內循環要好。

⑹ 51單片機delay()函數

delay函數是一般自己定義的一個延時函數。

C語言定義延時函數主要通過無意義指令的執行來達到延時的目的。下面給出一個經典的延時函數。
// 定義一個延時xms毫秒的延時函數
void delay(unsigned int xms) // xms代表需要延時的毫秒數
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}

⑺ 51單片機C語言程序中延時函數delay的原理是什麼

原理:只是執行一些所謂的「無實際意義的指令」,如縮放或執行一個int自加,簡單地說,就像高中數學中的「乘法原理」一樣,很容易迅速增加上面提到的「無意義指令」的數量

關於大小的值:如果是在C語言中,該值不僅與水晶振動、單片機本身的速度,但也與C的編譯器,所以,雖然這個值可以精確計算,但大多數情況下,程序員是經驗值。

當然,如果你在匯編中編程,情況就不同了,因為每條指令使用一定數量的機器周期,你當然可以根據所有指令使用的總時間來計算特定延遲的總時間。

(7)51單片機函數擴展閱讀:

定義延遲XMS毫秒的延遲函數

Voiddelay(unsignedintXMS)//XMS表示需要延遲的毫秒數

無符號intx,y;

For(x=XMS;X0;X-)

For(y=110;Y」0;Y-);

使用:

VoidDelay10us(ucharMs)

Uchar數據我;

(;女士「0;------Ms)

對於(I = 26)我> 0;我-);

I=[(延遲值-1.75)*12/ms-15]/4

⑻ 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單片機函數相關的資料

熱點內容
哪裡購買黃金app 瀏覽:661
中國聯通app優惠購功能在哪裡 瀏覽:227
dream伺服器密碼是什麼 瀏覽:222
程序員自救 瀏覽:486
cmd殺死進程命令 瀏覽:235
ipad激活伺服器地址 瀏覽:451
單片機開始直流電機壓降問題 瀏覽:17
伺服器地址失敗怎麼辦 瀏覽:146
安卓手機怎麼下載蘇聯游戲 瀏覽:130
主教的命令 瀏覽:805
php判斷變數為空 瀏覽:743
你演我猜安卓版本怎麼用 瀏覽:910
已夠app哪裡看 瀏覽:1007
程序員怎麼學會開車的技巧 瀏覽:785
網易郵箱如何刪除伺服器郵件 瀏覽:154
java多個泛型 瀏覽:276
安卓折扣號怎麼充值 瀏覽:604
行政決定行政命令 瀏覽:895
linux下的軟連接 瀏覽:606
fib在python是什麼意思 瀏覽:534