看了我們歷年來的部分招聘試題,大家一定會覺得太容易了,但大多數學生還是做不出來,包括研究生在內,比例達到98%以上,所以我不得不投入到創新教育實踐活動之中去。我們每次出題之前都要翻看各種版本的教材與實驗指導書,如果只有一本書上有類似的題目,我們絕對不考,大多數單片機編程與C語言程序設計一定來自例題,但有時會稍作修改,重在考察學生的基礎和實踐動手能力。 題1我們在2006年9月中旬全國巡回招聘人才中的一道考題,但完全將這道題目做出來的只有一位本科生。 題1:對 80C51單片機內部RAM低128字節存儲單元清零,請用匯編語言編程(12分)。 答題分析:這是一道非常基礎的題目,具有良好習慣的程序員編寫的第一段程序就是對單片機上電進行初始化。單片機內部低128字節即就是0~127,轉換為16進制數值則表示為0~7FH。如果用循環語句的話,那么計數器的初始值應該為7FH,假設R0=7FH。程序設計如下: ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV R0,#7FH CLR A LOOP:MOV @R0,A DJNZ R0,LOOP AJMP $ ; END R0在此既作為循環程序計數器,又作為內部存儲單元的動態地址指針(計數器)。當計數器R0為7FH時,那么R0所對應的存儲單元的地址為7FH;當計數器R0減1時,則R0所對應的存儲單元地址相應地減1;當計數器R0減為0時,則R0所對應的存儲單元地址也減為0,即就是00H單元。 如果選用R1作為計數器的話,即便將R1減為0,也不能將00H單元清0,因為R1在內部存儲器的實際地址為01H,那么最后還需要單獨對00H單元進行清0才能完成初始化。 題2:用MCS-51單片機的I/O口直接驅動8個發光二極管,回答以下問題(12分): (1) 試畫出實現原理圖,給出合適的電路參數; (2) 用“匯編語言或C語言編程”,將這8個發光管循環點亮,每次只有一個亮,用肉眼能看見其循環。 題3:用你最熟悉單片機的I/O口直接驅動一個七段字形LED數碼管,回答以下問題(12分): (1) 試畫出實現原理圖,給出合適的電路參數,得到合適的筆形碼; (2) 用“匯編語言或C語言編程”,讓數碼管循環顯示0~9,用肉眼能看見其循環。 題4我們在2006年10月份全國巡回人才招聘的考題,70%的同學居然得0分,但也只有不到5%的同學得滿分。 題4:繼電器驅動電路,回答下列問題(12分) : (1) 完整地畫出用一個PNP三極管驅動一個5V繼電器的電路,說明各個元器件的作用; (2) 若繼電器的內阻為100歐姆,三極管的放大倍數為100倍,試計算出在滿足什么樣的條件下,繼電器 能可靠地吸合? 答:電路如圖1所示,三極管Q為PNP驅動三極管,工作在開關狀態;二極管D為繼電器線圈在由吸合變為斷開時提供續流,以免產生高壓,從而保護三極管Q。 圖1 繼電器驅動電路 當Vdrv=0V時,Rb取值計算如下: Ic=Vcc/Rj=5/100=50 (mA) Ib=Ic/β=50/100=0.5 (mA) Rb=(Vcc—Vbe)/Ib=(5—0.7)/0.5=8.6 (K) 當Rb<=8.6K時,繼電器能可靠吸合。 這是一道理論與實踐相結合重點考查學生動手能力的試題,不少參加過電子大賽的同學,雖然曾在實踐中用過這個電路,但還是考不出來,原因何在?作者調查發現,很多學生在使用書本上的經典電路時,并沒有用理論去分析和驗證,達到學會設計電路的目的。因為很少自己動手設計電路,于是“抄”電路就成了一種習慣,事實上產品的設計是抄不出來的。 其實僅僅是看懂了、會用了那是沒有用的,一定要動手做出來并搞清楚來龍去脈那才是自己的,所以同學們一定要養成良好的習慣,保持高中時候的熱情,相信自己是一流的,獨立完成本書所安排的所有任務,而不是去抄別人的答案。 |