999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Keil C51通用精確延時程序設計

2020-04-10 06:42:18余巧書
科技風 2020年10期
關鍵詞:單片機程序優化

余巧書

摘 要:本文從實際應用出發,探討一種通用精確延時程序設計方法,并給出使用的詳細步驟,以便開發者能很好的理解和掌握。

關鍵詞:Keil C51;精確延時;C語言與匯編語言混合編程

單片機因具有體積小、功能強、成本低以及便于實現分布式控制而有非常廣泛的應用領域。單片機開發者在編制各種應用程序時經常會遇到實現精確延時的問題。用匯編語言編制程序時,這種問題比較容易解決,而目前開發單片機應用系統的主流工具為C語言。相對匯編語言來說,C語言有很多優點,但缺點就是實時性沒有保證,因而在實時性要求高的場合,還需要匯編語言和C語言的聯合應用。

使用C語言編寫單片機程序時,生成的機器代碼、代碼大小和效率,除了與C語言代碼本身有關外,還與編譯器有非常重要的關系。本文以Keil C51為例,探討如何編制通用精確的延時程序。為獲得通用精確的延時程序,可通過編譯器合理配置和優化代碼編寫兩方面來達到目的。

一、模塊化編程

采用模塊化編程,將常用延時函數程序封裝為獨立模塊。項目中需要時僅需調用延時程序頭文件并將C語言源文件添加到項目中即可,便于修改和維護。同時模塊化也有利于在配置編譯器時有針對性對該模塊進行相應配置。

二、合理配置編譯器

對于Keil C51編譯器來說,可以從“存儲器類型及存儲器模型、代碼優化”兩方面來配置。

(一)存儲器類型

Keil C51編譯器提供對所有8051內存區域的訪問。變量可以顯式地分配給特定的內存空間(通過在聲明中包含存儲器類型說明符)或隱式地分配(基于存儲器模型)。

(二)存儲器模型

存儲器模型用于確定函數參數、自動變量和不包含顯式存儲器類型的聲明的默認存儲器類型。Keil C51編譯器提供三種存儲器模型。

Keil C51編譯器在CPU寄存器中最多可傳遞三個函數自變量。參數的傳遞可通過“REGPARMS”和“NOREGPARMS”控制命令進行控制。如果沒有寄存器可用于參數傳遞或包含的參數太多,使用固定存儲器位置傳遞超出部分的參數。

(三)代碼優化

Keil C51編譯器提供了多層次、多種類的優化配置,高級別優化包含低級別優化。優化配置作用范圍有項目級(全局)、文件級(私有)和函數級(私有)。優化設置包括優化級別(用數字表示,數字越大級別越高)和優化偏好(關鍵字為“SIZE”和“SPEED”)。

項目級優化可在項目選項的“C51”標簽中進行配置,具有全局性,若項目中的文件或函數沒有進行單獨優化配置,則繼承項目級優化。

文件級優化可在該文件選項的“C51”標簽中進行配置,配置后不受項目級優化的影響;若選擇“Default”表示文件繼承項目級優化。另外,也可以在文件的頭部使用“#pragma OPTIMIZE(9,SPEED)”指定文件級優化。

函數級優化是在函數前使用“#pragma OT(9,SPEED)”指定函數的優化。

三、優化代碼編寫

對于短暫延時(通常10微秒以下),可以直接調用Keil C51頭文件“Intrins.h”,使用“_nop_();”函數獲得一個機器周期的延時時間。

為保證延時的精確性,代碼采用匯編語言編寫,這樣每一條指令都有固定的機器周期。為了使延時程序具有一定的通用性和使用方便,采用C語言函數封裝。在Keil C51中通過預處理指令“#pragma asm”和“#pragma endasm”可以嵌套匯編語言語句。也可以采用“__asm”進行匯編的嵌入。為計算延時時間方便,函數參數數據類型選擇“unsigned char”。

四、程序編寫范例

五、仿真及實踐檢驗

使用Proteus進行仿真,編寫測試程序如下:

對測試程序進行反匯編,從匯編代碼中可以看出,測試程序IO端口電平的變化時間比延時時間多了3個機器周期(測試程序本身引入的時間),即一個脈沖周期多了6個機器周期時間。

使用高精度示波器測量脈沖周期為206微秒,延時時間實際為(206微秒-6微秒),誤差為0,符合設計預期目的。

六、歸納總結

保障延時程序延時精確性和程序的通用性的關鍵:

(1)采用模塊化編程并指定模塊私有優化級,不受編譯器全局優化級影響;

(2)指定變量、函數存儲模式,避免因編譯器編譯模式影響;

(3)延時程序核心采用匯編語言編寫,每條指令有確定的指令周期;

(4)為保證程序通用、方便性,采用C語言函數封裝。

猜你喜歡
單片機程序優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
主站蜘蛛池模板: 丁香婷婷综合激情| 最新国产高清在线| 女人18毛片水真多国产| 亚洲人成成无码网WWW| 亚洲一区二区日韩欧美gif| 99久久精品无码专区免费| 国产精品久久久久久久久久久久| 凹凸精品免费精品视频| 久久婷婷人人澡人人爱91| 成人va亚洲va欧美天堂| 青草视频网站在线观看| 区国产精品搜索视频| 国产免费人成视频网| 国产精品亚洲一区二区三区z| 丰满人妻一区二区三区视频| 丁香婷婷综合激情| 久久激情影院| 国产后式a一视频| 国产黄色视频综合| 国模沟沟一区二区三区| 色婷婷综合在线| 日韩欧美中文字幕在线精品| 久久免费观看视频| 国产中文在线亚洲精品官网| 欧美黄网站免费观看| 成人综合在线观看| 又粗又硬又大又爽免费视频播放| 99精品视频九九精品| 狠狠亚洲婷婷综合色香| 日韩免费视频播播| 青青久视频| 国产精品综合色区在线观看| 国产又爽又黄无遮挡免费观看 | 亚洲一区二区成人| 999国产精品| 日本精品一在线观看视频| 国产哺乳奶水91在线播放| 久久精品人妻中文系列| 97超爽成人免费视频在线播放| 亚洲国产欧美自拍| 成人福利视频网| 国产精品私拍99pans大尺度| 中文字幕免费播放| 日a本亚洲中文在线观看| 伊人福利视频| 在线播放精品一区二区啪视频| 欧美日韩一区二区三区在线视频| 色偷偷男人的天堂亚洲av| 成年女人18毛片毛片免费| 亚洲av无码久久无遮挡| 少妇精品网站| 亚洲色图欧美在线| 在线色国产| 日本成人一区| 国产亚洲欧美在线专区| 日韩A∨精品日韩精品无码| 欧美国产在线看| 蜜桃视频一区二区三区| 亚洲第一成网站| 日本www在线视频| 国产区免费| 亚洲中文精品人人永久免费| 久久精品国产999大香线焦| 亚洲αv毛片| 99久久精品美女高潮喷水| 久久婷婷色综合老司机| 亚洲精品天堂自在久久77| 国产成a人片在线播放| 毛片视频网址| 亚洲性网站| 亚洲免费毛片| 成人国产小视频| 国产免费网址| 98精品全国免费观看视频| 91在线视频福利| 黄色网在线免费观看| 国产精品美女网站| 久久99蜜桃精品久久久久小说| 欧美一区精品| 日韩二区三区无| 成人福利视频网| 4虎影视国产在线观看精品|