㈠ 什麼是單片機時鍾周期
時鍾周期也稱為振盪周期,定義為時鍾脈沖的倒數(可以這樣來理解,時鍾周期就是單片機外接晶振的倒數,例如12M的晶振,它的時間周期就是1/12 us),是計算機中最基本的、最小的時間單位。
在一個時鍾周期內,CPU僅完成一個最基本的動作。對於某種單片機,若採用了1MHZ的時鍾頻率,則時鍾周期為1us;若採用4MHZ的時鍾頻率,則時鍾周期為250us。由於時鍾脈沖是計算機的基本工作脈沖,它控制著計算機的工作節奏(使計算機的每一步都統一到它的步調上來)。顯然,對同一種機型的計算機,時鍾頻率越高,計算機的工作速度就越快。但是,由於不同的計算機硬體電路和器件的不完全相同,所以其所需要的時鍾周頻率范圍也不一定相同。我們學習的8051單片機的時鍾范圍是1.2MHz-12MHz。
在8051單片機中把一個時鍾周期定義為一個節拍(用P表示),二個節拍定義為一個狀態周期(用S表示)。
學習單片機多練習單片機開發板,比較不錯的可以參考主流的吳鑒鷹單片機開發板
㈡ stc單片機和51單片機有什麼大的區別
STC單片機是增強型的51單片機,增加了ISP下載,三層加密,時鍾有1T,6T,12T
㈢ 8051單片機的詳細資料
MCS-51單片機的引腳描述及片外匯流排結構
一、晶元的引腳描述
HMOS製造工藝的MCS-51單片機都採用40引腳的直插封裝(DIP方式),製造工藝為CHMOS的80C51/80C31晶元除採用DIP封裝方式外,還採用方型封裝工藝,引腳排列如圖。其中方型封裝的CHMOS晶元有44隻引腳,但其中4隻引腳(標有NC的引腳1、12、23、34)是不使用的。在以後的討論中,除有特殊說明以外,所述內容皆適用於CHMOS晶元。
如圖,是MCS-51的邏輯符號圖。在單片機的40條引腳中有2條專用於主電源的引腳,2條外接晶體的引腳,4條控制或與其它電源復用的引腳,32條輸入/輸出(I/O)引腳。
下面按其引腳功能分為四部分敘述這40條引腳的功能。
1、主電源引腳VCC和VSS
VCC——(40腳)接+5V電壓;
VSS——(20腳)接地。
2、外接晶體引腳XTAL1和XTAL2
XTAL1(19腳)接外部晶體的一個引腳。在單片機內部,它是一個反相放大器的輸入端,這個放大器構成了片內振盪器。當採用外部振盪器時,對HMOS單片機,此引腳應接地;對CHMOS單片機,此引腳作為驅動端。
XTAL2(18腳)接外晶體的另一端。在單片機內部,接至上述振盪器的反相放大器的輸出端。採用外部振盪器時,對HMOS單片機,該引腳接外部振盪器的信號,即把外部振盪器的信號直接接到內部時鍾發生器的輸入端;對XHMOS,此引腳應懸浮。
3、控制或與其它電源復用引腳RST/VPD、ALE/PROG、PSEN和EA/VPP
①RST/VPD(9腳)當振盪器運行時,在此腳上出現兩個機器周期的高電平將使單片機復位。推薦在此引腳與VSS引腳之間連接一個約8.2k的下拉電阻,與VCC引腳之間連接一個約10μF的電容,以保證可靠地復位。
VCC掉電期間,此引腳可接上備用電源,以保證內部RAM的數據不丟失。當VCC主電源下掉到低於規定的電平,而VPD在其規定的電壓范圍(5±0.5V)內,VPD就向內部RAM提供備用電源。
②ALE/PROG(30腳):當訪問外部存貯器時,ALE(允許地址鎖存)的輸出用於鎖存地址的低位位元組。即使不訪問外部存儲器,ALE端仍以不變的頻率周期性地出現正脈沖信號,此頻率為振盪器頻率的1/6。因此,它可用作對外輸出的時鍾,或用於定時目的。然而要注意的是,每當訪問外部數據存儲器時,將跳過一個ALE脈沖。ALE端可以驅動(吸收或輸出電流)8個LS型的TTL輸入電路。
對於EPROM單片機(如8751),在EPROM編程期間,此引腳用於輸入編程脈沖(PROG)。
③PSEN(29腳):此腳的輸出是外部程序存儲器的讀選通信號。在從外部程序存儲器取指令(或常數)期間,每個機器周期兩次PSEN有效。但在此期間,每當訪問外部數據存儲器時,這兩次有效的PSEN信號將不出現。PSEN同樣可以驅動(吸收或輸出)8個LS型的TTL輸入。
④EA/VPP(引腳):當EA端保持高電平時,訪問內部程序存儲器,但在PC(程序計數器)值超過0FFFH(對851/8751/80C51)或1FFFH(對8052)時,將自動轉向執行外部程序存儲器內的程序。當EA保持低電平時,則只訪問外部程序存儲器,不管是否有內部程序存儲器。對於常用的8031來說,無內部程序存儲器,所以EA腳必須常接地,這樣才能只選擇外部程序存儲器。
對於EPROM型的單片機(如8751),在EPROM編程期間,此引腳也用於施加21V的編程電源(VPP)。
4、輸入/輸出(I/O)引腳P0、P1、P2、P3(共32根)
①P0口(39腳至32腳):是雙向8位三態I/O口,在外接存儲器時,與地址匯流排的低8位及數據匯流排復用,能以吸收電流的方式驅動8個LS型的TTL負載。
②P1口(1腳至8腳):是准雙向8位I/O口。由於這種介面輸出沒有高阻狀態,輸入也不能鎖存,故不是真正的雙向I/O口。P1口能驅動(吸收或輸出電流)4個LS型的TTL負載。對8052、8032,P1.0引腳的第二功能為T2定時/計數器的外部輸入,P1.1引腳的第二功能為T2EX捕捉、重裝觸發,即T2的外部控制端。對EPROM編程和程序驗證時,它接收低8位地址。
③P2口(21腳至28腳):是准雙向8位I/O口。在訪問外部存儲器時,它可以作為擴展電路高8位地址匯流排送出高8位地址。在對EPROM編程和程序驗證期間,它接收高8位地址。P2可以驅動(吸收或輸出電流)4個LS型的TTL負載。
④P3口(10腳至17腳):是准雙向8位I/O口,在MCS-51中,這8個引腳還用於專門功能,是復用雙功能口。P3能驅動(吸收或輸出電流)4個LS型的TTL負載。
作為第一功能使用時,就作為普通I/O口用,功能和操作方法與P1口相同。
作為第二功能使用時,各引腳的定義如表所示。
值得強調的是,P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二功能。
表 P3各口線的第二功能定義
口線 引腳 第二功能
P3.0 10 RXD(串列輸入口)
P3.1 11 TXD(串列輸出口)
P3.2 12 INT0(外部中斷0)
P3.3 13 INT1(外部中斷1)
P3.4 14 T0(定時器0外部輸入)
P3.5 15 T1(定時器1外部輸入)
P3.6 16 WR(外部數據存儲器寫脈沖)
P3.7 17 RD(外部數據存儲器讀脈沖)
二、MCS-51單片機的片外匯流排結構
綜合上面的描述可知,I/O口線都不能當作用戶I/O口線。除8051/8751外真正可完全為用戶使用的I/O口線只有P1口,以及部分作為第一功能使用時的P3口。如圖,是MCS-51單片機按引腳功能分類的片外匯流排結構圖。
由圖我們可以看到,單片機的引腳除了電源、復位、時鍾接入,用戶I/O口外,其餘管腳是為實現系統擴展而設置的。這些引腳構成MCS-51單片機片外三匯流排結構,即:
①地址匯流排(AB):地址匯流排寬為16位,因此,其外部存儲器直接定址為64K位元組,16位地址匯流排由P0口經地址鎖存器提供8位地址(A0至A7);P2口直接提供8位地址(A8至A15)。
②數據匯流排(DB):數據匯流排寬度為8位,由P0提供。
③控制匯流排(CB):由P3口的第二功能狀態和4根獨立控制線RESET、EA、ALE、PSEN組成。
下表列出各個子系列的配製情況供讀則參考。
晶元種類 片內存儲器 中斷源 定時/計數器 串列口 電源消耗(mA) 製造工藝
ROM/EPROM RAM
8051(8751,8031) 4K 128 5 2 同、非同步方式,8位或10位可程序控制 125 HMOS
8052(8752,8032) 8K 256 6 3 同、非同步方式,8位或10位可程序控制 100 HMOS
80C51(87C51,80C31) 4K 128 5 2 同、非同步方式,8位或10位可程序控制 24 CHMOS
80C52(87C52,80C32) 8K 256 7 3 同、非同步方式,8位或10位可程序控制 24 CHMOS
8044(8744,8344) 4K 192 5 2 S.L.U 200 HMOS
MSC-51單片機中央處理器
中央處理器是單片機內部的核心部件,它決定了單片機的主要功能特性。中央處理器主要由運算部件和控制部件組成。下面我們把中央處理器功能模塊和有關的控制信號線聯系起來加以討論,並涉及相關的硬體設備(如振盪電路和時鍾電路)。
1、運算部件:它包括算術、邏輯部件ALU、布爾處理器、累加器ACC、寄存器B、暫存器TMP1和TMP2、程序狀態字寄存器PSW以及十進制調整電路等。運算部件的功能是實現數據的算術邏輯運算、位變址處理和數據傳送操作。
MCS-51單片機的ALU功能十分強,它不僅可對8位變數進行邏輯「與」、「或」、「異或」、循環、求補、清零等基本操作,還可以進行加、減、乘、除等基本運算。為了乘除運算的需要,設置了B寄存器。在執行乘法運算指令時,用來存放其中一個乘數和乘積的高8位數;在執行除法運算指令時,B中存入除數及余數。MCS-51單片機的ALU還具有一般微機ALU,如Z80、MCS-48所不具備的功能,即布爾處理功能。單片機指令系統中的布爾指令集、存儲器中的位地址空間與CPU中的位操作構成了片內的布爾功能系統,它可對位(bit)變數進行布爾處理,如置位、清零、求補、測試轉移及邏輯「與」、「或」等操作。在實現位操作時,借用了程序狀態標志器(PSW)中的進位標志Cy作為位操作的「累加器」。
運算部件中的累加器ACC是一個8位的累加器(ACC也可簡寫為A)。從功能上看,它與一般微機的累加器相比沒有什麼特別之處,但需要說明的是ACC的進位標志Cy就是布爾處理器進行位操作的一個累加器。
MCS-51單片機的程序狀態PSW,是一個8位寄存器,它包含了程序的狀態信息。
2、控制部件
控制部件是單片機的神經中樞,它包括時鍾電路、復位電路、指令寄存器、解碼以及信息傳送控制部件。它以主振頻率為基準發出CPU的時序,對指令進行解碼,然後發出各種控制信號,完成一系列定時控制的微操作,用來控制單片機各部分的運行。其中有一些控制信號線能簡化應用系統外圍控制邏輯,如控制地址鎖存的地址鎖存信號ALE,控製片外程序存儲器運行的片內外存儲器選擇信號EA,以及片外取指信號PSEN。
參考資料:http://www.ieechina.com/Upload/Tech/538.htm
㈣ 學什麼單片機好學單片機怎麼樣能賺錢嗎有前途嗎
先學51單片機,可以看看學習視頻,對於每個人來說,多學習一種技能 可以拓寬 就業渠道,
單片機學習可以先學習一些模擬示例,如
#include<reg51.h>
#define uchar unsigned char
uchar temp;
int key1,key,disbuf;// 此表為 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f
unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char ledx[8];
uchar t,j,i;
bit s0,s1;
void scan() //要是按鍵了,掃描鍵盤編碼值
{
P1=0xF0;
for(j=0;j<250;j++);
temp=P1;
switch(temp)
{
case 0xe0: key1=0; //
break;
case 0xd0: key1=1; //
break;
case 0xb0: key1=2; //
break;
case 0x70: key1=3; //
break;
}
P1=0x0f;
for(j=0;j<250;j++)
temp=P1;
switch(temp)
{
case 0x0E: key=key1+0;
break;
case 0x0D: key=key1+4;
break;
case 0x0B: key=key1+8;
break;
case 0x07: key=key1+12;
break;
default : key=-1;
}
if((key1+1)&&(key+1)) disbuf=key;
}
void ejjc() //判斷是否按鍵
{
P1=0xF0;
if(P1!=0xF0) { scan();s0=1;}
else { s0=0; s1=1;}
}
void main()
{
TMOD=0x51; // T1 外部計數
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
EA=1;
ET0=1; //開定時器0中斷
ET1=1; //開定時器1中斷
TR0=1; //啟動定時器0
TR1=1; //啟動定時器1
while(1)
{
ejjc();
if(s0==1 && s1==1)
{
s0=0;s1=0;
for(i=0;i<8;i++)
{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }
}
}
}
void timer0() interrupt 1
{
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
P0=0xff;
switch(t)
{
case 0: P2=LED7Code[ledx[0]]; P0=0xfe;break;
case 1: P2=LED7Code[ledx[1]]; P0=0xfd;break;
case 2: P2=LED7Code[ledx[2]]; P0=0xfb;break;
case 3: P2=LED7Code[ledx[3]]; P0=0xf7;break;
case 4: P2=LED7Code[ledx[4]]; P0=0xef;break;
case 5: P2=LED7Code[ledx[5]]; P0=0xdf;break;
case 6: P2=LED7Code[ledx[6]]; P0=0xbf;break;
case 7: P2=LED7Code[ledx[7]]; P0=0x7f;break;
}
t++;
if(t==8) t=0;
}
㈤ 一個工作於6M晶振的單片機,它的機器周期是多少它的時鍾周期和機器周期怎麼算,有公式嗎
一個工作於6M晶振的單片機,它的機器周期是2us。
時鍾周期=1/fosc=1/6us
機器周期=12/fsoc=12/6=2us
㈥ c51類的單片機除了STC還有什麼
看你做什麼產品了。C8051F單片機是增強型的51內核,名稱是:CIP-51 。採用流水線結構,與標準的 8051 結構相比指令執行速度有很大的提高。在一個標準的 8051 中,除 MUL和 DIV以外所有指令都需要 12 或 24 個系統時鍾周期,最大系統時鍾頻率為 12-24MHz。而對於 CIP-51 內核,70%的指令的執行時間為 1 或2個系統時鍾周期,只有 4 條指令的執行時間大於 4 個系統時鍾周期。
STC單片機也是比較好用的。如果學習或者做小產品。干擾小穩定性要求不嚴格的話可以用。
我一開始學的就是STC單片機。串列下載很方便。現在出的新款速度也相當高。
㈦ 求助:單片機及嵌入式行業所具備的知識技能
進入嵌入式行業,勉強不來(轉)
覺得海同07年的分析(好像)不錯:
「海同教育總經理曲剛老師表示,市場上需要的嵌入式人才必須具備C語言編程經驗、嵌入式操作系統(主要包括嵌入式Linux、WinCE或 Symbian)經驗、內核裁剪經驗、驅動程序開發經驗,比如高級嵌入式軟體開發工程師相關職位要求是:有豐富的嵌入式多任務軟體系統分析和設計能力,能獨立完成項目系統方案,解決系統故障和問題、精通C語言應用開發,有良好的編程習慣和風格、良好的文檔編寫能力和習慣、熟悉項目管理流程。曲老師還特別指出,良好的英文閱讀能力及較強的學習能力是從事這一領域工作的基礎,對嵌入式操作系統做到一專而多能(精通嵌入式Linux,掌握WinCE及 Symbian)更會使求職者身價倍增。
目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如操作系統級、驅動程序級軟體),對軟體專業水平要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業 IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如ARM處理器、嵌入式操作系統、MPEG技術、無線通信協議等),掌握這些新技術的人當然很難找。
嵌入式人才稀缺,身價自然就高。目前有很多公司將硬體設計包給了專門的硬體公司,稍復雜的硬體都交給台灣或國外公司設計;而對於軟體部分,大量的嵌入式公司自己開發,比如對於日本公司來說,由於國內人力成本過高,所以日本很多嵌入式軟體開發企業都把項目外包給中國的公司來完成,國內也有越來越多的企業來從事嵌入式軟體開發,近幾年,國內對嵌入式軟體人才需求倍增,僅僅北京市場嵌入式軟體開發人員的需求就已經超過了5萬人,而且還在持續增長。
嵌入式人才的工作環境與發展前景也有優勢。曲老師告訴記者:「從事嵌入式工作有兩大優勢:一是工作強度相對較低。開發企業應用軟體的IT企業,這個用戶的系統做完了,又得去做下一個用戶的,而且每個用戶的需求和完成時間都不同,開發人員往往疲於奔命,重復勞動;而做嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事,所開發的產品通常是通用的,不會因客戶的不同而修改,一個產品型號開發完了,往往還有較長一段空閑時間進行充電和休整。二是職業發展相對順利,從事企業應用軟體的人,工作范圍廣,項目變化大,日常的積累很難產生質變,容易遭遇職業瓶頸;而從事嵌入式軟體的人,所涉及的專業技術范圍就是那些,時間長了會越來越有經驗。」
以上都是針對求職工作而言,若對於個人整體發展來說,如果想創業,做自已的產品,那麼嵌入式更是一個不錯的主意,嵌入式軟體不會像應用軟體那樣容易被盜版,開發出專利產品,又何止年薪十萬。
入行得有專業基礎,那麼,應該如何快速成長為嵌入式人才呢?曲老師指出,嵌入式系統領域門檻較高,並不適合每個人,嵌入式開發人員不僅要懂較底層軟體,對軟體專業水平要求較高,要進入嵌入式系統開發領域工作,首先必須具備一定的C語言基礎,然後可以嘗試參加一些的相關培訓課程,接著可以尋找項目實踐的機會,增加項目經驗。「
還有網友的寶貴意見:
「二、嵌入式系統的分層與專業的分類。
嵌入式系統分為4層,硬體層、驅動層、操作系統層和應用層。
1、硬體層,是整個嵌入式系統的根本,如果現在單片機及介面這塊很熟悉,並且能用C和匯編語言來編程的話,從嵌入式系統的硬體層走起來相對容易,硬體層也是驅動層的基礎 ,一個優秀的驅動工程師是要能夠看懂硬體的電路圖和自行完成CPLD的邏輯設計的,同時還要對操作系統內核及其調度性相當的熟悉的。但硬體平台是基礎,增值還要靠軟體。
硬體層比較適合於,電子、通信、自動化、機電一體、信息工程類專業的人來搞,需要掌握的專業基礎知識有,單片機原理及介面技術、微機原理及介面技術、C語言。
2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨占操作系統時間片,而導至其它任務不能動行,不懂操作系統內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到 ,這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行後,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行後來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統內核不研究上幾編,不是太容易成功的 ,但其工資在嵌入式系統四層中可是最高的。
驅動層 比較適合於電子、通信、自動化、機電一體、信息工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬體層所具備的基礎學科外,還要對數據結構與演算法、操作系統原理、編譯原理都要十分精通了解。
3、操作系統層,對於操作系統層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁碟和文件的管理,而嵌入式系統的實時性十分重要。據說,XP操作系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟體所自己的女媧Hopen操作系統估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。
4、應用層,相對來講較為容易的,如果會在windows下如何進行編程介面函數調用,到操作系統下只是編譯和開發環境有相應的變化而已。如果涉及 Jave方面的編程也是如此的。嵌入式系統中涉及演算法的由專業演算法的人來處理的,不必歸結到嵌入式系統范疇內。但如果涉及嵌入式系統下面嵌入式資料庫、基於嵌入式系統的網路編程和基於某此應用層面的協議應用開發(比如基於SIP、H.323、Astrisk)方面又較為復雜,並且有難度了。
三、目標與定位。
先有目標,再去定位。
學ARM,從硬體上講,一方面就是學習介面電路設計,另一方面就是學習匯編和C語言的板級編程。如果從軟體上講,就是要學習基於ARM處理器的操作系統層面的驅動、移植了。這些對於初學都來說必須明確,要麼從硬體著手開始學,要麼從操作系統的熟悉到應用開始學,但不管學什麼,只要不是純的操作系統級以上基於API的應用層的編程,硬體的寄存器類的東西還是要能看懂的,基於板級的匯編和C編程還是要會的。因此針對於嵌入式系統的硬體層和驅動程的人,ARM的介面電路設計、ARM的C語言和匯編語言編程及調試開發環境還是需要掌握的 。
因此對於初學者必然要把握住方向,自己的目標是什麼,自己要在那一層面上走。然後再著手學習較好,與ARM相關的嵌入式系統的較為實際的兩個層面硬體層和驅動層 ,不管學好了那一層都會很有前途的。
如果想從嵌入式系統的應用層面的走的話,可能與ARM及其它體系相去較遠,要著重研究基嵌入式操作系統的環境應用與相應開發工具鏈,比如WinCe操作系統下的EVC應用開發(與windows下的VC相類似),如果想再有突破就往某些音視頻類的協議上靠,比如VOIP領域的基於SIP或H.323協議的應用層開發,或是基於嵌入式網路資料庫的開發等等。
對於初學者來講,要量力而行,不要認為驅動層工資高就把它當成方向了,要結合自身特點,嵌入式系統四個層面上那個層面上來講都是有高人存在,當然高人也對應的高工資,我是做硬體層的,以前每月工資中個人所得稅要被扣上近3千大元,當然我一方面充當工程師的角色,一方面充當主管及人物的角色,兩個職位我一個人干,但上班時間就那些。硬體這方面上可能與我PK的人很少了,才讓我拿到那麼多的工資。
四、開發系統選擇。
很多ARM初學者都希望有一套自己能用的系統,但他們住住會產生一種錯誤認識就是認為處理器版本越高、性能越高越好,就象很多人認為ARM9與ARM7 好,我想對於初學者在此方面以此入門還應該理智,開發系統的選擇最終要看自己往嵌入式系統的那個方向上走,是做驅動開發還是應用,還是做嵌入式系統硬體層設計與板級測試。如果想從操作系統層面或應用層面上走,不管是驅動還是應用,那當然處理器性能越高越好了,但這個東西自學,有十分大的困難,不是幾個月或半年或是一年二年能搞定的事。
在某種意義上請,ARM7與9的差別就是在某些功能指令集上豐富了些,主頻提高一些而已,就比如286和386。對於用戶來講可能覺查不到什麼,只能是感覺速度有些快而已。
ARM7比較適合於那些想從硬體層面上走的人,因為ARM7系列處理器內部帶MMU的很少,而且比較好控制,就比如S3C44B0來講,可以很容易將 Cache關了,而且內部介面寄存器很容易看明白,各種介面對於用硬體程序控制或AXD單步命令行指令都可以控制起來,基於51單片機的思想很容易能把他搞懂,就當成個32位的單片機,從而消除很多51工程師想轉為嵌入式系統硬體ARM開發工程師的困惑,從而不會被業界某此不是真正懂嵌入式爛公司帶到操作系統層面上去 ,讓他們望而失畏,讓業界更加缺少這方面的人才 。
而嵌入式系統不管硬體設計還是軟體驅動方面都是十分注重介面 這部分的,選擇平台還要考察一個處理器的外部資源,你接觸外部資源越多,越熟悉他們那你以後就業成功的機率就越高 ,這就是招聘時所說的有無「相關技能」,因為一個人不可能在短短幾年內把所有的處理器都接觸一遍,而招聘單位所用的處理器就可能是我們完全沒有見過的,就拿台灣數十家小公司(市價幾千萬)的公司生產的ARM類處理器,也很好用,但這些東西通用性太差,用這些處理器的公司就只能招有相關工作經驗的人了,那什麼是相關工作經驗,在硬體上講的是外圍介面設計 ,在軟體上講是操作系統方面相關介面驅動及應用開發經驗。 我從業近十年,2000年 ARM出現,我一天始做ARM7,然後直接跑到了Xscale(這個板本在ARM10-11之間),一做就是五年,招人面試都不下數百人,在這些方面還是深有體會的。
我個人認為三星的S3C44b0對初學者來說比較合適,為什麼這么說哪?因為介面資源比較豐富,技術成熟,資料較多,應該十分適合於初學者,有問題可能很容易找人幫且解決,因為大多數人都很熟悉,就如同51類的單片機,有N多位專家級的人物可以給你幫忙,相關問題得以很快解答,所然業界認為這款ARM都做用得爛了,但對於初學者來,就卻是件好事。
因此開發系統的選擇,要看自己的未來從來目標方向、要看開發板介面資源、還要看業界的通用性。
五、如何看待培訓。
首先說說我自己,我目前從業近十年,與國內嵌入式系統行業共同起步,一直站在嵌入式系統行業前沿,設計過多款高端嵌入式系統平台產品並為眾多公司提供過解決方案,離職前為從事VOIP的美資公司設計IP-PBX,歷任項目經理、項目主管、技術總監、部門經理,積累眾多人脈,並集多年經驗所得,考慮到學生就業與公司招人的不相匹配,公司想招人招不到,而學生和剛畢業的工程師想找份工作也不太容易,於此力創知天行科技有限公司,開展嵌入式系統教育培訓。
因一線的科研人員和一線的教師不相接觸,導至國內嵌入式人才缺乏,國外高校的技術超前於業界公司,而國內情況是業界公司方面的嵌入式系統技術要遠遠領先於高校 。為架構業界與高校溝通的橋梁,把先進技能帶給高校學子,為學生在就業競爭中打造一張王牌,並為業界工程師快速提升實現自我創造機遇,我就這樣辭去了外企年薪20多萬的職位,做嵌入式系統方面的培訓了。
對於培訓來講,是花錢來買時間 ,很多工程師都喜歡自己學,認為培訓不值,這也是有可能的,純為賺錢的培訓當然不會太有價值,但對於實力型的培訓他們可能就虧大了,有這樣一筆帳不知他們算過沒有,如果一個一周的培訓,能帶給他們自學兩年後才能掌握的知識,在培訓完後他們用三個月到半年時間消化培訓內容,這樣,他會省約至少一年半的時間來學其它的或重新站在另一個高度上工作,那麼他將最遲一年後會拿到他兩年後水平所對應的工資,就是在工資與水平對應的關繫上比同批人縮短一年,每月按最少1千計,再減去培訓費用至少多1.0萬,同時也省了一年時間,不管是休閑也好,再繼續提高也好,總之是跑到了隊伍的前面了。
另一層面上講,對於新人的培訓相當於他們為自己提前買了份失業保險,有師傅會帶領他們入道,我今年暑假時班裡最年輕的一個學生是大二的,今年才上大三,這學期才剛學單片機,但現在ARM方面的編程工作已經搞得有聲有色了,再過一年多畢業,他還會失業嗎?
再者通過培訓,你可以知道很多業界不為常人所知的事,同時也為自己找了個師傅,就比如說,兩個工程師分別用S3C2410和PXA255來做手持設備,同樣兩人都工作四年,再出去找工作,兩人工資可能最多可相差一倍,為什麼?這就是業界不為常人所知的規則,2410屬於民品,被業界用爛了,做產品時成本特敏感,當然也對人才成本敏感了,PXA255是intel的東西,一個255 CPU能買三個2410,一直被業界定義為貴族產品,用的公司都是大公司或為軍方服務的公司,不會在乎成本,只要把東西做好,一切都好說,但這方面做的人也少啊,因為開發系統貴啊。
對於說為自已找了個好師傅,我想是這樣的,因為同級工程師間存在著某此潛在的競爭關系,有很多人不願意把自己知道的東西教給別人,這意味著他將要失業,就是所說的教會徒弟,餓死師傅,但對於我們這些人就不存在這樣的關系了,我是在嵌入式系統平台設計上走到了一定程序,目前在國內這塊的技術上已經是自己很難再突破自己,因此很多東西我對大家都是OPEN的,就比如說下面那部分關於介面設計中所提到的時序介面東西,我要是不講,卻使是高級硬體工程師我想也幾乎只有10%的人能知道吧。
六、成為高級嵌入式系統硬體工程師要具備的技能。
首先我聲明,我是基於嵌入式系統平台級設計的,硬體這個方向我相對來講比較有發言權,如果是其它方面所要具備的基本技能還要和我們培訓中心其它專業級講師溝通,或去網站看看***。他們的方面上我只能說是知道些,但不是太多,初級的問題也可以問我。
對於硬體來講有幾個方向,就單純信號來分為數字和模擬,模擬比較難搞,一般需要很長的經驗積累,單單一個阻值或容值的精度不夠就可能使信號偏差很大。因此年輕人搞的較少,隨著技術的發展,出現了模擬電路數字化,比如手機的Modem射頻模塊,都採用成熟的套片,而當年國際上只有兩家公司有此技術,自我感覺模擬功能不太強的人,不太適合搞這個,如果真能搞定到手機的射頻模塊,只要達到一般程度可能月薪都在15K以上。
另一類就是數字部分了,在大方向上又可分為51/ARM的單片機類,dsp類,FPGA類,國內FPGA的工程師大多是在IC設計公司從事IP核的前端驗證,這部分不搞到門級,前途不太明朗,即使做個IC前端驗證工程師,也要搞上幾年才能勝任。dsp硬體介面比較定型,如果不向驅動或是演算法上靠攏,前途也不會太大。而ARM單片機類的內容就較多,業界產品佔用量大,應用人群廣,因此就業空間極大,而硬體設計最體現水平和水準的就是介面設計這塊,這是各個高級硬體工程師相互PK,判定水平高低的依據。而介面設計這塊最關鍵的是看時序,而不是簡單的連接,比如PXA255處理器I2C要求速度在 100Kbps,如果把一個I2C外圍器件,最高還達不到100kbps的與它相接,必然要導致設計的失敗。這樣的情況有很多,比如51單片機可以在匯流排接LCD,但為什麼這種LCD就不能掛在ARM的匯流排上,還有ARM7匯流排上可以外接個Winband的SD卡控制器,但為什麼這種控制器接不到ARM9 或是Xscale處理器上,這些都是問題。因此介面並不是一種簡單的連接,要看時序,要看參數。一個優秀的硬體工程師應該能夠在沒有參考方案的前提下設計出一個在成本和性能上更加優秀的產品,靠現有的方案,也要進行適當的可行性裁剪,但不是胡亂的來,我遇到一個工程師把方案中的5V變1.8V的DC晶元,直接更換成LDO,有時就會把CPU燒上幾個。前幾天還有人希望我幫忙把他們以前基於 PXA255平台的手持GPS設備做下程序優化,我問了一下情況,地圖是存在SD卡中的,而SD卡與PXA255的MMC控制器間採用的SPI介面,因此導致地圖讀取速度十分的慢,這種情況是設計中嚴重的缺陷,而不是程序的問題,因此我提了幾條建議,讓他們更新試下再說。因此想成為一個優秀的工程師,需要對系統整體性的把握和對已有電路的理解,換句話說,給你一套電路圖你終究能看明白多少,看不明白80%以上的話,說明你離優秀的工程師還差得遠哪。其次是電路的調試能力和審圖能力,但最最基本的能力還是原理圖設計PCB繪制,邏輯設計這塊。這是指的硬體設計工程師,從上面的硬體設計工程師中還可以分出 ECAD工程師,就是專業的畫PCB板的工程師,和EMC設計工程師,幫人家解決EMC的問題。硬體工程師再往上就是板級測試工程師,就是C語功底很好的硬體工程師,在電路板調試過程中能通過自已編寫的測試程序對硬體功能進行驗證。然後再交給基於操作系統級的驅動開發人員。
總之,硬體的內容很多很雜,硬體那方面練成了都會成為一個高手,我時常會給人家做下方案評估,很多高級硬體工程師設計的東西,經常被我一句話否定,因此工程師做到我這種地步,也會得罪些人,但硬體的確會有很多不為人知的東西,讓很多高級硬體工程師也摸不到頭腦。
那麼高級硬體件工程師技術技能都要具備那些東西哪,首先要掌握EDA設計的輔助工具類如Protel\ORCAD\PowperPCB\Maplux2 \ISE、VDHL語言,要能用到這些工具畫圖畫板做邏輯設計,再有就是介面設計審圖能力,再者就是調試能力,如果能走到總體方案設計這塊,那就基本上快成為資深工程師了。
硬體是要靠經驗,也要靠積累的,十年磨一劍,百年磨一針。 」
㈧ 為什麼51單片機一個機器周期有12個時鍾周期 這話什麼意思 機器周期是多少時鍾周期是生產單片機時就確定的嗎
一個機器周期=12個時鍾周期是生產時就確定的,原因就是因為51的執行速度相對較慢,MCU運行時是對外部時鍾進行了12分頻。
一般情況下,一個機器周期由若干個S周期(狀態周期)組成。通常用內存中讀取一個指令字的最短時間來規定CPU周期,(也就是 計算機通過內部或外部匯流排進行一次信息傳輸從而完成一個或幾個微操作所需要的時間)),一般由12個時鍾周期(振盪周期)組成,也是由6個狀態周期組成。而振盪周期=1秒/晶振頻率,因此單片機的機器周期=12秒/晶振頻率 。
(8)老周單片機擴展閱讀:
單片機指令周期:
CPU每取出一條指令並執行這條指令,都要完成一系列的操作,這一系列操作所需要的時間通常叫做一個指令周期。換言之指令周期是取出一條指令並執行這條指令的時間。
由於各條指令的操作功能不同,因此各種指令的指令周期是不盡相同的。
例如一條加法指令的指令周期同一條乘法指令的指令周期是不相同的。指令周期常常用若干個CPU周期數來表示,CPU周期也稱機器周期。
指令不同,所需的機器周期數也不同。對於一些簡單的單位元組指令,在取指令周期中,指令取出到指令寄存器後,立即解碼執行,不再需要其它的機器周期。對於一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。
㈨ 什麼是單片機的機器周期、震盪周期和指令周期他們之間是什麼關系
機器周期
計算機中,常把一條指令的執行過程劃分為若干個階段,每一個階段完成一項工作。
每一項工作稱為一個基本操作,完成一個基本操作所需要的時間稱為機器周期。
振盪周期
振盪周期,定義為時鍾脈沖的倒數(時鍾周期就是單片機外接晶振的倒數,例如12M的晶振,它的時鍾周期就是1/12us),是計算機中的最基本的、最小的時間單位。
在一個時鍾周期內,CPU僅完成一個最基本的動作。時鍾脈沖是計算機的基本工作脈沖,控制著計算機的工作節奏。時鍾頻率越高,工作速度就越快。
指令周期
執行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期也不同。
三者的關系:振盪周期是最小單位,機器周期需要1個或多個振盪周期,指令周期需要1個或多個機器周期;機器周期指的是完成一個基本操作的時間,這個基本操作有時可能包含匯流排讀寫,因而包含匯流排周期,但是有時可能與匯流排讀寫無關,所以,並無明確的相互包含的關系。
(9)老周單片機擴展閱讀
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
發展歷史
單片機(Microcontrollers)誕生於1971年,經歷了SCM、MCU、SoC三大階段,早期的SCM單片機都是8位或4位的。其中最成功的是INTEL的8051,此後在8051上發展出了MCS51系列MCU系統。基於這一系統的單片機系統直到現在還在廣泛使用。
隨著工業控制領域要求的提高,開始出現了16位單片機,但因為性價比不理想並未得到很廣泛的應用。
90年代後隨著消費電子產品大發展,單片機技術得到了巨大提高。隨著INTEL i960系列特別是後來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,並且進入主流市場。
而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。高端的32位Soc單片機主頻已經超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。
當代單片機系統已經不再只在裸機環境下開發和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的Windows和Linux操作系統。
㈩ stc單片機的優缺點
一、stc單片機的優點:
1、下載燒錄程序用串口方便好用,容易上手,擁有大量的學習資料及視頻,最著名的要屬於昌暉儀表網的那個視頻了,好多對單片機有興趣的朋友都是通過這個視頻入門的,同時具有寬電壓:5.5~3.8V,2.4~3.8V, 低功耗設計:空閑模式,掉電模式(可由外部中斷喚醒)。
2、STC單片機具有在應用編程,調試起來比較方便;帶有10位AD、內部EEPROM、可在1T/機器周期下工作,速度是傳統51單片機的8~12倍,價格也較便宜。
3、4通道捕獲/比較單元,STC12C2052AD系列為2通道,也可用來再實現4個定時器或4個外部中斷,2個硬體16位定時器,兼容普通8051的定時器。4路PCA還可再實現4個定時器,具有硬體看門狗、高速SPI通信埠、全雙工非同步串列口,兼容普通8051的串口。
4、同時還具有先進的指令集結構,兼容普通8051指令集。
二、stc單片機的缺點:功耗較高,5V供電,其次,stc單片機內集成資源少。
STC單片機是宏晶科技生產的高速、低功耗、超強抗干擾的新一代8051單片機51單片機。指令代碼完全兼容傳統8051,但速度快8-12倍,內部集成 MAX810專用復位電路。4路PWM 8路高速10位A、D轉換,針對電機電機的供應商控制,強干擾場合,成為繼51單片機後一個全新系列單片機。