找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3373|回復(fù): 20
收起左側(cè)

關(guān)于mcu的LED燈驅(qū)動(dòng)程序 求各位大佬解釋一下

  [復(fù)制鏈接]
ID:399963 發(fā)表于 2018-9-19 13:52 | 顯示全部樓層 |閱讀模式
圖一的程序?yàn)槭裁碙ED燈常亮,而圖二的程序LED燈閃爍,兩者有什么區(qū)別
1.png
2.png
回復(fù)

使用道具 舉報(bào)

ID:97554 發(fā)表于 2018-9-19 14:25 | 顯示全部樓層
閃爍是因?yàn)檠訒r(shí),第一圖的延時(shí)子程序不對(duì),沒有延時(shí)。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:342822 發(fā)表于 2018-9-19 15:39 | 顯示全部樓層
第一個(gè)無延時(shí)~第二個(gè)有延時(shí)。
回復(fù)

使用道具 舉報(bào)

ID:388197 發(fā)表于 2018-9-19 15:57 | 顯示全部樓層
圖一的DELAY里面是空的,DELAY沒有起作用.LED在高速的開關(guān),其實(shí)LED也是閃的,只不過頻率高眼睛看不到而已.

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:38792 發(fā)表于 2018-9-19 16:09 | 顯示全部樓層
第一個(gè)的delay沒有實(shí)現(xiàn)的函數(shù)體。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:399921 發(fā)表于 2018-9-19 17:07 | 顯示全部樓層
第一個(gè)根本沒有寫任何delay函數(shù)呀

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:256002 發(fā)表于 2018-9-19 17:17 | 顯示全部樓層
贊同5樓說法
回復(fù)

使用道具 舉報(bào)

ID:383749 發(fā)表于 2018-9-19 17:59 | 顯示全部樓層
第一個(gè)的delay沒有具體的執(zhí)行指令,第二個(gè)就有

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:386381 發(fā)表于 2018-9-20 00:25 來自觸屏版 | 顯示全部樓層
你只聲明了延時(shí)函數(shù),并沒有寫延時(shí)子程序呀,所以調(diào)用無效。
回復(fù)

使用道具 舉報(bào)

ID:387733 發(fā)表于 2018-9-20 07:51 | 顯示全部樓層
第一個(gè)延時(shí)函數(shù)只有申明,沒有實(shí)體,編譯時(shí)就會(huì)報(bào)警,延時(shí)函數(shù)無法定位,所以鏈接以后該地址仍為0000,這樣主程序執(zhí)行第一條命令LED=0以后,又跳回0000重新開始,于是反復(fù)執(zhí)行第一條指令。

C:0x0000    020017   LJMP     STARTUP1(C:0017)
     4:  void main(void)
     5:  {
     6:          while(1)
     7:          {
     8:                  led=0;
C:0x0003    C2A1     CLR      led(0xA0.1)
     9:                 delay(20000)
C:0x0005    7F20     MOV      R7,#0x20
C:0x0007    7E4E     MOV      R6,#0x4E
C:0x0009    120000   LCALL    C_STARTUP(C:0000)

第二個(gè)圖的程序也不能通過編譯,因?yàn)檠訒r(shí)函數(shù)頭后面多了個(gè)“ ;”,變成了函數(shù)申明

void delay(unsigned int i);
{
        unsigned int x;
        for(x=0;x<i;x++);
}
回復(fù)

使用道具 舉報(bào)

ID:372001 發(fā)表于 2018-9-20 08:06 | 顯示全部樓層
圖一的延時(shí)沒有定義一個(gè)函數(shù),你調(diào)用也是沒有的。圖二你在主程序前定義了延時(shí)函數(shù)。
回復(fù)

使用道具 舉報(bào)

ID:354282 發(fā)表于 2018-9-20 08:48 | 顯示全部樓層
第一張是錯(cuò)的,沒有延時(shí),而且,開始你給的是低電平,它亮可能不是你程序使它亮的。它亮可能相當(dāng)于指示的意思。
回復(fù)

使用道具 舉報(bào)

ID:354282 發(fā)表于 2018-9-20 08:59 | 顯示全部樓層
第一個(gè)沒延時(shí),你把第二個(gè)Delay(20000)改成Delay(20)或更小,會(huì)出現(xiàn)“常亮”(其實(shí)在閃)效果,事實(shí)上只要有delay延時(shí)執(zhí)行,LED都在閃爍,只是如果延時(shí)時(shí)間太短時(shí),由于人視覺暫留原因,看不出來閃爍現(xiàn)象。

順便@論壇管理員  能不能搞一個(gè),評(píng)論2分鐘內(nèi)可以撤銷的功能???
回復(fù)

使用道具 舉報(bào)

ID:400374 發(fā)表于 2018-9-20 09:05 | 顯示全部樓層
第一個(gè)delay函數(shù)寫的不對(duì),也起不到延時(shí)的作用,沒有運(yùn)行程序。
回復(fù)

使用道具 舉報(bào)

ID:400401 發(fā)表于 2018-9-20 09:48 | 顯示全部樓層
圖一的DELAY里面是空的,DELAY就只延時(shí)了一個(gè)指令周期的時(shí)間.LED在高速的開關(guān)
回復(fù)

使用道具 舉報(bào)

ID:398663 發(fā)表于 2018-9-20 10:05 | 顯示全部樓層
延時(shí)的本質(zhì)是讓程序處于一種什么都不做的狀態(tài)(cpu在工作),相當(dāng)于空耗一段時(shí)間
回復(fù)

使用道具 舉報(bào)

ID:400421 發(fā)表于 2018-9-20 10:15 | 顯示全部樓層
第一個(gè)沒執(zhí)行 ,第二個(gè)執(zhí)行了,可是設(shè)個(gè)斷點(diǎn)自行驗(yàn)證的
回復(fù)

使用道具 舉報(bào)

ID:400416 發(fā)表于 2018-9-20 11:19 | 顯示全部樓層
第一個(gè)延時(shí)有問題
回復(fù)

使用道具 舉報(bào)

ID:399963 發(fā)表于 2018-9-20 15:52 | 顯示全部樓層
謝謝各位的解釋
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表