用c語言怎麼在微控制器at89c51上編寫延時10秒的

時間 2021-08-30 09:55:54

1樓:匿名使用者

1、十秒對於微控制器來說是很長很長的時間了,微控制器十秒的時間什麼事都不能做,只在跑這延時程式,那是什麼概念,用中斷的話,微控制器正常執行其他程式,只是時間到了才過來處理延時以後的程式,效率不知道高了多少 。

2、例程:

//假設晶振12mhz

#include "reg51.h"

unsigned int ysjs=0;

void main(void)

}void timer1(void) interrupt 3                //定時器1中斷函式使用預設暫存器組}

2樓:匿名使用者

首先不知兄弟你玩微控制器玩了多久,用c語言程式設計的話極難做到精確地延時10ms,不過誤差不會大,我下了兩個,借鑑下:

1.void delay(uint cnt) //簡單的延時3.void delay(int a)

用12mhz的話a=10000

3樓:匿名使用者

這麼長的延時,不用迴圈延時,沒實際意義 。微控制器在這10s時間裡不能做其它事了。要用定時器中斷,定時10s。不是很難的,按常規寫法,誤差+1.6ms。

#include

#define uchar unsigned charsbit led=p1^0;

uchar time;

void initt0( )

void main(void)

}void t0int( ) interrupt 1如果細調定時初值(包括重灌),th0 = (65536-49993)/256;

tl0 = (65536-49993256;

誤差可以減小到+0.3ms

4樓:小雕

參考http://hi.baidu.com/小雕

5樓:匿名使用者

你 用keil進行調下就行了

用c語言怎麼在微控制器at89c51上編寫一個用一個開關控制16個燈亮和滅的程式

6樓:匿名使用者

你買一塊微控制器開發板對照微控制器程式設計書就能搞定了,花點時間。需求有點模糊,要具體。

7樓:頂起石頭的小草

16個燈是要怎麼去控制?一次性的兩滅

用at89c51微控制器編寫一個c語言程式實現2個數碼管秒計數器,用4個按鍵分別控制暫停、加一秒、減一秒和繼續

8樓:匿名使用者

#include

#define uchar unsigned char;

uchar led1,led2;

uchar distab=;

uchar num=0;sec,key;

void delay(unsigned int a)}main()}}

)display();}}

9樓:匿名使用者

怎麼不多看看書啊,這麼.............還來懸賞20分,浪費啊

10樓:魂政

這。。。。。。。。。。無語了,,簡單

nop 在c語言裡怎麼用呢,51微控制器c語言裡 nop 函式怎麼用?

在c語言裡沒有這個 nop 函式,這個函式是在51微控制器裡使用的。作用 對於延時很短的,要求在us級的,採用 nop 函式,這個函式相當彙編nop指令,延時幾微秒。nop指令為單週期指令,可由晶振頻率算出延時時間,對於12m晶振,延時1us。對於延時比較長的,要求在大於10us,採用c51中的迴圈...

微控制器C語言程式設計,微控制器C語言程式設計題

按你的程式的結構,不做大的變動,又能理解的方法 四個程式合併成一個,當然就只能有一個主程式了,一個while 1 了,凡是while 1 以上的程式只保留一個就行了。四個程式的while 1 以下的都合併寫在一個while 1 下面,分為四段。有四個按鍵,判斷按鍵被按下的程式會寫吧?那判斷每個按鍵的...

微控制器C語言程式設計,51微控制器C語言程式設計

使用兩個定時器或一個定時器中使用兩個計數都能滿足你的要求。建議使用一個定時器和一個計數器即可,如計數器為i,則if i 測溫定時 0 溫度測量 if i 步進電機定時 0 步進電機控制 注 此時要求兩個控制模組的定時步長是一致,比如都是1ms 設定一個比較小的定時間隔,例如1ms,用靜態變數累加,比...