久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機開中斷問題,把EA=1放在主程序中?

[復(fù)制鏈接]
ID:100982 發(fā)表于 2021-10-9 09:52 | 顯示全部樓層 |閱讀模式
看別人寫的程序,總是喜歡把EA = 1放在主程序中,我個人理解這樣的話是開多個中斷,防止忘記,同時也省的重復(fù)打開。是不是這樣啊?
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-10-9 13:06 | 顯示全部樓層
只要有中斷,EA總要開的,就算不是放主程序,也是放在只調(diào)用一次的子函數(shù)里,所以……,有什么區(qū)別?而只調(diào)用一次的子函數(shù),除了代碼看起來好看點(所謂的可讀性高一點),在實際應(yīng)用上沒有任何好處。

最后,反復(fù) EA = 1; 除了浪費一點資源,對程序不會有任何影響,所以不必刻意回避多次EA = 1;的情況發(fā)生。
回復(fù)

使用道具 舉報

ID:100982 發(fā)表于 2021-10-9 13:09 | 顯示全部樓層
188610329 發(fā)表于 2021-10-9 13:06
只要有中斷,EA總要開的,就算不是放主程序,也是放在只調(diào)用一次的子函數(shù)里,所以……,有什么區(qū)別?而只調(diào) ...

這樣啊,可能只是為了程序看上去簡潔邏輯性更強吧
回復(fù)

使用道具 舉報

ID:722595 發(fā)表于 2021-10-9 13:25 | 顯示全部樓層
EA只是個總開關(guān),既然要用到中斷就先把總開關(guān)打開,后面看需求再打開對應(yīng)定時器中斷的開關(guān),好像沒什么問題吧
回復(fù)

使用道具 舉報

ID:960157 發(fā)表于 2021-10-9 13:27 | 顯示全部樓層
EA放在主程序是正路,匯編,C我都是這樣做的。
回復(fù)

使用道具 舉報

ID:57657 發(fā)表于 2021-10-9 13:31 | 顯示全部樓層
不管是什么定時器、外部、串口等中斷,必須打開EA才可以觸發(fā)。
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-10-9 13:59 | 顯示全部樓層
wifen 發(fā)表于 2021-10-9 13:09
這樣啊,可能只是為了程序看上去簡潔邏輯性更強吧


只是看上去,真正為了程序簡潔的話,我一般連EA = 1都不會用,直接是IE = ??
看有些人 一個寄存器 反復(fù)的 &=   |= 的,看得腦殼疼,關(guān)鍵是,一個寄存器,在這個初始化子函數(shù)里操作一下,那個初始化子函數(shù)操作一下,看上去好像邏輯很清晰,每個功能的初始化分門別類,但是,宏觀上看起來就會很累,所以我一般主程序里所有寄存器統(tǒng)一設(shè)置。

如下:
Maincode.png


別人怎么看,我不知道,至少事隔多年,回頭自己看自己的程序,While(1) 前面的一掃,基本知道自己的程序要用哪些功能,是不是方便移植到另一款單片機,一目了然。
Maincode.png
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2021-10-9 14:01 | 顯示全部樓層
你家有用電器若干,但總閘只有一個。
EA是CPU中,中斷的總閘。上電時,這個總閘是打開的,未閉合。
明白這個道理,就應(yīng)知道在何合閘拉閘比較合適了。
例如:
白天,只有電飯鍋在用電,飯好了,切斷電飯鍋電源就可以了,總不至于要拉總閘吧。
一張燈壞了,修燈,為了安全,把總閘拉了,是合理的吧。當(dāng)然只切斷燈的電路,也可以。不過萬一……,,這時就是安全第一了。
所以:根據(jù)需要,只要你認為是合理的,放哪里無所謂。
一般初化的最末一件事,就是開中斷總閘。
如果某段程序?qū)r序要求很高,不宜被中斷干擾打斷時,就切斷EA,程序結(jié)束后恢復(fù)EA。當(dāng)然這樣做是有風(fēng)險的。
回復(fù)

使用道具 舉報

ID:790408 發(fā)表于 2021-10-9 14:11 | 顯示全部樓層
只是個人寫代碼的習(xí)慣吧
回復(fù)

使用道具 舉報

ID:100982 發(fā)表于 2021-10-9 16:22 | 顯示全部樓層
188610329 發(fā)表于 2021-10-9 13:59
只是看上去,真正為了程序簡潔的話,我一般連EA = 1都不會用,直接是IE = ??
看有些人 一個寄存器 反 ...

這個不錯,很清晰
回復(fù)

使用道具 舉報

ID:23640 發(fā)表于 2021-10-9 16:44 | 顯示全部樓層
188610329 發(fā)表于 2021-10-9 13:59
只是看上去,真正為了程序簡潔的話,我一般連EA = 1都不會用,直接是IE = ??
看有些人 一個寄存器 反 ...

獨立成模塊控制的好處是方便維護和下一任程序員修改,當(dāng)然如果你的程序只用這一次就不用考慮模塊化了,分多個子函數(shù)是要浪費點時間的。
回復(fù)

使用道具 舉報

ID:57657 發(fā)表于 2021-10-9 21:00 | 顯示全部樓層
188610329 發(fā)表于 2021-10-9 13:59
只是看上去,真正為了程序簡潔的話,我一般連EA = 1都不會用,直接是IE = ??
看有些人 一個寄存器 反 ...

IE是字節(jié)寄存器,可以位尋址,
EA是IE寄存器里的一個位寄存器。
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-10-9 21:18 | 顯示全部樓層
npn 發(fā)表于 2021-10-9 21:00
IE是字節(jié)寄存器,可以位尋址,
EA是IE寄存器里的一個位寄存器。

就簡潔而言……

EX0 = 1;
EX1 = 1;
ET0 = 1;
ET1 = 1;
EA  = 1;
遠不如,
IE = 0x8f;  來的簡潔。
而要做到簡潔加直觀的話……
IE = B_1000_1111;   就能達到要求了。
回復(fù)

使用道具 舉報

ID:401564 發(fā)表于 2021-10-9 23:24 | 顯示全部樓層
EA是總開關(guān),肯定是要放在一個顯眼的地方呀
你要是放在別的函數(shù)中,要是剛開始寫代碼的時候,忘記打開了,到時候中斷問是無法進入,你都不知道怎么回事
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区 | 欧美亚洲国产日韩 | 久久激情视频 | 欧美一区在线视频 | 国产成人免费观看 | 国产japanhdxxxx麻豆 | 草久久免费视频 | 欧美一二三| 国产精品一级 | 欧美最猛黑人 | 国产一区二区三区免费视频 | 久久久.com| 日日噜噜噜夜夜爽爽狠狠视频97 | 亚洲有码转帖 | 国产精品一区二区三区久久 | 偷拍自拍第一页 | 欧美高清一级片 | 精品久久99 | 免费视频一区二区 | 涩涩视频在线看 | 午夜精品一区二区三区在线观看 | 中文字幕人成乱码在线观看 | 国产一区二区三区在线 | 久久国产精品72免费观看 | 综合久久网| 欧产日产国产精品国产 | 五月婷婷在线视频 | 国产一区二区精品在线 | 亚洲一区二区三区四区视频 | 成人二区 | 天天爽天天干 | 成人免费视频观看视频 | 欧美影院 | 成人不卡| 亚洲欧美在线观看 | 日韩精品免费看 | 欧美精品在线播放 | 亚洲国产精品网站 | 午夜免费| 久久精品国产一区二区三区不卡 | 中文字幕啪啪 |