月薪9k電子工程師:我把(被)單片機(jī)玩死了…
首先,自我介紹一下:電子工程師一枚,1986年生,09年畢業(yè),在京工作四年,月薪9K。主要是因?yàn)樽约罕容^懶,不愿意做比較累的工作,不然待遇還會(huì)更高,不過(guò)那樣的話(huà)生活就沒(méi)意思了,我喜歡慢慢的享受生活。
之所以把自己的經(jīng)歷寫(xiě)出來(lái),一是無(wú)聊,最近項(xiàng)目剛剛做完;二是經(jīng)常逛貼吧,在年輕人身上經(jīng)??吹阶约寒?dāng)年的影子,所以不希望他們走彎路。那么現(xiàn)在,就讓時(shí)間回到2009年的夏天。
當(dāng)時(shí)剛從大學(xué)畢業(yè),專(zhuān)業(yè)是微電子學(xué)。嚴(yán)格地說(shuō),我的專(zhuān)業(yè)是制作芯片,而我現(xiàn)在的工作是應(yīng)用芯片,已經(jīng)走偏了。不過(guò)沒(méi)辦法,這個(gè)專(zhuān)業(yè)是學(xué)校新開(kāi)的,各個(gè)老師都是學(xué)校東拼西湊過(guò)來(lái)的,那種感覺(jué)就像用韭菜和茄子做出來(lái)的大拌菜一樣,吃起來(lái)怪怪的。我到快畢業(yè)都沒(méi)想好該怎么找工作,剛好這個(gè)時(shí)候宿舍的一個(gè)哥們剛剛參加了一個(gè)培訓(xùn)班回來(lái)。他覺(jué)得很好,因?yàn)閯偤秘?fù)責(zé)培訓(xùn)的張老師來(lái)學(xué)校講課,于是跟我說(shuō):去MCU起航吧,那里還不錯(cuò)!
我就想無(wú)頭蒼蠅忽然遇到一扇窗戶(hù)一樣,畢業(yè)了家也沒(méi)回,直接背上行李去培訓(xùn)部了。慶幸的是路上并不孤單,班里的同學(xué)凱凱、安保和超哥都一起去了。
地點(diǎn)在燕郊的創(chuàng)業(yè)大廈,食宿條件很艱苦。住宿的地方是租的一個(gè)兩居室,里面放滿(mǎn)了上下鋪,還有其他來(lái)參加培訓(xùn)的同學(xué),他們來(lái)自各個(gè)地方。在之后的幾個(gè)月里,我和他們結(jié)下了深厚的友情。
20個(gè)人,分成了四組,每組負(fù)責(zé)不同的項(xiàng)目。我在第一組,要做一個(gè)波形發(fā)生器出來(lái);凱凱在第二組,做一個(gè)具有IC卡讀寫(xiě)功能的智能水表;安保在第三組,做一個(gè)帶有語(yǔ)音提示功能的溫度報(bào)警器;超哥在第四組,做一個(gè)按鍵可控的數(shù)字電源。
剛剛分到任務(wù)我有點(diǎn)暈,因?yàn)閱纹瑱C(jī)我都還沒(méi)摸過(guò),就要做東西,這是不是有點(diǎn)不合適?雖然在大學(xué)里學(xué)過(guò)課程,但完全是理論課,東西都沒(méi)見(jiàn)過(guò),更別說(shuō)做東西了。我估計(jì)凱凱他們跟我一樣心理犯嘀咕,搞不清楚什么狀況。但想想之前來(lái)參加的宿舍那哥們,他基礎(chǔ)跟我差不多,但是他能搞定,我應(yīng)該問(wèn)題不大,于是咬咬牙,開(kāi)始搞了。
第一步,項(xiàng)目需求分析,為期一周。老張(就是張老師,我們暗地里習(xí)慣稱(chēng)他為老張)在北京工作了近十年,各個(gè)公司都呆過(guò),正規(guī)的,不正規(guī)的都熟悉,所以要求我們第一步先去做需求分析,知道自己負(fù)責(zé)的項(xiàng)目在市場(chǎng)上有沒(méi)有空間,該如何定位,技術(shù)指標(biāo)如何確定,原理框圖如何繪制。
于是,我們開(kāi)始了瘋狂的.......上網(wǎng),是的上網(wǎng)查資料。凡是和波形發(fā)生器相關(guān)的內(nèi)容,都下載下來(lái),然后共享。相關(guān)的廠(chǎng)家、型號(hào)、技術(shù)指標(biāo)、設(shè)計(jì)方 案、參照代碼、市場(chǎng)分析等等等等,就記得那段時(shí)間是很瘋狂的一段日子。我們像公司員工一樣簽到、簽退,卻要比他們更辛苦,因?yàn)槲覀兺砩?1點(diǎn)才離開(kāi)實(shí)驗(yàn) 室,是每天!大腦像運(yùn)行到極致的CPU一樣,用力的查看著每一條可能有用的信息,每一次呼吸都感覺(jué)自己很累,不確定今天能得到什么結(jié)果,也不知道明天會(huì)怎 么樣。于是,我不停的喝水,讓自己有更多的上廁所的時(shí)間,這樣可以多休息一會(huì)兒。
每周休息一天,日子很累,但卻充實(shí)。我已經(jīng)明顯感覺(jué)到和波形發(fā)生器相關(guān)的各種關(guān)鍵詞都充斥在我腦子里了,DDS、頻率范圍、單極性波形、雙極性波形、調(diào)節(jié)精度、輸出波形峰值等等。但這些還不夠,因?yàn)槲覀兊玫降倪@些信息都是搜集來(lái)的,并不確定可行性。一切的一切,需要下周一老張審核我們的方案。而我們的心態(tài),也從最開(kāi)始的畏懼,逐漸被越來(lái)越多的疑問(wèn)代替,然后抑制不住的想知道答案。
終于,開(kāi)始方案審核了,老張讓我們每人挨個(gè)講解了一下自己的需求分析。然后指出不足,順便夸了幾句,給我們?cè)黾恿它c(diǎn)信心。最后給出了完整的方案。
第 二步,開(kāi)始動(dòng)手?NO!老張說(shuō),去逛逛北京城吧!What?我們愣了.....好吧,最后才知道,原來(lái)是去中發(fā)電子市場(chǎng)采購(gòu)。可以這么說(shuō),在北京搞電子 的,沒(méi)有人不知道中發(fā)電子市場(chǎng),你能想到的一切器件,在這都能找到。而且,畢竟巧婦難為無(wú)米之炊,我們動(dòng)手,總要有器件才行啊。所以,根據(jù)方案列出器件清 單。面包板有了,是老張?zhí)峁┑?,別的東西自己解決。于是,一群菜鳥(niǎo),選了一個(gè)陽(yáng)光明媚的日子,興沖沖的來(lái)到了中發(fā)電子市場(chǎng),任人宰割.......記得那 天,我買(mǎi)完電阻,路過(guò)一家二手儀器儀表的店鋪,看著里面慢慢的儀器,不自主的就走了進(jìn)去。老板以為我是某個(gè)學(xué)校的學(xué)生,隨口跟我聊了幾句,我問(wèn)他二 手示波器多少錢(qián),他說(shuō)看情況,便宜的三四千,好一點(diǎn)的七八千。忽然心里一動(dòng),又問(wèn)他有沒(méi)有波形發(fā)生器,他說(shuō)有,然后告訴我在哪,怎么用。我很認(rèn)真的看了很 久,心想這就是我要做的東西啊。
第三步,用匯編語(yǔ)言熟悉單片機(jī)的基本功能。是的,你沒(méi)看錯(cuò),是匯編語(yǔ)言!就是說(shuō),之后的項(xiàng)目也要用匯編去完成。當(dāng)時(shí)沒(méi)有想明白,但是當(dāng)我一個(gè)月后熟練的掌 握51的底層結(jié)構(gòu)的時(shí)候,我已經(jīng)有點(diǎn)懂了。先從ORG開(kāi)始,然后是MAIN...再然后MOVE來(lái)MOVE去,別人怎么寫(xiě),我就抄過(guò)來(lái),背下來(lái),然后反復(fù) 寫(xiě)幾遍,竟然就懂了。
從對(duì)單片機(jī)的一無(wú)所知,到跌跌撞撞不小心滾進(jìn)單片機(jī)的大門(mén),就這么發(fā)生了。那幾天是異常興奮的,我感覺(jué)我就是萬(wàn)能的神,我可以控制一切芯片。每段代碼,我寫(xiě)了好多遍,然后又下載了好多遍,每一次成功、失敗的過(guò)程都激勵(lì)著我前進(jìn)。
記得有一天在調(diào)試數(shù)碼管,代碼改了一下,重新燒錄,結(jié)果整個(gè)電路忽然就不工作了。我愣了,不至于啊,改動(dòng)不是很大,就算有問(wèn)題,也不至于整個(gè)電路沒(méi)反應(yīng)。
于是我花了一個(gè)下午查看代碼、檢查電路都沒(méi)找到問(wèn)題。我問(wèn)阿海,他瞄了我一眼說(shuō),你電路有問(wèn)題吧...我無(wú)語(yǔ),我的電路我清楚,不應(yīng)該的。到了晚上,** 點(diǎn)的時(shí)候,我想再下載一次試試吧,代碼沒(méi)動(dòng),燒錄進(jìn)去,結(jié)果忽然就好了。我瞬間愣了一下,放佛想到了什么,馬上打開(kāi)AT89S52的器件手冊(cè),第一頁(yè)的一個(gè)參數(shù)解決了我的所有疑惑:該芯片的flash區(qū)擦寫(xiě)次數(shù)為10000次。換句話(huà)說(shuō),因?yàn)槎啻尾翆?xiě)程序,導(dǎo)致這塊單片機(jī)的程序存儲(chǔ)區(qū)壽終正寢,已經(jīng)快被我玩死了!
現(xiàn)在還記得當(dāng)時(shí)興奮的感覺(jué),可能是因?yàn)橐蝗函偗偘d癲的年輕人湊在一起,所以學(xué)習(xí)的過(guò)程并沒(méi)有覺(jué)得多累,反而很嗨。當(dāng)時(shí)用的ATMEL公司的89S52單片 機(jī),還是用并口線(xiàn)下載的。先從點(diǎn)亮LED開(kāi)始,然后是蜂鳴器,串口掃描,串口中斷,鍵盤(pán)和燈,鍵盤(pán)控制數(shù)碼管,軟件延時(shí),按鍵消抖等等。隨手放幾個(gè)當(dāng)年的代碼,現(xiàn)在看來(lái),真的是慘不忍睹。[!--empirenews.page--]
這是個(gè)串口掃描的:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#20H
MOV TL1,#0FDH
MOV TH1,#0FDH
MOV PCON,#00H
SETB TR1
MOV SCON,#50H
LOOP: JB TI,FH
JB RI,SD
SJMP LOOP
SD: CLR RI
MOV A,SBUF
INC A
MOV SBUF,A
FH: CLR TI
JMP LOOP
END
-------------------------------------
這是個(gè)定時(shí)器定時(shí)的:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INTER
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#01H
MOV R2,#0FH
ACALL INTER1
HERE: JMP HERE
INTER1: MOV TL0,#0BCH
MOV TH0,#03CH
SETB EA
SETB ET0
SETB TR0
RET
INTER: MOV TL0,#0BCH
MOV TH0,#03CH
DJNZ R2,FAN
CPL P1.0
MOV R2,#0FH
FAN: RETI
這是個(gè)按鍵控制數(shù)碼管顯示的:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: CLR P2.0
MOV P1,#0FEH
MOV A,P1
CJNE A,#0FEH,SAO1
MOV P1,#0FDH
MOV A,P1
CJNE A,#0FDH,SAO2
MOV P1,#0FBH
MOV A,P1
CJNE A,#0FBH,SAO3
MOV P1,#0F7H
MOV A,P1
CJNE A,#0F7H,SAO4
LJMP MAIN
SAO1: ACALL DELAY
MOV A,P1
CJNE A,#0FEH,PAN1
LJMP MAIN
PAN1: CJNE A,#0EEH,PD1
MOV A,#00H
LJMP SEND
PD1: CJNE A,#0DEH,PD2
MOV A,#01H
LJMP SEND
PD2: CJNE A,#0BEH,PD3
MOV A,#02H
LJMP SEND
PD3: MOV A,#03H
LJMP SEND
SAO2: ACALL DELAY
MOV A,P1
CJNE A,#0FDH,PAN2
LJMP MAIN
PAN2: CJNE A,#0EDH,PD4
MOV A,#04H
LJMP SEND
PD4: CJNE A,#0DDH,PD5
MOV A,#05H
LJMP SEND
PD5: CJNE A,#0BDH,PD6
MOV A,#06H
LJMP SEND
PD6: MOV A,#07H
LJMP SEND
SAO3: ACALL DELAY
MOV A,P1
CJNE A,#0FBH,PAN3
LJMP MAIN
PAN3: CJNE A,#0EBH,PD7
MOV A,#08H
LJMP SEND
PD7: CJNE A,#0DBH,PD8
MOV A,#09H
LJMP SEND
PD8: CJNE A,#0BBH,PD9
MOV A,#0AH
LJMP SEND
PD9: MOV A,#0BH
LJMP SEND
SAO4: ACALL DELAY
MOV A,P1
CJNE A,#0F7H,PAN4
LJMP MAIN
PAN4: CJNE A,#0E7H,PD10
MOV A,#0CH
LJMP SEND
PD10: CJNE A,#0D7H,PD11
MOV A,#0DH
LJMP SEND
PD11: CJNE A,#0B7H,PD12
MOV A,#0EH
LJMP SEND
PD12: MOV A,#0FH
LJMP SEND
SEND: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
LJMP MAIN
DELAY: MOV R7,#100
D1: MOV R6,#50
D2: DJNZ R6,D2
DJNZ R7,D1
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,80H,0C6H,0C0H,86H,8EH,7FH
END
現(xiàn)在看來(lái),寫(xiě)的很簡(jiǎn)陋。不過(guò)對(duì)于當(dāng)時(shí)的自己來(lái)說(shuō),已經(jīng)很知足了。
當(dāng)時(shí)的我們,沒(méi)有開(kāi)發(fā)板,只有一塊面包板。所有要用的東西,都是自己焊接的??赡艿⒄`了很多時(shí)間,但是對(duì)后來(lái)工作中電路的檢查能力,起到了很好的鍛煉。因?yàn)槲覀兪謩?dòng)焊接每一個(gè)LED,每一個(gè)電阻,每一個(gè)按鍵,接觸了布局布線(xiàn)。所以導(dǎo)致我們對(duì)電路的敏感度非常高,在后來(lái)的工作中,檢查故障電路的時(shí)候可以很快推斷出故障出現(xiàn)的位置。這是那些整天叫囂仿真萬(wàn)能的人體會(huì)不到的!!!這里還是要說(shuō)一句,個(gè)人觀(guān)點(diǎn):初學(xué)者少碰protues仿真,什么時(shí)候用?當(dāng)你已經(jīng)完全學(xué)會(huì)單片機(jī),在項(xiàng)目中要驗(yàn)證代碼和原理可行性的時(shí)候再去仿真。想通過(guò)protues仿真來(lái)學(xué)習(xí)單片機(jī),這真的是笑話(huà)了!
第四步,真的要?jiǎng)邮珠_(kāi)始做了。玩真的!具體指標(biāo)記不清了,大概是:4×4矩陣鍵盤(pán)控制,數(shù)碼管顯示,頻率10HZ~1000HZ按鍵可控,三角波、正弦 波、方波可選。難點(diǎn)主要在頻率可通過(guò)按鍵控制上,就是說(shuō)從10到1000,我隨便輸入一個(gè)數(shù)字,輸出端都要給出相應(yīng)的頻率。頻率是通過(guò)定時(shí)器定時(shí)中斷控制 的,這就要求有一個(gè)算法,能根據(jù)輸入值,計(jì)算出每次頻率更新時(shí),需要賦給的定時(shí)器初值。這涉及到16位的除法運(yùn)算,匯編里面的除法器貌似只有8位,不夠 用。沒(méi)辦法,我們到處找16位除法的算法,最后用減法循環(huán)模擬了一個(gè),效果還不錯(cuò)。
最快的是阿海,波形發(fā)生器的每一步都是他先規(guī)劃好,做出來(lái),然后我們幾個(gè)再去模仿。當(dāng)然,不是單純的復(fù)制。矩陣鍵盤(pán)的掃描上,我跟他的算法不一樣,DAC0832的驅(qū)動(dòng)電路,我倆也各不相同。但是,不可否認(rèn)的是,他給我樹(shù)立了很好的榜樣的力量,讓我知道,這個(gè)方向,這個(gè)思路是可行的。
記不清哪一天了,是個(gè)下午。我愣愣的把示波器打開(kāi),檢測(cè)輸出波形,當(dāng)看到正弦波斷斷續(xù)續(xù)輸出的時(shí)候,我傻了,原來(lái)我真的可以做出來(lái)。而那一天,距離我們開(kāi)始做需求分析,不到45天。
后面的事情,很順利了。大家的項(xiàng)目陸陸續(xù)續(xù)都出來(lái),然后坐在一起進(jìn)行經(jīng)驗(yàn)交流。還有件事比較重要,就是學(xué)習(xí)C語(yǔ)言。雖然匯編效率高,但畢竟移植性太差,已經(jīng)慢慢沒(méi)落了,而C語(yǔ)言的生命力還很強(qiáng),很多地方都能用到。
學(xué)完C語(yǔ)言,開(kāi)始接觸AVR和430單片機(jī)。在51里面摸爬滾打了一個(gè)月,可以說(shuō),我們是把51揉碎了,一點(diǎn)一點(diǎn)學(xué)完的,跟那種自學(xué),仿真,或者看視頻的 效果完全不一樣。當(dāng)我拿到430的開(kāi)發(fā)板的時(shí)候,我只用了3天時(shí)間去熟悉它。前面一天熟悉開(kāi)發(fā)環(huán)境和開(kāi)發(fā)軟件,后面兩天看相關(guān)例程。因?yàn)槲覀儎?dòng)手過(guò)、實(shí)戰(zhàn) 過(guò)、焊接過(guò)、調(diào)試過(guò),當(dāng)我們?cè)偃タ催@些高級(jí)單片機(jī)的時(shí)候,真的是一種輕而易舉、水到渠成的感覺(jué)。[!--empirenews.page--]
總結(jié):很多人學(xué)51學(xué)的很倉(cāng)促,覺(jué)得這是個(gè)很基本的東西,快沒(méi)人用了,簡(jiǎn)單過(guò)一下就行。大錯(cuò)特錯(cuò)!上世紀(jì)80年代,intel將8051的內(nèi)核技術(shù)轉(zhuǎn)讓給 各個(gè)廠(chǎng)家,這才有了現(xiàn)在的各種高級(jí)單片機(jī)。可以說(shuō)430和AVR的內(nèi)核都是51,只是多了一些寄存器和功能模塊而已。記得逛一個(gè)論壇的時(shí)候,一位工作多年 的老工程師說(shuō)了這樣一句話(huà):51,妙用無(wú)窮!現(xiàn)在我才有一點(diǎn)體會(huì)到這種感覺(jué),可以這樣說(shuō),如果你能把51單片機(jī)吃透,記住,是吃透,市面上的所有單片機(jī), 你都可以信手拈來(lái)!
大概是11月份,進(jìn)入找工作的階段了。說(shuō)起來(lái)比較丟人,因?yàn)槲倚愿裆媳容^內(nèi)向,面試的時(shí)候表現(xiàn)的不是很好,錯(cuò)過(guò)了一些機(jī)會(huì)。找到的第一份工作是在一家醫(yī)療 器械的小公司,月薪只有2500,因?yàn)楫?dāng)時(shí)已經(jīng)畢業(yè)幾個(gè)月了,不想再花家里的錢(qián),所以有點(diǎn)著急。而且,試用的階段也是比較戲劇性的。為什么?
公司那邊同意給我一個(gè)試用的機(jī)會(huì),前提是把它們現(xiàn)有產(chǎn)品里面的一個(gè)bug改過(guò)來(lái),限時(shí)一個(gè)月。當(dāng)我打開(kāi)他們的代碼的時(shí)候,我樂(lè)了!為什么?可能這個(gè)問(wèn)題對(duì)于別的新人來(lái)說(shuō)很麻煩,但對(duì)我來(lái)說(shuō),太簡(jiǎn)單了。因?yàn)樗麄兊拇a竟然是用匯編語(yǔ)言寫(xiě)的!可能這就是緣分吧。
那個(gè)時(shí)候的我對(duì)匯編熟練到了什么狀態(tài)?我可以看代碼不需要注釋!當(dāng)然現(xiàn)在不行了,畢竟好幾年沒(méi)用了。也很感謝當(dāng)時(shí)項(xiàng)目組的王公,幫我講解產(chǎn)品的原理圖,我才能快速的明白電路原理,另外,程序風(fēng)格寫(xiě)的非常好。果然,半個(gè)月不到,問(wèn)題解決了,我也順利入職了。
后面的工作,比我想象的輕松很多。因?yàn)楣拘?,產(chǎn)品單一,所以研發(fā)的事情一拖再拖。主要工作就是組裝機(jī)器、產(chǎn)品配送、故障電路調(diào)試、還有售后維修。周末偶 爾回到燕郊培訓(xùn)部,感受一下當(dāng)初學(xué)習(xí)的氣息,順便拿幾片不要錢(qián)的芯片。也會(huì)跟找到工作的同學(xué)聊聊工作的內(nèi)容,發(fā)現(xiàn)各有搞笑和無(wú)奈的地方。
培訓(xùn)部有一點(diǎn)很好,即使你離開(kāi)了,想要什么資料,它都會(huì)幫你找來(lái)。記得10年初的時(shí)候想學(xué)一下cadence這個(gè)軟件,問(wèn)MCU起航的朋友有沒(méi)有相關(guān)資 料。結(jié)果給我發(fā)過(guò)來(lái)一個(gè)2G的系列視頻教程,是一個(gè)叫于博士的大神制作的視頻教程,從原理圖到PCB都有,把我樂(lè)壞了。因?yàn)楫?dāng)時(shí)這個(gè)教程在網(wǎng)上還沒(méi)傳開(kāi), 所以顯得很珍貴。
終于,待了不到一年,大概是2010年**月份。做夠了文案整理和國(guó)標(biāo)的研究,我感覺(jué)到了自己的退化,這不是我應(yīng)該做的。于是我提出了辭職,裸辭,就是說(shuō) 還沒(méi)找好下家。剛好趕上當(dāng)時(shí)換住的地方,一下子交了很多房租和押金,弄得自己很拮據(jù)。所以,這里奉勸各位,辭職以前,盡量找好下家,不然的話(huà)后果很?chē)?yán)重。
總結(jié):1、很多人寫(xiě)程序風(fēng)格很爛,什么注釋也不加。這是很坑人的,我可以負(fù)責(zé)任的告訴你,就算是自己寫(xiě)的代碼,如果沒(méi)有注釋和良好的風(fēng)格,三個(gè)月后,保證你自己也看不懂。這里貼一段當(dāng)年入職時(shí)調(diào)試的代碼,懂的人自然就懂了,知道寫(xiě)的風(fēng)格有多好:
;***************************************
keyvalue data 30h
power data 31h ;理療輸出功率變量
time data 32h ;治療時(shí)間存儲(chǔ)變量
timepal data 33h ;輸出功率定時(shí)參數(shù)低位
timepah data 34h ;輸出功率定時(shí)參數(shù)高位
timelastset data 35h ;備份用戶(hù)設(shè)置治療時(shí)間
STORE_TIME data 36h ;預(yù)熱開(kāi)始定時(shí)參數(shù)位置值存儲(chǔ)空間
checkkey:
jnb keyflag,setbex1 ;有鍵盤(pán)中斷進(jìn)入鍵盤(pán)處理程序,沒(méi)有則跳轉(zhuǎn)
mov r1,keyvalue
k1: cjne r1,#0feh,k2
lcall powinc ;跳轉(zhuǎn)到功率增加子程序段
ajmp kout
k2: cjne r1,#0fdh,k3
lcall powdec ;跳轉(zhuǎn)到功率減少子程序段
ajmp kout
k3: cjne r1,#0fbh,k4
lcall timeinc ;跳轉(zhuǎn)到時(shí)間增加子程序段
ajmp kout
k4: cjne r1,#0f7h,k5
lcall timedec ;跳轉(zhuǎn)到時(shí)間減少子程序段
ajmp kout
k5: cjne r1,#0efh,setbex1
lcall onoff ;跳轉(zhuǎn)到onoff子程序段
kout: clr keyflag ;清除鍵盤(pán)中斷標(biāo)志
lcall playkeysound ;播放按鍵音
; lcall d100ms
lcall d100ms ;每秒最多響應(yīng)3次按鍵
setb ex1 ;開(kāi)鍵盤(pán)中斷
2、小公司鍛煉人,雖然待遇一般,但是接觸的東西多。一旦你換到一個(gè)新的環(huán)境,你會(huì)發(fā)現(xiàn)你比別人已經(jīng)優(yōu)秀太多了。
3、換工作的時(shí)候一定要謹(jǐn)慎,盡量找好下家再辭職,不然的話(huà)自己很被動(dòng)。
當(dāng)時(shí)在網(wǎng)上投了很多簡(jiǎn)歷,記得有一天面試回來(lái)在公交車(chē)上。手機(jī)忽然響了,接通以后是一個(gè)中年男人的聲音:
你會(huì)用單片機(jī)么,我們這需要單片機(jī)工程師,你過(guò)來(lái)吧!
我樂(lè)了,心想這公司招人的方式也太直接了,我就問(wèn)他:
您那用的是什么單片機(jī)啊,51,430還是AVR?
誰(shuí)知道他說(shuō)了一句:
你說(shuō)的都不對(duì),430不是單片機(jī),是DSP!
我愣了,心理納悶,這是哪路神仙在玩我啊,430用了好幾個(gè)月,明明是單片機(jī),怎么到他那變成DSP了。直接說(shuō)他不對(duì)吧,肯定不合適,會(huì)讓人很沒(méi)面子,于 是問(wèn)了問(wèn)面試的地點(diǎn),第二天就過(guò)去了。誰(shuí)知道這一次,迎接我的,是一個(gè)超大的坑!坑爹的公司啊!當(dāng)然了,這是后話(huà),當(dāng)時(shí)我的愿望還是很美好的。
面試的過(guò)程很詭異,現(xiàn)在想想,他貌似沒(méi)有問(wèn)我什么技術(shù)問(wèn)題,當(dāng)時(shí)的場(chǎng)景更像是一個(gè)傳銷(xiāo)人員給我**。大致情況就是,他們公司之前是做工程項(xiàng)目的,比如修路 什么的。企業(yè)很大,去年的利潤(rùn)是十幾個(gè)億。但是是勞動(dòng)力密集型企業(yè),現(xiàn)在想轉(zhuǎn)做技術(shù)密集型,所以準(zhǔn)備成立一個(gè)部門(mén),進(jìn)駐電子行業(yè),將來(lái)你們都會(huì)成為這個(gè)部 門(mén)的骨干。前期待遇不是很高,月薪只有2500,但是后面部門(mén)做起來(lái)......可以想象,沒(méi)經(jīng)過(guò)什么風(fēng)雨的我,一下子就被那大叔的十幾個(gè)億吸引了,滿(mǎn)腦 子都是錢(qián),貌似沒(méi)怎么考慮就答應(yīng)了。
第二天去他們辦公室,心涼了一半。真的是個(gè)辦公室啊,只有不到20平米,焊接的試驗(yàn)臺(tái)都沒(méi)有,只是一個(gè)茶幾,上面放了一個(gè)尖嘴的烙鐵。尖嘴烙鐵,貌似只有 入門(mén)的學(xué)生或者修理工人習(xí)慣用,正經(jīng)調(diào)試電路的人都是用平口烙鐵的。里面三個(gè)人,一個(gè)葉工負(fù)責(zé)帶頭,兩個(gè)小弟負(fù)責(zé)幫忙,其中一個(gè)人拿出本51的指令集,用 手指著上面一個(gè)指令問(wèn)我這是什么意思,貌似是想考考我。我瞄了一眼,順嘴一說(shuō),他就沒(méi)話(huà)了。雖然過(guò)去一年有點(diǎn)懈怠,但基本功還在。[!--empirenews.page--]
當(dāng)時(shí)貌似是在做一個(gè)單片機(jī)定時(shí)控制繼電器的一個(gè)設(shè)備,想用弱電控制強(qiáng)電的開(kāi)關(guān)。難度不大,主要是安全問(wèn)題需要注意。據(jù)說(shuō)去之前,兩個(gè)小弟里面的一個(gè)已經(jīng)做了快半年還沒(méi)做好,用的還是51單片機(jī)。劉工(就是昨天面試我那個(gè))問(wèn)我:
你擅長(zhǎng)哪個(gè)單片機(jī),需要多久能搞定?
我看了下他們的原理圖,以及需要實(shí)現(xiàn)的功能說(shuō):
51,430,AVR都能做,十個(gè)工作日左右吧。
劉工想了想說(shuō):別用51了,用高級(jí)一點(diǎn)的單片機(jī),還能練練兵。
我說(shuō):那就AVR吧,下載調(diào)試也方便。
第二天我就后悔了,不是說(shuō)做不了。正常的實(shí)驗(yàn)環(huán)境,是一點(diǎn)問(wèn)題都沒(méi)有的,問(wèn)題是他這里不正常,什么都沒(méi)有。沒(méi)有示波器,沒(méi)有試驗(yàn)臺(tái),沒(méi)有面包板,沒(méi)有下載線(xiàn)。僅有的一個(gè)烙鐵還是尖嘴的,還有一些零散的電阻和LED,以及控制電路要用到的器件。
我擦了下冷汗,算了算要用到的器件說(shuō):我去趟中發(fā)....
下載線(xiàn)我自己學(xué)習(xí)的時(shí)候買(mǎi)了一條,主要用他們提供的一塊液晶。AVR單片機(jī)控制的,具體型號(hào)記不清了,不過(guò)底層驅(qū)動(dòng)都寫(xiě)好了,我只負(fù)責(zé)應(yīng)用。然后多出來(lái)的 幾個(gè)引腳負(fù)責(zé)開(kāi)關(guān)控制??偹阍诘谑畟€(gè)工作日搞定了。這個(gè)時(shí)候,葉工有事請(qǐng)了半個(gè)月的假,又發(fā)生了一件讓我想不到的事.....
貌似聘請(qǐng)葉工的月薪是5K多一些,而我們幾個(gè)人都是2.5K,然后劉工感覺(jué)我的工作能力可以頂替葉工,畢竟這十個(gè)工作日我解決了很多問(wèn)題。而且那兩個(gè)小弟也開(kāi)始向我靠攏,于是,劉工私下主動(dòng)辭退了葉工,這讓我們很是詫異,原來(lái)商場(chǎng)如戰(zhàn)場(chǎng)是真的.....
后面的工作,進(jìn)入了研發(fā)的節(jié)奏,這是我想要的。定時(shí)控制完了之后,有個(gè)項(xiàng)目,是要給一個(gè)倉(cāng)庫(kù)做一個(gè)溫度檢測(cè)系統(tǒng)。倉(cāng)庫(kù)很大,所以要用到zigbee技術(shù), 放置許多無(wú)線(xiàn)結(jié)點(diǎn),然后數(shù)據(jù)上傳到電腦上。我對(duì)zigbee比較感興趣,于是著重看了很多相關(guān)的東西。最后發(fā)現(xiàn),這個(gè)技術(shù)對(duì)應(yīng)到單片機(jī)上,只是一些指令的 控制,畢竟讓一個(gè)單片機(jī)工程師整天研究通信頻率、通信協(xié)議不太正常。于是劉工申請(qǐng)了幾塊模塊,讓我們進(jìn)行測(cè)試。
我選擇了mega8做為控制核心,一是調(diào)試方便,二是芯片體積小,引腳少用到溫度檢測(cè)上比較合適,第三,mega8上面有SPI接口,直接就能驅(qū)動(dòng)zigbee模塊,省得模擬了。
那兩個(gè)小弟對(duì)此一片空白,于是我又去了一趟中發(fā),買(mǎi)了幾片mega8,焊接mega8的調(diào)試板,還有下載線(xiàn),杜邦線(xiàn)?;貋?lái)以后,又找了塊黑板,給他們講解了一下mega8如何使用。戲劇的是,去年這個(gè)時(shí)候我還在苦逼的學(xué)習(xí),今年已經(jīng)可以給人講課了。
模塊調(diào)試的很順利,一個(gè)星期就調(diào)試通了,但是越來(lái)越感覺(jué)那個(gè)劉工人品有問(wèn)題。之前辭掉葉工是一方面,后面許諾的很多福利都拿不到,然后又把銷(xiāo)售和研發(fā)放在 一個(gè)辦公室,我一天有三分之一的時(shí)間都在聽(tīng)那個(gè)銷(xiāo)售哥們打電話(huà),根本沒(méi)辦法正常思考,最坑爹的是工資要拖欠三個(gè)月才發(fā)。反應(yīng)了很多次,無(wú)果。
某天的一個(gè)下午,我給他們演示了如何把采集到的溫度數(shù)據(jù)無(wú)線(xiàn)接收后,上傳到電腦上,然后開(kāi)始和軟件部門(mén)的同事商量如何編寫(xiě)上位機(jī)收集串口數(shù)據(jù)的事情。劉工加入了我們的談話(huà),然后徹底毀了我對(duì)他的印象...
軟件部的同事之前只會(huì)從數(shù)據(jù)庫(kù),或者固定的文件讀取數(shù)據(jù),這次我把數(shù)據(jù)發(fā)到串口上以后,他們不會(huì)采集,或者說(shuō)他們之前沒(méi)做過(guò)類(lèi)似的東西。
這個(gè)時(shí)候,劉工插話(huà)了:是不是跟進(jìn)制有關(guān),換成二進(jìn)制會(huì)不會(huì)好一些?
我......
劉工:要不八進(jìn)制也試一下。
我看了看軟件部沉默的同事,說(shuō):劉工,這個(gè)跟進(jìn)制沒(méi)關(guān)系,是我們兩邊現(xiàn)在對(duì)接不上。
劉工:真的么,換成十六進(jìn)制呢?
我無(wú)語(yǔ)了,現(xiàn)在也想不起來(lái)那天是怎么結(jié)束的了,只是記得當(dāng)時(shí)心里就累了,萌生了想走的想法,于是開(kāi)始投簡(jiǎn)歷。
總結(jié):很多公司習(xí)慣返聘一些退休的高級(jí)員工,他們回來(lái)工作不是為了錢(qián),只是為了找點(diǎn)事情做,所以工資開(kāi)的很低無(wú)所謂。但這對(duì)應(yīng)屆生就有一個(gè)不好的影響,公 司在招人的時(shí)候會(huì)說(shuō):我們這個(gè)德高望重的員工都拿這么點(diǎn)錢(qián),你覺(jué)得你可以拿多少? 我相信很多應(yīng)屆生都不知道該怎么回答。
另外,面試的時(shí)候千萬(wàn)不要隨便相信一些不知名公司吹出來(lái)的牛皮,公司利潤(rùn)再多,發(fā)不到你手上也沒(méi)用。而且,如果方便的話(huà),可以適當(dāng)要求參觀(guān)下辦公地點(diǎn),一定要清楚地知道會(huì)不會(huì)拖欠工資。
越往后面試,越會(huì)覺(jué)得面試很直接。為什么?公司找你來(lái)是做項(xiàng)目的,行就是行,不行就是不行。而面試官基本都是懂技術(shù)的,幾句話(huà)就能問(wèn)出你的深淺,你前面說(shuō) 的再好聽(tīng),技術(shù)不會(huì)別人也很難給你機(jī)會(huì)。因?yàn)槟阋呀?jīng)不是應(yīng)屆生了,沒(méi)有培養(yǎng)的意義,所以,我們?cè)诠ぷ鞯穆飞?,一定要學(xué)習(xí)不止,這樣,當(dāng)機(jī)會(huì)來(lái)的時(shí)候,你才 不會(huì)眼睜睜的看著它走掉。
簡(jiǎn)單算了下,在第二家公司只待了三個(gè)月,zigbee的接觸與一些網(wǎng)絡(luò)協(xié)議是我最大的收獲。我想找一個(gè)靠譜的公司,讓我不用擔(dān)心餓肚子,同時(shí)也能認(rèn)真做一 些靠譜的研發(fā)工作。終于,有一家臺(tái)資企業(yè)愿意給個(gè)面試的機(jī)會(huì),我把這一年的收獲整理了一下,對(duì)自己說(shuō)了聲加油,然后就去了!
第二個(gè)星期,我拿到了這家公司的offer,月薪5K,五險(xiǎn)一金都有。好吧,總算解決溫飽了,剩下的日子可能會(huì)有些累,但總算是一個(gè)成長(zhǎng)的過(guò)程,很慶幸之 前經(jīng)歷的那一切。最懷念的是當(dāng)初的培訓(xùn)部,那里教的不光是知識(shí),還有學(xué)習(xí)的方法。即使有些東西是我不會(huì)的,但如果我想去學(xué),借助那里的資源和學(xué)習(xí)的方法, 我可以最快的速度學(xué)會(huì)。據(jù)說(shuō)現(xiàn)在已經(jīng)變成在線(xiàn)輔導(dǎo)了,更適合廣大的學(xué)員,但已經(jīng)離我很遠(yuǎn)了。





