我C語言寫了C51微控制器的流水燈定時一秒的程式,有如下問題,求助高手改錯

時間 2022-02-08 08:40:05

1樓:所謂的大人

#include

void delay(void)

void main(void)

1;啟動就全亮,是因為你沒對p1口進行復位,預設的為高電平,所以會全亮

你在最前面加句p0=0x00;就可以解決了。

2建議你使用delay函式比較好,這個延時自己可以調節的,就改變括號的數字就可以了。

好像有它的時間計算公式的,我忘記的,大致1s是250吧。

3你那個while語句用的我不太理解,怎麼跑一死迴圈,但是裡面又沒給語句呢?也沒看見

你有什麼結束語句的。你還是好好看看while語句的用法吧!

2樓:匿名使用者

1.微控制器啟動時,埠為高電平即p1 = 0xff,時間比較的短,則會剛開始執行時八個燈全都亮。

2.可以50ms定時20次,即th0 = 0x3c,tl0 = 0xb0,這樣誤差會小一點。

3.因為a為int型,16位的,而p1為8位的,所以第一遍和第二遍相差約8秒;將int a 改為

unsigned char a;就不會出現這樣的情況了。

呵呵,希望對你有幫助,祝你順利!

3樓:匿名使用者

#include

unsigned char i;

void main()

void time0_int(void) interrupt 1}幫你改了一下程式,你再看看吧

4樓:匿名使用者

所謂的大人 你的3問題 亮了

51微控制器用定時器編的流水燈,出了些問題,請高手看一下!

5樓:好嘞啊啊啊啊

#include"reg51.h"

unsigned char s=0,a=128,count=0;

void main()

void t0_srv() interrupt 1 using 1p1=~a;}}

或者直接用迴圈左移或迴圈右移

#include

a=_cror_(a,1); //迴圈右移

6樓:做而論道

void t0_srv() interrupt 1 using 1

if(count < 7) a = a >> 1; else a = a << 1;}}

試試看。

7樓:匿名使用者

哥們,我大致看了下。你把中斷裡的

if (count == 15)

改成if (count == 14)

試試。試一下,應該是這樣。

求高手寫 用51微控制器c語言 tmod=0x01 定時一秒的程式

51微控制器c語言對流水燈程式設計,用定時中斷做

8樓:安全管理人

#include

#define uchar unsigned charuchar m=0,i=0;

void main()

void timer0() interrupt 1{th0=(65536-50000)/256;

tl0=(65536-50000)%256;

m++ ;

if(m==5) //12m晶振   定時5*50ms=250ms{m=0;

p1=~(0x01<

[補充]

延時函式是一種粗略計算延時時間的函式

是通過讓微控制器執行空指令,達到等待延時的目的。

經常被應用在對延時時間要求不太嚴格的場合。

而定時器中斷,則是通過對晶振時鐘進行計數

由於晶振的頻率一般是很穩定的,所以晶振的脈衝頻率基本穩定從而通過對脈衝進行計數即可得到準確的延時目的。

中斷延時函式和定時器中斷延時沒有明確的對應關係。

主要是根據你的應用場合來確定使用哪種函式。

9樓:

// 寫了個測試程式,希望對你有幫助

#include

#define uchar unsigned charuchar m=0,i=0;

void main()

void timer0() interrupt 1}

10樓:匿名使用者

把具體要求說清楚後,我才好把按照要求寫的程式貼出來

c51微控制器獨立按鍵控制流水燈小問題,求助大神看看我的程式錯在了**?用c語言,開關開啟後流水燈一直亮

11樓:匿名使用者

麻煩你把想要實現的功能表述清楚,按照你的程式,你的按鍵無論按否,流水燈都是亮的。

12樓:nm灰灰

主程式中delay太長了

13樓:匿名使用者

while(1) 這前面的while(1)根本不會退出,也就是不會執行下面的if(key1 == 0)的語句了,...

更多關於c51微控制器

很簡的51微控制器c語言流水燈程式

14樓:匿名使用者

字元型char 預設為signed型別

所以你的延時子程式裡j迴圈條件一直滿足

程式呼叫第一個delay(100)時陷入死迴圈此時led=11111110 所以只有第一個燈一直亮就會這種解釋了

你確認只把初值

led = 0xfe改成~led = 0?

15樓:匿名使用者

#include

#define led p2

void delay();

void main() }

} void delay() }

} }試試這個程式

我不知道你的編譯器是怎樣定義char的,如果char定義為有符號變數的話,char就是-127至+128大小的有符號的變數,你的for(j=0;j<250;j++)裡面j<250,這個條件就會永遠滿足,所以就死迴圈了

16樓:匿名使用者

#include

#include

#define led p2

void delay(char i);

void main() }

void delay(char i)

17樓:匿名使用者

//---------------------------------------

//標頭檔案

#include

//---------------------------------------

//---------------------------------------

//資料型別替代宣告

#define u8 unsigned char

#define u16 unsigned int

//---------------------------------------

u8 led[8]=;

//---------------------------------------

//延時子函式 延時時間為n毫秒

void delay_ms(u8 n)}}

//---------------------------------------

//---------------------------------------

//流水一次子函式

void liushui(void)

}//---------------------------------------

//---------------------------------------

//主函式

void main(void)

} //---------------------------------------

18樓:學而_無止境

void delay(char i)

19樓:

unsigned char 0~255

char -127~128

電路接法?

你是置低亮 還是拉高亮啊~~~

c51微控制器程式求助

sec cnt equ 30h sec 0x equ 31h org 0000h sjmp mian org 000bh sjmp int t0 mian mov sec cnt,20 mov sec 0x,00h mov tmod,01h mov th0,65536 50000 256mov tl...

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

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

51微控制器16個燈流水迴圈,C語言

花樣流水燈的玩法,一個51微控制器8位埠輪流輸出16顆燈珠,微控制器十六位led流水燈控制用c語言怎麼程式設計 15 微控制器從小白開始系列 七 第一個c語言程式來控制led燈。你也是計算機應用技術班的嗎?不會做呢 看不到線路圖,誰能幫你啊!51微控制器中如何用組合語言編寫流水燈 org 0100h...