⑴ 請問C51單片機的這道選擇題怎麼做
1)要對外部信號電平持續時間進行計數,就需要到內部計數脈沖信號,所以 C/T=0;
2)要用外部信號來啟動定時/計數器,就要令 GATE=1;
3)因此從給出的選項看,只有 80 和 09 符號要求;
80 是啟動 定時器1,方式0,13位計時計數器 (8192)
09 是啟動定時器0;方式1,16位計時計數器 (65536)
⑵ 單片機原理與應用及c51程序設計 第二版 課後習題答案 楊加國 謝維成編著
指導教師簽字
學生簽字
2009年3月15日
題目來源
指導教師推薦□v 自選□ 其它□
題目類別 基礎研究□ 應用研究□v 其它□
一、調研資料的准備
時鍾模塊主要是用於對時、分、秒、年、月、日和星期的計時。該模塊採用的晶元為DS12C887 時鍾晶元。此晶元集成度高,其外圍的電路設計非常的簡單,且其性能非常好,計時的准確性高。
DS12C887為雙列直插式封裝。其具體與單片機的連接如下所述:AD0~AD7雙向地址/數據復用線與單片機的P0口相聯,用於向單片機交換數據;AS 地址選通輸入腳與單片機的 ALE 相聯用於對地址鎖存,實現地址數據的復用;CS 片選線與單片機的 P2.6 相聯,用於選通時鍾晶元;DS 數據選通讀輸入引腳與單片機的讀選通引腳相聯,用於實現對晶元數據的讀控制;R/W 讀/寫輸入與單片機的寫選通引腳相聯,用於實現對時鍾晶元的寫控制;MOT 直接接地,選用 INTEL 時序。IRQ引腳與 8051 的 INT1 相連,用於為時間的採集提供時間基準。
二、選題依據
當前,在世界范圍內,一個以微電子技術,計算機和通信技術為先導的,以信息技術和信息產業為中心的信息革命方興未艾。為使我國盡快實現經濟信息化,趕上發達國家水平,必須加速發展我國的信息技術和信息產業。而計算機技術怎樣與實際應用更有效的結合並有效的發揮其作用是科學界最熱門的話題,也是當今計算機應用中空前活躍的領域。
三、選題目的
本次實驗的完成證明了單片機的儲存功能, 從另一個角度上,我們可以看到這種功能的發展前景。當前,時髦的儲存器比比皆是,我們的這個小小的設計也許在這些MP3,MD3面前算不了什麼, 但是如果我們能在這個領域發展到微型晶元的程度,我們也許可以領導一代儲存器的新潮流。
四、選題要求
五、進度安排
第一階段 2008年12月---2009年2月 資料准備階段
大量閱讀與該課題有關的資料及相關的論文,醞釀課題實施方案及相關措施
第二階段 2009年3月---2009年4月中旬 初稿寫作
根據開題報告及指導教師對課題內容、完成形式的要求得到相應的資料及結果。及時聽取導師的意見,完善方案措施;繼續開展研究;爭取有一定的成果並完成初稿接受檢查。
第三階段 2009年4月中旬
根據導師對初稿的評定結果進行改進,以利於論文的繼續進行。
第四階段 2009年4月下旬---2009年6月定稿
完成畢業論文的寫作並交導師評閱,根據導師提出的要求進行必要修改,進一步完善論文的攥寫
六、完成畢業論文所需條件
在指導教師的幫助下,通過仔細查閱書籍、期刊,進一步在互聯網上搜索學習與選題有關的專業知識,完成對相關知識的掌握。並適當進行調研及相關實驗等。
七、主要參考文獻
《單片機原理與介面技術》,余錫存主編,西安電子科技大學出版社,2001.7.
《MCS-51單片機原理與應用》,蔡美琴主編,高等教育出版社,1992.8.
《單片機原理與應用技術》,張友德、謝偉毅主編,機械工業出版社,2004.3.
單片機原理介面與應用》,黃遵熹主編,西北工業大學出版社,2002.5.
《單片機原理與應用》,劉華東主編,電子工業出版社,2003.8.
劉文濤.MCS-51單片機培訓教程(C51版).北京:電子工業出版社,2005.
《51系列單片機及C51程序設計》,王建校、楊建國主編,科學出版社,2002.4.
《單片機原理與應用》,朱月秀、濮陽檳、駱經備主編,科學出版社,2004.3.
《新編單片機原理與應用》,潘永雄主編,西安電子科技大學出版社,2003.2.
《單片機原理與應用》,孫俊逸主編,清華大學出版社,2006.2.
《單片機原理與應用》,李全利主編,清華大學出版社,2006.2.
《單片機原理及其介面技術》第二版,胡漢才主編,清華大學出版社,2004.2.
夏繼強. 單片機實驗與實踐教程. 北京:北京航空航天大學出版社, 2001.
楊將新,李華軍,劉東駿.單片機程序設計及應用.北京:電子工業出版社,2006.
謝維成,楊加國.單片機原理與應用及C51程序設計.北京:清華大學出版社,2006.
評委評語及其建議:
選題依據充分,意義、目的明確,調研資料准備豐富,進度安排合理;完成任務所需條件具備,可以進行論文的寫作。
評委簽字:
系(院、部)部蓋章:
2009 年 3月10-16 日
⑶ 關於C51單片機單片機的幾個問題
1、徐漢斌版單片機微型計算機原理教材P144上說「中斷服務程序最後一條指令必須是中斷返回指令RETI」,
這句話是不是錯了?
如果最後一句話是跳轉指令不是也可以么,只不過程序不會回到斷點處罷了,PC也會填充跳轉處PC地址
--寫跳轉指令、或者寫其它什麼指令,都行,隨你便。單片機都會執行。
--只是,單片機沒有執行 RETI 指令,中斷程序就沒有結束。
--如果,你不寫 RETI,中斷後,單片機就永遠處於中斷程序之內。
2、在方式0定時器T0的初值為1E0CH,則TH0,TL0的初值分別為()
這題答案給的居然是F0H、0CH,我覺得分明是1EH、0CH啊,是不是答案錯了
--寫成二進制:1E0CH = 0001 1110 0000 1100B
--取其低 13 位,寫成高八位、低五位:11110000、01100
--方式0的初值,就應該是:F0、0C。
3、」MCS 51的程序計數器PC不能被用戶使用,因為他沒有地址「,
首先,不能被用戶使用指的收拾什麼?其次,它沒有地址那他到底在哪?
--PC 的數值,時時刻刻,在自動加一,這個特點,用戶對其,不可控制。
--但是,用戶,可以用 JMP 指令,改變 PC 的數值。
--說 PC 不能被用戶使用,實際上是他不會用。
--51 單片機裡面,確實沒有 PC 的地址,因為,誰都不需要這個地址。
4、MOV 20H,@DPTR 這個語句錯了是因為DPTR只能用於片外定址么
--這個指令,並不存在。
DPTR只能用於片外定址么
--查一下指令表,就知道了。
5、」80C51單片機子程序調用時能自動保護斷點和現場「,
這句話錯了是不是因為只能自動保護斷點不能自動保護現場?
--中斷時,51 單片機,採用壓棧的方法,自動的保護斷點地址。
--保護現場 ?
--單片機,不知道你的現場是什麼。
--把單片機和保護現場聯系在一起,就是狗戴嚼子,胡勒!
6、MOV A,#33H 是把33H當成無符號數吧?那麼如果我想移入一個帶符號數呢
就寫上負號即可。
MOV A, #-33H
這就行了。
7、向前轉移的偏移量為什麼等於(目的地址+0100H)-(原地址+3),0100H是什麼?
--編寫程序,現在都用編譯軟體來進行編譯。
--編譯軟體,會自動計算程序中的偏移量。
--編程人,根本不用討論偏移量的計算,以及推導公式。
--有些教材,作者的思維,還停留在人工編譯的階段,抱殘守缺,不用理他。
--0100H,是256。
⑷ 求解!有關c51單片機的填空題,有誰會啊
(1)c51單片機的中斷控制寄存器為( IE )該寄存器各位對應相應的中斷
源為( EA,ET2,ES,ET1,EX1,ET0,EX0 )TCON的定義是( 定時器、計數器控制寄存器 )
(2)c51單片機的定時/計數器的2個控制寄存器分別為( T0 )和( T1 ),其對應的
單片機引腳分別為( P3.4 )和( P3.5 )
(3)當c51單片機採用12MHZ晶體時,每個周期為( 1us )使用定時器T0定時10毫秒,定時器的初始值分別為( F0 )和( D8 )定時器的T0的控制位為( TR0=1 )
⑸ 單片機原理與應用及C51編程技術/高玉芹/機械工業出版社 課後答案
吳鑒鷹單片機實戰精講中有相關問題的解釋。
在單片機開發過程中,從硬體設計到軟體設計幾乎是開發者針對本系統特點親自完成的。這樣雖然可以降低系統成本,提高系統的適應性,但是每個系統的調試佔去了總開發時間的2/3,可見調試的工作量比較大。單片機系統的硬體調試和軟體調試是不能分開的,許多硬體錯誤是在軟體調試中被發現和糾正的。但通常是先排除明顯的硬體故障以後,再和軟體結合起來調試以進一步排除故障。可見硬體的調試是基礎,如果硬體調試不通過,軟體設計則是無從做起。本文結合作者在單片機開發過程中體會,討論硬體調試的技巧。
當硬體設計從布線到焊接安裝完成之後,就開始進入硬體調試階段,調試大體分為以下幾步。
1 硬體靜態的調試
1.1排除邏輯故障
這類故障往往由於設計和加工制板過程中工藝性錯誤所造成的。主要包括錯線、開路、短路。排除的方法是首先將加工的印製板認真對照原理圖,看兩者是否一致。應特別注意電源系統檢查,以防止電源短路和極性錯誤,並重點檢查系統匯流排(地址匯流排、數據匯流排和控制匯流排)是否存在相互之間短路或與其它信號線路短路。必要時利用數字萬用表的短路測試功能,可以縮短排錯時間。
1.2排除元器件失效
造成這類錯誤的原因有兩個:一個是元器件買來時就已壞了;另一個是由於安裝錯誤,造成器件燒壞。可以採取檢查元器件與設計要求的型號、規格和安裝是否一致。在保證安裝無誤後,用替換方法排除錯誤。
1.3排除電源故障
在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電後檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在5V~4.8V之間屬正常。若有高壓,聯機模擬器調試時,將會損壞模擬器等,有時會使應用系統中的集成塊發熱損壞。
2 聯機模擬調試
聯機模擬必須藉助模擬開發裝置、示波器、萬用表等工具。這些工具是單片機開發的最基本工具。
信號線是聯絡8031和外部器件的紐帶,如果信號線連結錯誤或時序不對,那麼都會造成對外圍電路讀寫錯誤。51系列單片機的信號線大體分為讀、寫信號線、片選信號線、時鍾信號線、外部程序存貯器讀選通信號(PSEN)、地址鎖存信號(ALE)、復位信號等幾大類。這些信號大多屬於脈沖信號,對於脈沖信號藉助示波器(這里指通用示波器)用常規方法很難觀測到,必須採取一定措施才能觀測到。應該利用軟體編程的方法來實現。例如對片選信號,運行下面的小程序就可以檢測出解碼片選信號是否正常。
MAIN:MOVDPTR,#DPTR
;將地址送入DPTR
MOVXA,@DPTR
;將解碼地址外RAM中的內容送入ACC
NOP;適當延時
SJMPMAIN;循環
執行程序後,就可以利用示波器觀察晶元的片選信號引出腳(用示波器掃描時間為1μs/每格檔),這時應看到周期為數微秒的負脈沖波形,若看不到則說明解碼信號有錯誤。
對於電平類信號,觀測起來就比較容易。例如對復位信號觀測就可以直接利用示波器,當按下復位鍵時,可以看到8031的復位引腳將變為高電平;一旦松開,電平將變低。
總而言之,對於脈沖觸發類的信號我們要用軟體來配合,並要把程序編為死循環,再利用示波器觀察;對於電平類觸發信號,可以直接用示波器觀察。
下面結合在自動配料控制系統中鍵盤、顯示部分的調試過程來加以說明。本系統中的鍵盤、顯示部分都是由並行口晶元8155擴展而成的。8155屬於可編程器件,因而很難劃分硬體和軟體,往往在調試中即使電路安裝正確沒有一定的指令去指揮它工作,也是無法發現硬體的故障。因此要使用一些簡單的調試程序來確定硬體的組裝是否正確、功能是否完整。在本系統中採取了先對顯示器調試,再對鍵盤調試。
⑹ C51單片機程序設計題,要求用C語言做,模擬交通燈控制單片機電路,答案要詳細具體。
晚上隨手寫,也未調試,權當看看
程序有不嚴謹地方還得調試修改
#include<REGX51.H>
#defineSTATUS_1S 1
#defineSTATUS_2S 2
#defineSTATUS_3S 3
#defineSTATUS_4S 4
#defineSTATUS_5S 5
#defineSTATUS_15S 15
#defineSTATUS_28S 28
#defineSTATUS_29S 29
#defineSTATUS_30S 30
unsignedcharflag,status,status_temp=1,status_temp_;
sbitK1 = P0^0;
sbitK2 = P0^1;
sbitRLED = P0^2;
sbitYLED = P0^3;
sbitGLED = P0^4;
voidInit(void)
{
ET0=1;
TR0=1;
RLED=0; //亮
YLED=0;
GLED=0;
while(status_temp)
{
switch(status)
{
caseSTATUS_1S: //1S
{
RLED=1; //滅,閃一次
YLED=1;
GLED=1;
} break;
caseSTATUS_2S: //1S
{
RLED=0; //亮,閃一次
YLED=0;
GLED=0;
} break;
caseSTATUS_3S: //1S
{
RLED=1; //滅
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
voidInit_Timer0(void)
{
TMOD=0x01;
// ET0=1;
// TR0=1;
EA=1;
TH0=0X3C;
TL0=0XB0; //未計算,偷樓上的
}
voidM_Start(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //紅亮
while(status_temp)
{
switch(status)
{
caseSTATUS_1S:
{
if(status_temp_==1)
{
YLED=0;
}
} break;
caseSTATUS_2S:
{
if(status_temp_==1)
{
YLED=1;
}
} break;
caseSTATUS_3S:
{
if(status_temp_==1)
{
YLED=0;
status_temp_=0;
}
} break;
caseSTATUS_15S: //15S滅,綠亮
{
RLED=1;
GLED=0;
} break;
caseSTATUS_28S:
{
GLED=1;
} break;
caseSTATUS_29S:
{
GLED=0;
} break;
caseSTATUS_30S:
{
GLED=1;
status=0;
status_temp_=1;
} break;
}
}
ET0=0;
TR0=0;
status=0;
status_temp=1;
YLED=1;
}
voidM_End(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //亮1次
YLED=0;
GLED=0;
while(status_temp)
{
switch(status)
{
caseSTATUS_1S: //1S
{
RLED=1; //滅一次
YLED=1;
GLED=1;
} break;
caseSTATUS_2S: //1S
{
RLED=0; //亮二次
YLED=0;
GLED=0;
} break;
caseSTATUS_3S: //1S
{
RLED=1; ////滅二次
YLED=1;
GLED=1;
} break;
caseSTATUS_4S: //1S
{
RLED=0; ////亮三次
YLED=0;
GLED=0;
} break;
caseSTATUS_5S: //1S
{
RLED=1; ////滅三次
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
main()
{
Init();//單片機初始化
Init_Timer0();//定時器初始化
while(1)
{
if(K1==0)
M_Start();//模擬開始
if(K2==0)
M_End();//模擬結束
}
}
voidinterrupt_time0()interrupt1 //核對頭文件,一致就好
{
TH0=0X3C;
TL0=0XB0;
flag++;
if(flag==20)
{
status++;
flag=0;
}
}
⑺ 單片機C51編程兩個問題(裡面詳細,歡迎高手)
12個晶振周期為一個機器周期,在單片機裡面的指令都以機器周期來計算的,所以要乘以12,至於那個2^16-計數初值那就是定時器的溢出計算式,也就是從計數初值到溢出所佔用的機器周期來計算的!~
那個延時的問題,我看有問題。也不知道你用的是多少的晶振。
不過大致的計算式是:震盪周期*12*125*500=延時時間。這個是大致的,有一定的誤差,如果你真要精確算,那你得用外部高精度晶振,然後用匯編語言取算。