4.1 編程的步驟、方法和技巧4.1.2 編程的方法和技巧 4.1.3 匯編語言程序的基本結構 4.2 匯編語言源程序的編輯和匯編 4.2.1 源程序編輯 4.2.2 源程序的匯編 4.2.3 偽指令 計算機在完成一項工作時,必須按順序執行各種操作。這些操作是程序設計人員用計算機所能接受的語言把解決問題的步驟事先描述好的,也就是事先編好計算機程序,再由計算機去執行。匯編語言程序設計,要求設計人員對單片機的硬件結構有較詳細的了解。編程時,對數據的存放、寄存器和工作單元的使用等要由設計者安排;而高語言程序設計時,這些工作是由計算機軟件完成的,程序設計人員不必考慮。 4.1.1 編程步驟 一、分析問題 首先,要對需要解決的問題進行分析,以求對問題有正確的理解。例如,解決問題的任務是什么?工作過程是什么?現有的條件,已知的數據,對運算的精確和速度方面的要求是什么?設計的硬件結構是否方便編程等等。 二、確定算法 算法就是如何將實際問題轉化成程序模塊來處理。 解決一個問題,常常有幾種可選擇的方法。從數學角度來描述,可能有幾種不同的算法。在編制程序以前,先要對不同的算法進行分析、比較,找出最適宜的算法。 ? 三、畫程序流程圖 程序流程圖是使用各種圖形、符號、有向線段等來說明程序設計過程的一種直觀的表示,常采用以下圖形及符號:橢圓框( )或桶行框( )表示程序的開始或結束。 矩形框( )表示要進行的工作。 菱形框( )表示要判斷的事情,菱形框內的表達式表示要判斷的內容。 圓圈( )表示連接點。 指向線(→)表示程序的流向。 流程圖步驟分得越細致,編寫程序時也就越方便。
上傳時間: 2013-10-10
上傳用戶:18888888888
C51 中的關鍵字關鍵字 用途 說明auto 存儲種類說明 用以說明局部變量,缺省值為此break 程序語句 退出最內層循環case 程序語句 Switch 語句中的選擇項char 數據類型說明 單字節整型數或字符型數據const 存儲類型說明 在程序執行過程中不可更改的常量值continue 程序語句 轉向下一次循環default 程序語句 Switch 語句中的失敗選擇項do 程序語句 構成do..while 循環結構double 數據類型說明 雙精度浮點數else 程序語句 構成if..else 選擇結構enum 數據類型說明 枚舉extern 存儲種類說明 在其他程序模塊中說明了的全局變量flost 數據類型說明 單精度浮點數for 程序語句 構成for 循環結構goto 程序語句 構成goto 轉移結構if 程序語句 構成if..else 選擇結構int 數據類型說明 基本整型數long 數據類型說明 長整型數register 存儲種類說明 使用CPU 內部寄存的變量return 程序語句 函數返回short 數據類型說明 短整型數signed 數據類型說明 有符號數,二進制數據的最高位為符號位sizeof 運算符 計算表達式或數據類型的字節數static 存儲種類說明 靜態變量struct 數據類型說明 結構類型數據swicth 程序語句 構成switch 選擇結構typedef 數據類型說明 重新進行數據類型定義union 數據類型說明 聯合類型數據unsigned 數據類型說明 無符號數數據void 數據類型說明 無類型數據volatile 數據類型說明 該變量在程序執行中可被隱含地改變while 程序語句 構成while 和do..while 循環結構ANSIC 標準關鍵字關鍵字 用途 說明bit 位標量聲明 聲明一個位標量或位類型的函數sbit 位標量聲明 聲明一個可位尋址變量
標簽: C51
上傳時間: 2013-10-08
上傳用戶:waves_0801
基于MCS-51單片機的嵌入式系統設計 隨著計算機的發展,計算機已廣泛應用于各行各業。而且,今后這些應用必將更加深入,更加普遍。在以往人們常根據計算機的性能和規模將它們分為微型、小型、中型、大型及巨型計算機,這種分類方法沿用至今。
上傳時間: 2014-12-27
上傳用戶:shinesyh
EDA9060開關量I/O 模塊在電氣控制柜中的典型應用—— EDA9060結合交流接觸器實現遠程控制EDA9060開關量I/O模塊是山東力創科技自主研發的一款分布式DI/DO工控模塊,主要功能特點:◎4路開關量輸入,4路繼電器輸出。繼電器兩組常開2觸點,兩組常開常閉3觸點。輸出觸點容量為8A 125VAC(5A 250VAC5A30VDC),由于觸點容量較大,可以直接用在很多的常見電氣控制電路中。輸出有兩種方式,一種電平式,一種脈沖式,可以靈活配置?!驑藴实腞S485接口,方便組網,結合GPRS DTU無線模塊可以實現無線遠程控制功能?!蜢`活的協議,兼容研華協議,支持標準MODBUS RTU協議,方便上位機的系統組建。EDA9060在電氣控制柜中有著廣泛的應用,通過增加EDA9060遠程控制線路,改變了原來必須依靠人工到現場啟停電氣線路的狀況,實現無人值守,節省資源。線路改造主要通過EDA9060的繼電器輸出控制交流接觸器,從而實現遠程控制現場用電設備(如常見的工業泵)的啟停。同時增加一個轉換開關,將手動控制線路和EDA9060遠程控制線路隔離開,以保證現場操作優先的要求,同時增強操作的可靠性。下面以交流接觸器控制線路在220V電壓等級以內的常見控制電路為例,簡要說明其控制過程,線路容量大的情況只需要通過增加合適容量的中間繼電器,擴大EDA9060的觸點容量即可解決,示意圖:
上傳時間: 2013-11-15
上傳用戶:robter
單片機在檢測和控制系統中得到廣泛的應用,溫、濕度則是系統常需要測量、控制和保持的量。文中介紹了一種基于ATA9C51 的單片機的溫度和濕度檢測與控制的方案,針對被測對象的溫度與濕度在不同變化范圍需要不同的PID 參數的特點,根據檢測溫度和濕度自動選擇合適的一組PID 參數進行控制的方案,整個設計簡明、清晰。
上傳時間: 2013-10-30
上傳用戶:wxnumen
這份SCN2681 / SCN68681和SCC2691數據通信應用規格書包含了一些用戶最常提出的問題的解答,本文共分三個主要部分:三個器件共有的功能;SCN2681 / SCN68681特有的功能;以及使用樂器數字接口(MIDI)的SCC2691的典型應用。
上傳時間: 2013-10-13
上傳用戶:朗朗乾坤
PHILIPS 的P89LPC900 系列FLASH 單片機部分型號提供了8 位精度的AD 轉換器,為許多控制系統帶來方便,諸如溫度控制、運動控制等,在MCU 發出控制指令后,常常需要將執行機構的情況反饋給MCU,從而構成一個閉環系統,達到精細控制的目的。這一檢測過程一般由各種傳感器完成,在某些對成本有高要求的場合,為了控制成本,也常使用一些簡單的分立元件替代數字傳感器,通常送到MCU 接口的都是一些經過處理的電壓信號,內帶ADC 的芯片能夠簡化設計,并使成本進一步降低。一般來說,8 位的AD 精度已經足以應對,但是在一些對精度要求比較高的場合,可能會需要10 位或者更高精度,細心的用戶通過仔細研究P89LPC900 單片機的特點,發現P89LPC900 系列單片機ADC 的特點非常適合進行ADC 過采樣,本文正是結合P89LPC900 的特點,介紹該單片機在高精度模數轉換場合的應用,以及使用過采樣技術需要滿足的條件和需注意事項。使這種低成本高精度的AD技術得以應用。
上傳時間: 2013-10-11
上傳用戶:gokk
ULINK仿真器用戶使用手冊:1、ULINK 仿真器帶3 個LED 燈指示:綠燈為電源指示燈,只要USB 和電腦正確連接,該指示燈常亮;黃燈為通訊燈,紅燈為運行燈。2、帶一個USB 接口。3、帶3 個JTAG 口:JTAG14 為ST 的JTAG 接口;JTAG16 為OCDS 的接口;JTAG20 為ARM 的JTAG 接口。
上傳時間: 2014-05-07
上傳用戶:sjy1991
本文列舉了單片機在熱處理爐中的一個實際應用,并對設計的WDY-1 溫控儀的組成及主要電路的作用進行了詳細的介紹。關鍵詞:單片機;控制;溫度。單片微型計算機是隨著超大規模集成電路技術的發展而誕生的,由于它具有體積小、功能強、性價比高等特點,所以廣泛應用于電子儀表、家用電器、節能裝置、軍事裝置、機器人、工業控制等諸多領域,使產品小型化、智能化,既提高了產品的功能和質量,又降低了成本,簡化了設計。本文主要介紹單片機在溫度控制中的應用。東風汽車公司變速箱廠熱工科無罐爐,主要用于變速箱齒輪、軸類零件的滲碳熱處理工序。原來用XWB 型自動平衡記錄儀控制溫度,二位式控溫方式,使得具有大慣量性的無罐爐溫度波動大,誤差達±10℃左右。并且儀表使用環境教惡劣,油煙、灰塵常使儀表的機械傳動部分卡死,不但維修工作量大,而且產品質量不易保證。隨著國民經濟的發展,汽車工業不斷壯大,產品市場競爭激烈,優勝劣汰。由此,我們經過認真的調研和設計,尋求了一種更好的控溫方法,亦即本文介紹的WDY-1 溫控儀取代XWB 型自動平衡記錄儀。
上傳時間: 2013-10-13
上傳用戶:panpanpan
51單片機動態LED顯示電路編程實例:上一節我們講述了單只LED與單片機的接口電路及編程實例,目的在于讓初學者了解LED在單片機中的應用原理,單只LED顯示在實際應用中并無多大用途,一般都是多位的LED顯示。現在我們作進一步學習,我們要講解的是8位LED的顯示原理及實際的編程方法。這里我們沒有采用多I/O口的8051系列單片機,而是采用了完全兼容C51指令系統的質優價廉的AT89C2051單片機,它的軟件編程與C51完全一致。 在多數的應用場合中,我們并不希望使用多I/O端口的單片機,原則上是使用盡量少引腳的器件。在沒有富余端口的情況下,怎樣通過擴展電路達到預期的目的呢?我們希望通過此例使設計人員在實際應用中了解一點電路擴展的原理,對實際的應用有所幫助。 此電路中,74LS273用于驅動LED的8位段碼,8位LED相應的"a"—"g"段連在一起,它們的公共端分別連至由74LS138(點擊芯片型號可瀏覽其詳細的技術手冊)譯碼選通后經74LS04反相驅動的輸出端。這樣當選通某一位LED時,相應的地址線(74LS04輸出端)輸出的是高電平,所以我們的LED選用共陽LED數碼管。 動態掃描的頻率有一定的要求,頻率太低,LED將出現閃爍現象。如頻率太高,由于每個LED點亮的時間太短,LED的亮度太低,肉眼無法看清,所以一般均取幾個ms左右為宜,這就要求在編寫程序時,選通某一位LED使其點亮并保持一定的時間,程序上常采用的是調用延時子程序。在C51指令中,延時子程序是相當簡單的,并且延時時間也很容易更改,可參見程序清單中的DELAY延時子程序。 為簡單起見,我們只是編寫了8位LED同步顯示"00000000"—"11111111"直到"99999999"數字,并且反復循環。程序很簡單,流程圖略去。
上傳時間: 2013-11-18
上傳用戶:皇族傳媒