Ⅰ c語言與匯編嵌入式程序的問題
應該是函數int sum(int a,int b)不能正常返回
因為你在它裡面用到寄存器,但你在用之前沒壓棧
Ⅱ C語言與嵌入式
一個電子電器設備的操作運行,需要大量的人工接線或操作,這樣就需要花費大量的時間和精力,在現實的意義上是行不通的,為了解決這個問題,就為這個電子電器設備加入一個友好的簡單的操作平台,我們就操作這個友好熟悉的平台,讓它處理復雜繁瑣的數據處理或將人們的所需要的功能翻譯成實際的操作。
而這種為電子電器設備加入這個操作平台的技術就是嵌入式。比如,一個空調,有風速多個等級,有換氣,有溫度調整,有定時,有擺風這么多功能,當然你可以准備數10個開關來控制,但是這樣即不方便,也花費時間,不切實際,但是如果為它架一個操作平台,直觀簡單,這樣你就可以按照遙控器的鍵盤和顯示指導進行方便的控制,這就是一個簡單的例子,當然這個屬於簡單的,像手機,媒體播放器,那才是復雜,特別是智能手機更是如此,在數據處理上是數以億計的。
Ⅲ 邵陽學院c語言程序設計實習報告怎麼寫
此專業在就業方面,對性別沒有要求的,希望下面的對你有幫助!
電子信息工程
學科:工學
門類:電氣信息類
專業名稱:電子信息工程
業務培養目標:本專業培養具備電子技術和信息系統的基礎知識,能從事各類電子設備和信息系統的研究、設計、製造、應用和開發的高等工程技術人才。
業務培養要求:本專業是一個電子和信息工程方面的專業。本專業學生主要學習信號的獲取與處理、電廠設備信息系統等方面的專業知識,受到電子與信息工程實踐的基本訓練,具備設計、開發、應用和集成電子設備和信息系統的能力。
畢業生應獲得以下幾個方面的知識和能力:
1.能夠較系統地掌握本專業領域寬廣的技術基礎理論知識,適應電子和信息工程方面廣泛的工作范圍;
2.掌握電子電路的基本理論和實驗技術,具備分析和設計電子設備的基本能力;
3.掌握信息獲取、處理的基本理論和應用的一般方法,具有設計、集成、應用及計算機模擬信息系統的基本能力;
4.了解信息產業的基本方針、政策和法規,了解企業管理的基本知識;
5.了解電子設備和信息系統的理論前沿,具有研究、開發新系統、新技術的初步能力;
6.掌握文獻檢索、資料查詢的基本方法,具有一定的科學研究和實際工作能力。
主幹學科:電子科學與技術、信息與通信工程、計算機科學與技術。
主要課程:電路理論系列課程、計算機技術系列課程、信息理論與編碼、信號與系統、數字信號處理、電磁場理論、自動控制原理、感測技術等。
主要實踐性教學環節:包括課程實驗、計算機上機訓練、課程設計、生產實習、畢業設計等。一般要求實踐教學環節不少於30周。
修業年限:四年
授予學位:工學學士
1.知識理論系統性較強。學習本課程需要有一定的基礎理論、知識作鋪墊且又是學習有關後續專業課程的基礎。
2.基礎理論比較成熟。雖然電子技術發展很快,新的器件、電路日新月異,但其基本理論已經形成了相對穩定的體系。有限的學校教學不可能包羅萬象、面面俱到,要把學習重點放在學習、掌握基本概念、基本分析、設計方法上。
3.實踐應用綜合性較強。本課程是一門實踐性很強的技術基礎課,討論的許多電子電路都是實用電路,均可做成實際的裝置。
四、教學總體要求
1.正確理解以下基本概念和術語
直流通路與交流通路,正向偏置和反向偏置,靜態與動態,工作點,負載線,非線性失真,放大倍數,輸入電阻,輸出電阻,頻率特性,正反饋和負反饋,直流反饋和交流反饋,電壓反饋和電流反饋,串聯反饋和並聯反饋,開環與閉環,自激,零點漂移,差模與共模,共模抑制比,恆流源,互補對稱,輸出功率與效率,理想運放,虛短、虛地,雜訊與干擾等。 職業資格證書與技術等級證書 獲得省教育廳頒發的高等學校英語和計算機應用能力合格證書;獲得勞動與社會保障部頒發的中級電工證、電子CAD中級技能等級證書。 掌握的知識和能力 1.較系統地掌握本專業領域寬廣的技術基礎理論知識,適應電子和信息工程方面廣泛的工作范圍; 2.掌握電子電路的基本理論和實驗技術,具備分析和設計電子設備的基本能力; 3.掌握信息獲取、處理的基本理論和應用的一般方法,具有設計、集成、應用及計算機模擬信息系統的基本能力; 4.了解信息產業的基本方針、政策和法規,了解企業管理的基本知識; 5.了解電子設備和信息系統的理論前沿,具有研究、開發新系統、新技術的初步能力。 6.掌握文獻檢索、資料查詢的基本方法,具有一定的科學研究和實際工作能力。 相近專業
通信工程 就業去向 該專業畢業生具有寬領域工程技術適應性,就業面很廣,就業率高,畢業生實踐能力強,工作上手快,可以在電子信息類的相關企業中,從事電子產品的生產、經營與技術管理和開發工作。主要面向電子產品與設備的生產企業和經營單位,從事各種電子產品與設備的裝配、調試、檢測、應用及維修技術工作,還可以到一些企事業單位一些機電設備、通信設備及計算機控制等設備的安全運行及維護管理工作。 企業需求 由於信息時代的到來,據推測,在相當長的一段時間內,此類人才仍將供不應求。
專業簡介
電子信息工程是一門應用計算機等現代化技術進行電子信息控制和信息處理的學科,主要研究信息的獲取與處理,電子設備與信息系統的設計、開發、應用和集成。現在,電子信息工程已經涵蓋了社會的諸多方面,像電話交換局裡怎麼處理各種電話信號,手機是怎樣傳遞我們的聲音甚至圖像的,我們周圍的網路怎樣傳遞數據,甚至信息化時代軍隊的信息傳遞中如何保密等都要涉及電子信息工程的應用技術。我們可以通過一些基礎知識的學習認識這些東西,並能夠應用更先進的技術進行新產品的研究和 電子信息工程專業是集現代電子技術、信息技術、通信技術於一體的專業。
本專業培養掌握現代電子技術理論、通曉電子系統設計原理與設計方法,具有較強的計算機、外語和相應工程技術應用能力,面向電子技術、自動控制和智能控制、計算機與網路技術等電子、信息、通信領域的寬口徑、高素質、德智體全面發展的具有創新能力的高級工程技術人才開發。
電子信息工程專業主要是學習基本電路知識,並掌握用計算機等處理信息的方法。首先要有扎實的數學知識,對物理學的要求也很高,並且主要是電學方面;要學習許多電路知識、電子技術、信號與系統、計算機控制原理、通信原理等基本課程。學習電子信息工程自己還要動手設計、連接一些電路並結合計算機進行實驗,對動手操作和使用工具的要求也是比較高的。譬如自己連接感測器的電路,用計算機設置小的通信系統,還會參觀一些大公司的電子和信息處理設備,理解手機信號、有線電視是如何傳輸的等,並能有機會在老師指導下參與大的工程設計。學習電子信息工程,要喜歡鑽研思考,善於開動腦筋發現問題。
隨著社會信息化的深入,各行業大都需要電子信息工程專業人才,而且薪金很高。學生畢業後可以從事電子設備和信息系統的設計、應用開發以及技術管理等。比如,做電子工程師,設計開發一些電子、通信器件;做軟體工程師,設計開發與硬體相關的各種軟體;做項目主管,策劃一些大的系統,這對經驗、知識要求很高;還可以繼續進修成為教師,從事科研工作等。
專業背景與市場預測
該專業是前沿學科,現代社會的各個領域及人們日常生活等都與電子信息技術有著緊密的聯系。全國各地從事電子技術產品的生產、開發、銷售和應用的企事業單位很多.,隨著改革步伐的加快,這樣的企事業單位會越來越多。為促進市場經濟的發展,培養一大批具有大專層次學歷,能綜合運用所學知識和技能,適應現代電子技術發展的要求,從事企事業單位與本專業相關的產品及設備的生產、安裝調試、運行維護、銷售及售後服務、新產品技術開發等應用型技術人才和管理人才是社會發展和經濟建設的客觀需要,市場對該類人才的需求越來越大。為此電子信息工程專業的人才有著廣泛的就業前景。
培養目標
注重培養電子信息技術基礎知識與能力;具有電子產品的裝配、調試及設計的基本能力,具有一般電子設備的安裝、調試、維護與應用能力;具有對辦公自動化設備的安裝、調試、維修和維護管理能力;具有對通信設備、家用電子產品電路圖的閱讀分析及安裝、調試、維護能力;具有對機電設備進行智能控制的設計和組織能力;具有閱讀英語資料和計算機應用能力。
培養要求
本專業學生主要學習信號的獲取與處理、電子設備與信息系統等方面的基本理論和基本知識,受到電子與信息工程實踐(包括生產實習和室內實驗)的基本訓練,具備良好的科學素質,具備設計、開發、應用和集成電子設備和信息系統的基本能力,並具有較強的知識更新能力和廣泛的科學適應能力。
主要課程
高等數學、英語、電路分析、電子技術基礎、C語言、VB程序設計、電子CAD、高頻電子技術、電視技術、電子測量技術、通信技術、自動檢測技術、網路與辦公自動化技術、多媒體技術、單片機技術、電子系統設計工藝、電子設計自動化(EDA)技術、數字信號處理(DSP)技術等課程。
課程分類介紹:
①數學:
高等數學 ----(數學系的數學分析+空間解析幾何+常微分方程)講的主要是微積分,對學電路的人來說,微積分(一元、多元)、曲線曲面積分、級數、常微分方程在後續理論課中經常遇到。
概率統計 ---- 凡是跟通信、信號處理有關的課程都要用到概率論。
數學物理方法 ---- 有些學校研究生才學,有些學校分成復變函數(+積分變換)和數學物理方程(就是偏微分方程)。學習電磁場、微波的數學基礎。
還可能會開設隨機過程(需要概率作基礎)乃至泛函分析。
②理論:
電路原理 ---- 基礎的課程。
信號與系統 ---- 連續與離散信號的時域、頻域分析,很重要但也很難
數字信號處理 ---- 離散信號與系統的分析、信號的數字變換、數字濾波器之類。
基本上這兩門都需要大量的演算法和編程。
通信原理 ---- 通信的數學理論。
資訊理論 ---- 資訊理論的應用范圍很廣,但電子工程專業常把這門課講成編碼理論。
電磁場與電磁波 ---- 天書般的課程,基本上是物理系的電動力學的翻版,用數學去研究磁場(恆定電磁場、時變電磁場)。
③電路:
模擬電路 ---- 晶體管、運放、電源、A/D、D/A。
數字電路 ---- 門電路、觸發器、組合電路、時序電路、可編程器件,數字電子系統的基礎(包括計算機)。
高頻電路 ---- 無線電電路,放大、調制、解調、混頻,比模擬電路難
微波技術 ---- 處理方法跟前面幾種電路完全不同,需要電磁場理論作基礎。
④計算機:
微機原理 ---- 80x86硬體工作原理。
匯編語言 ---- 直接對應CPU指令的程序設計語言。
單片機 ---- CPU和控制電路做成一塊集成電路,各種電器中都少不了,一般講解51系列。
C c++語言 ----(現在只講c語言的學校可能不多了)寫系統程序用的語言,與硬體相關的開發經常用到。
軟體基礎 ----(計算機專業的數據結構+演算法+操作系統+資料庫原理+編譯方法+軟體工程)也可能是幾門課,講軟體的原理和怎麼寫軟體。
詳細課程介紹:
①c語言
c語言是國內外廣泛使用的計算機語言,是計算機應用人員應掌握的一種程序設計工具。
c語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移至性好,既具有高級語言的有點,有具有低級語言的許多特點。因此,c語言特別適合於編寫系統軟體。
c語言誕生後,許多原來用匯編語言編寫的軟體,現在可以用c語言編寫了。
初學是切忌過早的濫用c的某些容易引起錯誤的細節,如不適當的使用++和--的副作用。學習程序設計,一定要學活用活,不要死學不會用,要舉一反三,在以後的需要時能很快的掌握一種新語言。
②高等數學
高等數學是理、工科院校一門重要的基礎學科。作為一一門科學,高等數學有其固有的特點,這就是高度的抽象性、嚴密的邏輯性和廣泛的應用性。抽象性是數學最基本、最顯著的特點--有了高度抽象和統一,我們才能深入地揭示其本質規律,才能使之得到更廣泛的應用。嚴密的邏輯性是指在數學理論的歸納和整理中,無論是概念和表述,還是判斷和推理,都要運用邏輯的規則,遵循思維的規律。所以說,數學也是一種思想方法,學習數學的過程就是思維訓練的過程。人類社會的進步,與數學這門科學的廣泛應用是分不開的。尤其是到了現代,電子計算機的出現和普及使得數學的應用領域更加拓寬,現代數學正成為科技發展的強大動力,同時也廣泛和深入地滲透到了社會科學領域。因此,學好高等數學對我們來說相當重要。然而,很多學生對怎樣才能學好這門課程感到困惑。要想學好高等數學,至少要做到以下四點:
首先,理解概念。數學中有很多概念。概念反映的是事物的本質,弄清楚了它是如何定義的、有什麼性質,才能真正地理解一個概念。
其次,掌握定理。定理是一個正確的命題,分為條件和結論兩部分。對於定理除了要掌握它的條件和結論以外,還要搞清它的適用范圍,做到有的放矢。
第三,在弄懂例題的基礎上作適量的習題。要特別提醒學習者的是,課本上的例題都是很典型的,有助於理解概念和掌握定理,要注意不同例題的特點和解法法在理解例題的基礎上作適量的習題。作題時要善於總結---- 不僅總結方法,也要總結錯誤。這樣,作完之後才會有所收獲,才能舉一反三。
第四,理清脈絡。要對所學的知識有個整體的把握,及時總結知識體系,這樣不僅可以加深對知識的理解,還會對進一步的學習有所幫助。
③信號與系統
信號與系統是通信和電子信息類專業的核心基礎課,其中的概念和分析方法廣泛應用於通信、自動控制、信號與信息處理、電路與系統等領域。
本課程針對網路課程的特點,採用了圖、文、聲、像、動畫等多媒體技術,使內容生動活潑,易於理解。課程以網路技術為支持,以學生自學為主,結合教師答疑,學生討論等形式使該課程體現出交互性、開放性、自主性、協作性等特點。
本課程從概念上可以區分為信號分解和系統分析兩部分,但二者又是密切相關的,根據連續信號分解為不同的基本信號,對應推導出線性系統的分析方法分別為:時域分析、頻域 分析和復頻域分析;離散信號分解和系統分析也是類似的過程。
本課程採用先連續後離散的布局安排知識,可先集中精力學好連續信號與系統分析的內容,再通過類比理解離散信號與系統分析的概念。狀態分析方法也結合兩大塊給出,從而建立完整的信號與系統的概念。
本課程除了大綱要求的主要內容外,還給出了隨機信號通過線性系統分析,離散傅立葉變換、FFT等內容以擴展知識面。
④電路分析
電路分析是高等工科院校電類專業的一門非常重要的技術基礎課,該課程不僅為後續專業課的學習打基礎,而且對發展學生科學思維、培養學生分析問題、解決問題也具有十分重要的作用。本課程的主要內容有:電路的基本概念與基本定律、電阻電路的等效變換、線性電路的基本分析方法、基本定理、含有理想運放的電路分析、正弦交流電路的穩態分析、含有互感的電路、三相電路、周期性非正弦電流電路、雙口網路、一階電路的時域分析、二階電路的時域分析、拉普拉斯變換及其應用、狀態變數法、非線性電阻電路等。
⑤微機原理
微機原理的側重點是介紹指令系統和介面,它對於了解微機的硬體原理非常重要,如果需要利用微機進行控制、通信,則微機原理是必修的課程。因此,絕大多數專業都將微機原理列為主幹課程之一。
C語言被認為是介於高級語言與匯編之間的一種編程語言,也稱為中級語言,很多操作系統就是用C實現的,如Unix、Linux、minix等,很多底層的通信程序、驅動程序、加密程序等也都是用C編寫的,其重要原因就在於C語言非常接近匯編語言,換句話說,C語言離計算機的硬體很近,但同時C語言編程又要比匯編方便得多,故很多人喜歡C語言。
一般來說,學習微機原理並不需要C語言的基礎,而要真正學懂、學通C語言,微機原理是必須具備的基礎,如C中的指針操作,就需要對微機的存儲器的結構有所了解。
不幸的是,目前國內絕大多數高等學校都是先修C,再修微機原理,筆者認為這實在是誤人子弟,不利於高水平人才的培養。
另外,有些人認為,微機原理作為一門聯系硬體與軟體的一門重要課程,在高校的重視程度是不夠的,是與該門課程地位不相稱的。
⑥通信原理
通信作為一個實際系統,是為了滿足社會與個人的需求而產生的,目的是傳送消息(數據、語音和圖像)。通信技術的發展,特別是近30年來形成了通信原理的主要理論體系,即編碼理論、調制理論與檢測理論。
在通信原理的課程中,有多處要用到資訊理論的結論或定理。資訊理論已成為設計通信系統與進行通信技術研究的指南,尤其是它能告訴工程師們關於通信系統的性能極限。
信道中存在雜訊。在通信過程中雜訊與干擾是無法避免的。隨著對雜訊與干擾的研究產生了隨機過程理論。對信號的分析實際上就是對隨機過程的分析。
在通信工程領域,編碼是一種技術,是要能用硬體或軟體實現的。在數學上可以存在很多碼,可以映射到不同空間,但只有在通信系統中能生成和識別的碼才能應用。編碼理論與通信結合形成了兩個方向:信源編碼與信道編碼。
調制理論可劃分為線性調制與非線性調制,它們的區別在於線性調制不改變調制信號的頻譜結構,非線性調制要改變調制信號的頻譜結構,並且往往佔有更寬的頻帶,因而非線性調制通常比線性調制有更好的抗雜訊性能。
接收端將調制信號與載波信號分開,還原調制信號的過程稱之為解調或檢測。
作為通信原理課程,還包含系統方面的內容,主要有同步和信道復用。在數字通信系統中,只有接收信號與發送信號同步或者信號間建立相同的時間關系,接收端才能解調和識別信號。信道復用是為了提高通信效率,是安排很多信號同時通過同一信道的一種約定或者規范,使得多個用戶的話音、圖像等消息能同時通過同一電纜或者其他信道傳輸。
在通信原理之上是專業課程,可以進一步講述通信系統的設計或深化某一方面的理論或技術。要設計製造通信系統,了解原理是必要的,但只知道原理是不夠的,還必須熟悉硬體(電路、微波)與軟體(系統軟體與嵌入式軟體),這是專業課程計劃中的另一分支的課程體系結構。
通信原理課程的教學從內容上主要分為模擬通信和數字通信兩部分。重點是數字通信的調制、編碼、同步等內容。
配合完成的教學內容,要求學生完成必要的習題作業。期間開設一些驗證性實驗,同時使用SystemView實驗教學,使學生可以比較深刻地理解通信系統實際工作的情況。
由於學生通信原理的認識難度,教師加強了該課程的多媒體CAI教學,形象直觀的圖示輔助教學。利用課程組研製成功的電子教案的演示文稿與以難點模擬為主的圖示輔助教學軟體開展教學。大大提高了教學效果。同時,正在研究與開發成功網上實驗教學軟體,把教學儀器的使用、重要實驗儀器的模擬模擬實驗上網,以進一步適應教學信息化、網路化的要求。 總之,本課程通過理論教學、實驗教學、課程設計、CAI課件、綜合設計和網路教學的手段,使學生在理解本課程的教學內容方面有很大的提高。
⑦數字電路
數字電路基礎教程從最基本的門電路講起,直到各類常見的觸發器、編碼器、解碼器、存儲器、時序電路等等的基本構成和工作原理。教程耐心的闡述了各類數字邏輯電路的基礎知識和分析方法,比如什麼真值表、什麼是競爭冒險現象、各種進制中為什麼計算機要採用2進制,為什麼我們常用的是16進制等等基礎的知識,直到讓我們可以海闊天空,看了這些之後我們就可以明白數字電路的由來,發現它並不神秘,甚至要比模擬電路更簡單!有了這些基礎性的認識,我們就可以自學和分析其他高深的復雜數字電路知識。
⑧模擬電子電路
一、課程的性質、目的與任務
模擬電子電路是中央電大理工科開放專科電子信息技術專業必修的技術基礎課。該課程不僅具有自身的理論體系且是一門實踐性很強的課程。本課程的任務是解決電子技術入門的問題,使學生掌握模擬電子電路的基本工作原理、分析方法和基本技能,為深入學習後續課程和從事有關電子技術方面的實際工作打下基礎。
二、與其它課程的關系
先修課程為電路分析基礎,本課程為學習後續課程(如「現代電子電路與技術」、「自動控制原理」、「微機原理與應用」等 )打下必要的基礎。
三、課程特點
1.知識理論系統性較強。學習本課程需要有一定的基礎理論、知識作鋪墊且又是學習有關後續專業課程的基礎。
2.基礎理論比較成熟。雖然電子技術發展很快,新的器件、電路日新月異,但其基本理論已經形成了相對穩定的體系。有限的學校教學不可能包羅萬象、面面俱到,要把學習重點放在學習、掌握基本概念、基本分析、設計方法上。
3.實踐應用綜合性較強。本課程是一門實踐性很強的技術基礎課,討論的許多電子電路都是實用電路,均可做成實際的裝置。
四、教學總體要求
1.正確理解以下基本概念和術語
直流通路與交流通路,正向偏置和反向偏置,靜態與動態,工作點,負載線,非線性失真,放大倍數,輸入電阻,輸出電阻,頻率特性,正反饋和負反饋,直流反饋和交流反饋,電壓反饋和電流反饋,串聯反饋和並聯反饋,開環與閉環,自激,零點漂移,差模與共模,共模抑制比,恆流源,互補對稱,輸出功率與效率,理想運放,虛短、虛地,雜訊與干擾等。
職業資格證書與技術等級證書
獲得省教育廳頒發的高等學校英語和計算機應用能力合格證書;獲得勞動與社會保障部頒發的中級電工證、電子CAD中級技能等級證書。
掌握的知識和能力
1.較系統地掌握本專業領域寬廣的技術基礎理論知識,適應電子和信息工程方面廣泛的工作范圍;
2.掌握電子電路的基本理論和實驗技術,具備分析和設計電子設備的基本能力;
3.掌握信息獲取、處理的基本理論和應用的一般方法,具有設計、集成、應用及計算機模擬信息系統的基本能力;
4.了解信息產業的基本方針、政策和法規,了解企業管理的基本知識;
5.了解電子設備和信息系統的理論前沿,具有研究、開發新系統、新技術的初步能力。
6.掌握文獻檢索、資料查詢的基本方法,具有一定的科學研究和實際工作能力。
相近專業
通信工程
就業去向
該專業畢業生具有寬領域工程技術適應性,就業面很廣,就業率高,畢業生實踐能力強,工作上手快,可以在電子信息類的相關企業中,從事電子產品的生產、經營與技術管理和開發工作。主要面向電子產品與設備的生產企業和經營單位,從事各種電子產品與設備的裝配、調試、檢測、應用及維修技術工作,還可以到一些企事業單位一些機電設備、通信設備及計算機控制等設備的安全運行及維護管理工作。
企業需求
由於信息時代的到來,據推測,在相當長的一段時間內,此類人才仍將供不應求。
據調查,現階段對於電子信息工程人才的需要量十分巨大,「電子信息工程」的專業,對緩解當前該類人才的供需矛盾是非常必要的。
電子信息工程專業人才已經成為信息社會人才需求的熱點。
電子信息產業是一項新興的高科技產業,被稱為朝陽產業。根據信息產業部分析,「十五」期間是我國電子信息產業發展的關鍵時期,預計電子信息產業仍將以高於經濟增速兩倍左右的速度快速發展,產業前景十分廣闊。
未來的發展重點是電子信息產品製造業、軟體產業和集成電路等產業 ;新興通信業務如數據通信、多媒體、互聯網、電話信息服務、手機簡訊等業務也將迅速擴展;值得關注的還有文化科技產業,如網路游戲等。目前,信息技術支持人才需求中排除技術故障、設備和顧客服務、硬體和軟體安裝以及配置更新和系統操作、監視與維修等四類人才最為短缺。此外,電子商務和互動媒體、資料庫開發和軟體工程方面的需求量也非常大。
另外,團IDC網上有許多產品團購,便宜有口碑
Ⅳ 嵌入式開發中為什麼選擇C語言
能直接訪問硬體,指在C語言中,我們可以通過指針控制內存以及寄存器。嵌入式系統是軟硬結合的東西,所以我們選擇學習能直接訪問硬體的高級語言——C語言。
我匯編和C語言都可以直接訪問硬體。但匯編的語法較為簡單,所以對硬體做初始化操作時選擇匯編,而對硬體做初始化時選擇C語言(C語言是高級語言中最低級的,但是C語言也具有高級語法)。
很高的運行效率C語言是高級語言中最低級的語言,可以直接編譯生成硬體識別的機器碼文件。而其他的高級語言需要相應的語言解釋器做解釋後,再編譯。接下來通過C語言與java語言的比較,來幫助讀者理解為何C語言相比其他高級語言執行效率較高
Ⅳ 嵌入式系統開發中的C語言編程和普通C語言編程有何區別
無區別,只不過編譯器不一樣罷了。因為不同的cpu構架有不同的指令集。而嵌入式基本使用RISC結構的cpu,需要使用pc上的cpu編譯出在能嵌入式cpu上運行的二進製程序。這叫交叉編譯。pc上的程序不可以直接在其他cpu上運行,需要重新編譯。
因為編譯器不一樣,執行的c語言標准就跟編譯器相關。
管理內存映射,設置中斷系統等在pc上也有,不是嵌入式的專利。
只是做嵌入式里的界面、網路、文件編程的話,跟pc上幾乎沒有差別,因為有操作系統罩著。如果開發驅動程序,就要求你對所使用的cpu和板子的結構很了解,也就是看得懂硬體手冊即可。
另外嵌入式環境同pc的差別
如cpu位數、硬體資源緊缺等是需要程序員考慮的。
Ⅵ c語言在嵌入式方面的應用
凡是有嵌入式的地方,你就能發現C語言。
Ⅶ 嵌入式為什麼選擇C語言
這個是有C語言的特性來決定的,C語言的特點是既有高級語言的特性也有低級語言的特性,C語言既能直接進行硬體底層的相關操作,又能實現上層的應用程序開發,並且運行高效、可移植,幾乎所有的操作系統底層的實現絕大部分都是使用C語言來實現的,少數地方需要使用匯編語言,嵌入式設備的運行要求和C語言是一拍即合吧。
Ⅷ 嵌入式c語言論文
嵌入式C語言位操作的移植與優化
單片機的應用越來越廣泛,種類也越來越多。由於嵌入式C語言可讀性強、移植性好,與匯編語言相比大大減輕了軟體工程師的勞動強度,因而越來越多的單片機工程師開始使用C語言編程。但C語言的可移植性僅限於與硬體無關的子程序,而與具體硬體有關的子程序則無法移植。在單片機應用中,位操作(特別是對引腳的位操作)非常普遍,如EEPROM數據和IC卡數據的讀寫、欄位式LCD顯示等,很多帶串口的集成電路都需要單片機用軟體來做I/O口讀寫程序。如何讓這些子程序既有很好的通用性,生成代碼的效率又高,是很多軟體工程師都在考慮的問題。這里介紹兩種C語言位操作的移植方法。
1 用邏輯運算實現位操作
請看下面這個子程序:
INT8U Card102RdByte(void) {
INT8U Temp8U, n = 8;
do{ Temp8U <<= 1;
if( PIN_CARD_SDA_RD() ) Temp8U |= 0x01;
PIN_CARD_CLK_H();PIN_CARD_CLK_L();
}while(--n);
return Temp8U;
}
這是通過單片機引腳從88SC102卡中讀一個位元組的子程序。程序採用μC/OSII中的書寫風格,即變數和函數採用「駝峰」寫法,由define定義的常量和內聯函數採用全部大寫加下劃線的寫法。
此程序驅動一個引腳輸出CARD_CLK高低信號,從另一個引腳一位一位讀取CARD_SDA數據。
1.1 用於MSP430系列單片機
此程序應用到MSP430單片機上(本文用的是MSP430F413單片機),頭文件中要有如下定義:
typedefunsigned charINT8U;
#include<msp430x41x.h>
#definePIN_CARD_SDA_RD()(P6IN & 0x01)
#definePIN_CARD_CLK_H()P6OUT |=0x04
#definePIN_CARD_CLK_L()P6OUT &= ~0x04
匯編結果如下:
In segment CODE, align 2, keep�with�next
__code unsigned char Card102RdByte(void)
Card102RdByte:
0000007E42MOV.B#0x8, R14
??Card102RdByte_0:
0000024C5CRLA.BR12
000004D2B33400BIT.B#0x1, &0x34
0000080128JNC??Card102RdByte_1
00000A5CD3BIS.B#0x1, R12
??Card102RdByte_1:
00000CE2D23500BIS.B#0x4, &0x35
000010E2C23500BIC.B#0x4, &0x35
0000147E53ADD.B#0xff, R14
0000164E93CMP.B#0x0, R14
000018F423 JNE??Card102RdByte_0
00001A3041RET
這與手工匯編編程的結果幾乎一樣,代碼效率很高。
1.2 用於51系列單片機
在51系列單片機中應用此程序,頭文件要加入以下定義:
#include"Reg932.h"//Philips LPC932單片機
sbitCradClk=P0^1;
sbitCardSDA=P0^0;
#definePIN_CARD_SDA_RD()CardSDA
#definePIN_CARD_CLK_H()CradClk=1
#definePIN_CARD_CLK_L()CradClk=0
原來的程序不作任何改動,匯編結果如下:
; FUNCTION Card102RdByte (BEGIN)
;-- Variable 'Temp8U' assigned to Register 'R7' --
;-- Variable 'n' assigned to Register 'R6' --
00007E08MOVR6,#08H
0002?C0007:
0002EFMOVA,R7
000325E0ADDA,ACC
0005FFMOVR7,A
0006308003JNBCardSDA,?C0008
0009430701ORLAR7,#01H
000C?C0008:
000CD281SETBCradClk
000EC281CLRCradClk
0010DEF0DJNZR6,?C0007
0012?C0009:
001222RET
; FUNCTION Card102RdByte (END)
由匯編結果可知,對位的直接清零和置位已達到最簡,只是讀位值不夠理想。
1.3 用於196/296系列單片機
在80C196MC、80C296SA等單片機中,片上I/O口是可以窗口映射到低端地址的。採用這種方式,I/O口可以直接定址,因而程序代碼最短,執行速度也最快,但這樣做C程序就無法移植了。若不用窗口技術,則片上I/O口是內存地址映射的,與普通內存地址一樣操作。頭文件中加入如下定義,即可利用原來的程序:
INT8UPOUT,PIN;
#pragmalocate(POUT=0x880)
#pragmalocate(PIN=0x881)//外擴I/O口地址定位
#definePIN_CARD_SDA_RD()(PIN & 0x01)
#definePIN_CARD_CLK_H()POUT |=0x04
#definePIN_CARD_CLK_L()POUT &= ~0x04
匯編後的代碼是56位元組,代碼效率也很高。
採用邏輯運算實現位操作,C程序簡單明了,移植性好,可讀性更好。但96系列單片機無法利用JBC和JBS位操作指令,51系列單片機也無法利用JB和JNB等其特有的位操作指令來提高代碼效率。用位段結構實現位操作可以彌補這個不足。
2 用位段結構實現位操作
把原來的程序改寫如下:
INT8U Card102RdByte(void)①
{②
INT8U n = 8;③
#ifndef C51_ASM④
bdata ACCImg;⑤
#endif⑥
do{ ACC <<= 1;⑦
GET_CARD_SDA();⑧
PIN_CARD_CLK_H() ; PIN_CARD_CLK_L() ;⑨
}while(--n) ;⑩
return ACC ;
}
2.1 在51系列單片機中的應用
在C51中使用ACC是不必在每個子程序中定義的,所以要在文件的開頭加上 #define C51_ASM。這樣,第④、⑤、⑥句會被忽略。在頭文件中加上以下定義:
sbitACC_0=ACC^0 ;
#defineGET_CARD_SDA()ACC_0 = CardSDA
其餘定義如本文第一部分所述。結果第⑧句匯編變為「MOV C,CardSDA」和「MOV ACC_0,C」兩句。句,函數要通過R7返回參數,程序已達到最簡。
; FUNCTION Card102RdByte (BEGIN)
;-- Variable 'n' assigned to Register 'R7'--
00007F08MOVR7,#08H
0002?C0007:
000225E0ADDA,ACC
0004A281MOVC,CardSDA
000692E0MOVACC_0,C
0008D280SETBCardClk
000AC280CLRCardClk
000CDFF4DJNZR7,?C0007
000EFFMOVR7,A
000F?C0008:
000F22RET
; FUNCTION Card102RdByte (END)
還可以像196/296那樣定義一個位段結構,使用JB指令,有興趣的讀者可以自己試一下。
2.2 在196/296系列單片機中的應用
在196/296中應用這段程序,要增加一個局部變數ACCImg的定義,就是前面程序中的第④、⑤、⑥三句。再在頭文件中增加一個如下的位段結構定義:
typedef struct {unsigned Bit0:1;
unsigned Bit1:1;
unsigned Bit2:1;
unsigned Bit3:1;
unsigned Bit4:1;
unsigned Bit5:1;
unsigned Bit6:1;
unsigned Bit7:1;
}Divide_to_bit;
typedef union {INT8U Byte;
Divide_to_bit DivBit;
}bdata;
埠地址變數要定義成以下數據類型:
bdata PIN;
同時,在頭文件中加上宏定義:
#defineACC ACCImg.Byte
#defineACC_0 ACCImg.DivBit.Bit0
#defineGET_CARD_SDA() if(PIN.DivBit.Bit0) ACC |=0x01;
這樣ACCImg就定義成了一個低端寄存器,ACC是它的位元組訪問形式。源程序中的第⑧句讀引腳,匯編的結果使用了JBC指令,整個程序比不用位段減少了位元組,達到了優化代碼的目的。
cseg
0000Card102RdByte:
; Statement3
0000B10800Rldbn,#8
; Statement7
0003 @ 0004 :
0003740101RaddbACCImg,ACCImg
; Statement8
0006B30181081CldbTmp0,PIN
000B 331C03jbcTmp0,3,@0005
000E 910101 RorbACCImg,#1
0011 @ 0005 :
; Statement9
0011 B30180081CldbTmp0,POUT
0016 91041CorbTmp0,#4
0019 C70180081CstbTmp0,POUT
001E 71FB1C andbTmp0,#0FBH
0021 C70180081C stbTmp0,POUT
; Statement10
00261500Rdecbn
0028980000RcmpbR0,n
002BD7D6bne @ 0004
; Statement11
002DB0011C RldbTmp0,ACCImg
00302000 br @ 0001
; Statement12
0032 @ 0001 :
0032F0ret
2.3 在MSP430系列單片機中的應用
MSP430系列單片機沒有位操作指令,所以不必定義位段結構,直接把ACC定義成一個無符號8位數即可。頭文件中是這樣定義的:
#ifndef C51_ASM//此句使頭文件也可以與C51的共用
typedef INT8U bdata ;
#define ACC ACCImg
#define GET_CARD_SDA() if(P6IN & 0x01) ACC |=0x01;
#endif
匯編的結果與用邏輯運算的方法進行位操作竟完全一樣。
結語
對引腳的位操作有3種: 直接置位或清零,從埠輸入數據和從埠輸出數據。前兩種上文已介紹過了。從埠輸出數據的C程序如下:
do{
OUT_SIO_DA();
CLK_H();
ACC <<= 1;//移位可擴展時鍾脈沖寬度
CLK_L();
}while
其中: 第一句OUT_SIO_DA(),51系列可定義成位操作SIO_SDA = ACC_7;196/296和430系列可如上文定義成一個if語句。
位段操作程序中採用了ACC這個名字作為一個局部變數。在C51中這剛好是主累加器,對於2401、IC卡等半雙工器件的程序很實用,但當SPI匯流排輸入/輸出同時操作時,就沒這么方便了。
用邏輯運算實現位操作不存在任何移植的障礙。μC/OS-II中的位操作就是全用邏輯運算實現的。位段定義可能存在不同編譯器分配順序不同的問題,但考慮到32位高速CPU不會用軟體模擬這種串口的操作,這樣的程序只會用在51、196/296、MSP430等無片內Cache的中低速單片機中,所以用位段操作引腳的方法仍有意義。具體是使用邏輯運算還是使用位段進行位操作,完全看個人喜好。本文程序採用的編譯器是Keil C51 V7.03、IAR C430 V2.10A和 Tasking C96 V5.0。
Ⅸ 嵌入式C語言和通用C語言有什麼區別
語法上沒什麼區別,就是普通的c編程是在OS之上,有很多的標准庫函數可以調用,分配的內存就是PC機的內存,處理器就是PC的CPU。 而嵌入式C編程的話會涉及到操作硬體,所以底層沒有庫函數調用,需要自己編寫操作硬體的函數,另外編譯的時候是用交叉編譯器,內存是晶元上的ram, 處理器就是晶元帶的處理器,例如ARM或者MIPS等等,而不是PC的x86 CPU, 還有就是在寫程序的時候更注重程序的優化和效率,因為嵌入式硬體資源相對PC有限,實時性較強等等。
希望對你有幫助。
Ⅹ C語言,嵌入式
根據你的計算機的主頻決定,用20除以你的主頻得到的結果就是延遲的秒數。比如說你的計算機的主頻是500M的,那麼Tim = 20就相當於延遲了20/500 000 000 秒。