單片機(jī)計(jì)數(shù)器課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  09級(jí)單片機(jī)課程設(shè)計(jì)報(bào)告 </p><p><b>  設(shè)計(jì)題目:</b></p><p>  項(xiàng)目二 數(shù)字計(jì)數(shù)器的設(shè)計(jì) </p><p>  院 系: 信息與電氣工程學(xué)院 </p><p>  數(shù)字計(jì)數(shù)器的課程設(shè)計(jì)</p><p><b>  目

2、錄</b></p><p>  第一章:目的、設(shè)計(jì)要求</p><p><b>  一、緒論3</b></p><p><b>  二、設(shè)計(jì)要求3</b></p><p><b>  第二章:設(shè)計(jì)方案</b></p><p><b&

3、gt;  一、系統(tǒng)設(shè)計(jì)3</b></p><p><b>  二、功能設(shè)計(jì)4</b></p><p><b>  第三章:硬件設(shè)計(jì)</b></p><p><b>  1、單片機(jī)4</b></p><p>  2、LED數(shù)碼管6</p><

4、;p>  3、按鍵(模擬數(shù)字脈沖)6</p><p><b>  第四章:軟件設(shè)計(jì)</b></p><p><b>  1、程序流程圖7</b></p><p><b>  2、設(shè)計(jì)程序7</b></p><p><b>  :系統(tǒng)調(diào)試</b>

5、</p><p><b>  1、硬件調(diào)試13</b></p><p><b>  2、軟件調(diào)試13</b></p><p><b> ?。很浖?shí)用方法總結(jié)</b></p><p>  軟件實(shí)用方法總結(jié)13</p><p><b>  參

6、考文獻(xiàn)32</b></p><p>  摘要:本文介紹了采用STC12C5A60S2單片機(jī)實(shí)現(xiàn)數(shù)字計(jì)數(shù)器的實(shí)用電路,實(shí)現(xiàn)了利用外部中斷,對(duì)外部矩形脈沖信號(hào)計(jì)數(shù),并在LED數(shù)碼管上顯示,設(shè)計(jì)了按鍵控制來(lái)模擬外部矩形脈沖。已經(jīng)過(guò)軟件和硬件測(cè)試,并達(dá)到設(shè)計(jì)項(xiàng)目二要求。</p><p>  關(guān)鍵字:?jiǎn)纹瑱C(jī);LED數(shù)碼管;外部中斷;按鍵;軟件</p><p> 

7、 第一章 目的、設(shè)計(jì)要求</p><p><b>  課程設(shè)計(jì)目的:</b></p><p>  1、通過(guò)單片機(jī)課程設(shè)計(jì),熟練C語(yǔ)言的編程方法,將理論聯(lián)系到實(shí)踐中去,提高我們的動(dòng)腦和動(dòng)手的能力。</p><p>  2、通過(guò)數(shù)字計(jì)數(shù)器系統(tǒng)的設(shè)計(jì),掌握l(shuí)ed數(shù)碼管及外部中斷的使用方法。</p><p>  3、通過(guò)此次課

8、程設(shè)計(jì),熟練掌握電路板焊接技能,及keil編程軟件、stc單片機(jī)下載程序的使用方法。</p><p><b>  二、設(shè)計(jì)要求</b></p><p> ?。?)掌握硬件原理基礎(chǔ)上,編寫C程序?qū)ν獠烤匦蚊}沖進(jìn)行計(jì)數(shù)。 </p><p>  (2)在數(shù)碼管上顯示計(jì)數(shù)。</p><p>  (3)在電路板上的現(xiàn)有電路編寫程

9、序來(lái)實(shí)現(xiàn)功能。</p><p> ?。?)調(diào)試,并且完成課程設(shè)計(jì)報(bào)告。</p><p>  最終實(shí)現(xiàn): 鍵盤輸入模擬外部中斷,對(duì)外部矩形脈沖信號(hào)計(jì)數(shù),并在LED數(shù)碼管上顯示。</p><p><b>  第二章 設(shè)計(jì)方案</b></p><p><b>  一、系統(tǒng)設(shè)計(jì)</b></p>

10、<p>  1、數(shù)字計(jì)數(shù)器的系統(tǒng)框圖如圖1所示。</p><p><b>  圖1</b></p><p>  主要由3個(gè)模塊組成:LED數(shù)碼管顯示、按鍵模擬外部中斷、單片機(jī)最小工作電路(包括復(fù)位,電源VCC,接地GND,晶振電路等);</p><p><b>  功能設(shè)計(jì):</b></p>&l

11、t;p>  通過(guò)電源總開關(guān)實(shí)現(xiàn)系統(tǒng)通斷電;</p><p>  2、上電初始時(shí)左右兩邊四位LED數(shù)碼管個(gè)位顯示0,通過(guò)按鍵S2模擬外部脈沖1,按鍵S3模擬外部脈沖0,具體如下:</p><p>  1)、按下按鍵S2,右邊四位LED顯示加1遞增,并向前進(jìn)位,最多計(jì)數(shù)到9999;</p><p>  2)、按下按鍵S3,左邊四位LED顯示加1遞增,并向前進(jìn)位,最

12、多計(jì)數(shù)到9999;</p><p>  3、通過(guò)“復(fù)位”鍵使LED回到初始狀態(tài);</p><p><b>  第三章 硬件設(shè)計(jì)</b></p><p><b>  單片機(jī)</b></p><p><b>  簡(jiǎn)介:</b></p><p>  單片微型機(jī)

13、計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是具有生命力的機(jī)種,單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī)。特別適用于控制領(lǐng)域,故又稱為微控制器。</p><p>  通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件;中央處理器、存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠坎考O(shè)備和結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。</p><p>  本課程設(shè)計(jì)所采用的單片機(jī)型號(hào)是STC12C

14、5A60S2,其管腳圖如圖2所示。</p><p><b>  圖2</b></p><p>  該系列單片機(jī)正常工作所需的最小應(yīng)用電路如圖3所示:</p><p><b>  圖3</b></p><p>  此次課程設(shè)計(jì)所用電路板的單片機(jī)的最小應(yīng)用電路如圖4:</p><p&

15、gt;<b>  圖4</b></p><p><b>  LED數(shù)碼管</b></p><p>  本課程LED數(shù)碼管顯示部分的硬件原理圖如圖5所示。</p><p><b>  圖5</b></p><p><b>  其中</b></p>

16、<p>  1. LED數(shù)碼管采用共陰極接法,故要使LED數(shù)碼管點(diǎn)亮應(yīng)使對(duì)應(yīng)的段的正極為高電平, </p><p>  顯示數(shù)字對(duì)應(yīng)8位段碼如下:</p><p>  數(shù)字 0 1 2 3 4 5 6 7 8 9 </p><p>  段碼 0x3f,0x06,0x5b,0x4f,0x66,0x

17、6d,0x7d, 0x07, 0x7f, 0x6f</p><p>  2. 采用74H573數(shù)字鎖存器,鎖存數(shù)據(jù);</p><p>  3. WELA接單片機(jī)的P2^6口,通過(guò)高電平使能74H573鎖存器控制8個(gè)數(shù)碼管要顯示的哪一個(gè);</p><p>  4. DULA接單片機(jī)的P2^7口,通過(guò)高電平使能74H573鎖存器控制每個(gè)數(shù)碼管要顯示的段碼;</p

18、><p>  5.PA00--PA07分別接單片機(jī)的P0^0 ~ P0^7口,這樣就可以通過(guò)控制單片機(jī)P0口的值來(lái)控制數(shù)碼管。</p><p>  3、按鍵(模擬數(shù)字脈沖)</p><p>  通過(guò)鍵盤連接,模擬數(shù)字脈沖。本課程設(shè)計(jì)電路板的按鍵原理圖如圖6所示:</p><p><b>  圖6</b></p>

19、<p>  其中按鍵S2,KEY1接單片機(jī)的P3^3/INT1引腳;</p><p>  按鍵S3,KEY2接單片機(jī)的P3^2/INT0引腳;</p><p>  按鍵按下時(shí),單片機(jī)的引腳由高電平變成低電平,由此來(lái)模擬外部脈沖,可分低電平及下降沿兩種觸發(fā)方式計(jì)數(shù)。</p><p><b>  第四章 軟件設(shè)計(jì)</b></p&g

20、t;<p><b>  1、程序流程圖</b></p><p>  程序流程圖如圖7所示。</p><p>  此流程圖采用流程圖繪制軟件——億圖 繪制。</p><p><b>  圖7</b></p><p><b>  設(shè)計(jì)程序</b></p>

21、<p>  先定義頭文件key.h 以方便程序編寫及改動(dòng),</p><p>  一、頭文件程序如下:</p><p>  /********************************************************</p><p>  key.h 包含 1.按鍵等端口定義</p><p><b> 

22、 2.數(shù)據(jù)類型定義</b></p><p><b>  3.延時(shí)函數(shù)</b></p><p>  **********************************************************/</p><p>  #ifndef _KEY_H_</p><p>  #define _

23、KEY_H_</p><p>  #define uchar unsigned char //定義數(shù)據(jù)類型</p><p>  #define uint unsigned int</p><p>  /********************端口定義**************************/</p><p>  #defin

24、e led P1 //P1口接led</p><p>  sbit dula = P2^7;</p><p>  sbit wela =P2^6;</p><p>  /**********定義按鍵及按鍵要實(shí)現(xiàn)的功能******************/</p><p>  sbit key1=P3^3;</p>

25、<p>  sbit key2=P3^4; </p><p>  sbit key3=P3^5;</p><p>  /******************定義變量****************************/</p><p>  // 此表為 LED 的字模 // 0 1 2 3 4 5 6

26、 7 8 9 </p><p><b>  //共陰極</b></p><p>  uchar code table[] = {</p><p>  0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,</p><p> 

27、 0x7f,0x6f,0x77,0x7c,</p><p>  0x39,0x5e,0x79,0x71,0x00</p><p><b>  };</b></p><p>  /************延時(shí)函數(shù)*********/</p><p>  void delay(uint x)</p><p

28、>  { </p><p><b>  uint i,j;</b></p><p>  for(i=x;i>0;i--) //i=x ,大約延時(shí)X毫秒即Xms,</p><p>  for(j=100;j>0;j--); //晶振采用11.059MHZ時(shí)值設(shè)為110,</p><p&

29、gt;  } //由于采中的為22MHZ故值應(yīng)按情況而定</p><p><b>  #endif</b></p><p>  主程序led.c如下:</p><p>  /*******************************************************************************

30、</p><p>  * 標(biāo)題: 試驗(yàn)4位數(shù)碼管上顯示外部中斷計(jì)數(shù) *</p><p>  *P3.2和P3.3外部中斷輸入 由兩個(gè)四位數(shù)碼管分別顯示計(jì)數(shù) *</p><p>  * 連接方法: P3.2外部中斷0輸入接按鍵S3<

31、;/p><p>  P3.3外部中斷1輸入接按鍵S2 *</p><p>  程序完成時(shí)間:2012年11月20日晚已經(jīng)過(guò)測(cè)試</p><p>  測(cè)試時(shí)間: 2012年11月20日晚</p><p>  *********************************************************

32、***********************/</p><p>  #include <STC12C5A.H></p><p>  #include "key.h"</p><p>  uint num0,num1;//uint 最多計(jì)2^16</p><p>  //uchar num0,num1; /

33、/uchar最多計(jì)2^8次=256</p><p>  uint LedOut[8];</p><p>  uchar ledw[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//此表為第幾個(gè)led數(shù)碼管亮的代碼 </p><p>  //1111 1110 , 1111 1101 ,1111 1011,1111

34、 0111,即7f, bf, df ,ef</p><p>  //1110 1111 ,1101 1111, 1011 1111,0111 1111, 即f7, fb, fd , fe</p><p>  //7f, bf, df ,ef</p><p>  void delay(uint);</p><p>  void displ

35、ay();</p><p>  void main()</p><p><b>  {</b></p><p>  num0=0;//外部中斷0計(jì)數(shù)</p><p>  num1=0;//外部中斷1計(jì)數(shù)</p><p>  // IT0=0; //低電平觸發(fā)</p&g

36、t;<p>  IT0=1; //下降沿觸發(fā)</p><p><b>  EX0=1;</b></p><p>  //IT1=0; //低電平觸發(fā)</p><p>  IT1=1; //下降沿觸發(fā)</p><p>  EA=1;//開總中斷</p>&

37、lt;p>  EX1=1; //開外部中斷1</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  display();</p><p><b>  }</b></p><p>

38、<b>  }</b></p><p>  /********************************************************</p><p>  * 顯示函數(shù) *</p><p>  ***********************

39、*********************************/</p><p>  void display()</p><p><b>  { </b></p><p>  uchar i=1;</p><p><b>  { </b></p><p>  if (

40、num1<10) //外部中斷1計(jì)數(shù)</p><p><b>  {</b></p><p>  LedOut[3]=table[16]; //千位</p><p>  LedOut[2]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p>

41、;  LedOut[1]=table[16];//num%100/10];//十位</p><p>  LedOut[0]=table[num1%10]; //個(gè)位</p><p><b>  } </b></p><p>  else if (num1>9&&num1<100)&l

42、t;/p><p><b>  {</b></p><p>  LedOut[3]=table[16]; //千位</p><p>  LedOut[2]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p>  LedOut[1]=table[num1%100

43、/10];//十位</p><p>  LedOut[0]=table[num1%10]; //個(gè)位</p><p><b>  } </b></p><p>  else if (num1>99&&num1<1000)</p><p><b>  

44、{</b></p><p>  LedOut[3]=table[16]; //千位</p><p>  LedOut[2]=table[num1%1000/100]&0x7f;//百位/100];</p><p>  LedOut[1]=table[num1%100/10];//十位</p><p> 

45、 LedOut[0]=table[num1%10]; //個(gè)位</p><p><b>  } </b></p><p>  else if(num1>999&&num1<10000)</p><p><b>  {</b></p><p>  

46、LedOut[3]=table[num1%10000/1000]; //千位</p><p>  LedOut[2]=table[num1%1000/100]&0x7f;//百位/100];</p><p>  LedOut[1]=table[num1%100/10];//十位</p><p>  LedOut[0]=table[num1

47、%10]; //個(gè)位</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  {</b></p><p>  if (num0<10) //外部中斷0計(jì)數(shù)</p><

48、;p><b>  {</b></p><p>  LedOut[7]=table[16]; //千位</p><p>  LedOut[6]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p>  LedOut[5]=table[16];//num%100/10];

49、//十位</p><p>  LedOut[4]=table[num0%10]; //個(gè)位</p><p><b>  } </b></p><p>  else if (num0>9&&num0<100)</p><p><b>  {</b>

50、;</p><p>  LedOut[7]=table[16]; //千位</p><p>  LedOut[6]=table[16];//num%1000/100]&0x7f;//百位/100];</p><p>  LedOut[5]=table[num0%100/10];//十位</p><p>  LedO

51、ut[4]=table[num0%10]; //個(gè)位</p><p><b>  } </b></p><p>  else if (num0>99&&num0<1000)</p><p><b>  {</b></p><p>  LedOut

52、[7]=table[16]; //千位</p><p>  LedOut[6]=table[num0%1000/100];//百位/100];</p><p>  LedOut[5]=table[num0%100/10];//十位</p><p>  LedOut[4]=table[num0%10]; //個(gè)位</

53、p><p><b>  } </b></p><p>  else if(num1>999&&num1<10000)</p><p><b>  {</b></p><p>  LedOut[7]=table[num0%10000/1000]; //千位</p&g

54、t;<p>  LedOut[6]=table[num0%1000/100];//百位/100];</p><p>  LedOut[5]=table[num0%100/10];//十位</p><p>  LedOut[4]=table[num0%10]; //個(gè)位</p><p><b>  } &

55、lt;/b></p><p><b>  }</b></p><p>  for( i=0; i<8; i++) </p><p><b>  {</b></p><p>  wela=1; //位碼</p><p>  P0=ledw[i];//0xe

56、f; //1111 0111 ef</p><p><b>  wela=0;</b></p><p>  dula=1; //段碼</p><p>  P0 = LedOut[i];</p><p><b>  dula=0;</b></p><

57、;p>  delay(25);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /********************************************************</p><p>  * INT0中斷函數(shù)

58、 *</p><p>  ********************************************************/</p><p>  void counter0(void) interrupt 0 using 1</p><p><b>  {<

59、;/b></p><p><b>  EX0=0; </b></p><p><b>  num0++;</b></p><p><b>  EX0=1;</b></p><p><b>  }</b></p><p>  

60、/********************************************************</p><p>  * INT1中斷函數(shù) *</p><p>  ********************************************************/</p&

61、gt;<p>  void counter1(void) interrupt 2 using 2</p><p><b>  {</b></p><p><b>  EX1=0;</b></p><p><b>  num1++;</b></p><p><

62、;b>  EX1=1;</b></p><p><b>  }</b></p><p>  /********************************************************/</p><p><b>  第五章 系統(tǒng)調(diào)試</b></p><p>&

63、lt;b>  1、硬件調(diào)試</b></p><p>  檢測(cè)各硬件模塊是否斷路或者短路,根據(jù)電路圖查看接線線路是否正確。檢測(cè)接線無(wú)誤后,接入電源,測(cè)量各芯片的供電電壓,檢查無(wú)誤后,進(jìn)入軟件調(diào)試階段。</p><p><b>  2、軟件調(diào)試</b></p><p>  首先使用keil編譯好程序,生成HEX文件,安裝好PL23

64、03驅(qū)動(dòng)程序,使用STC-ISP下載軟件,將程序程序到單片機(jī)后,按下開關(guān),兩邊LED數(shù)碼管均顯示0。</p><p>  接下來(lái)將按鍵S2,KEY1接單片機(jī)的P3^3/INT1引腳;按鍵S3,KEY2接單片機(jī)的P3^2/INT0引腳;</p><p>  按下S3按鍵可看到左邊四個(gè)LED數(shù)碼管加1計(jì)數(shù)變換;按下S2按鍵可看到右邊四個(gè)LED數(shù)碼管加1計(jì)數(shù)變換。</p><

65、p>  按下復(fù)位S1,可看到8位LED數(shù)碼管恢復(fù)初始狀態(tài)即歸零。</p><p>  調(diào)試完成后按關(guān)停止開關(guān)可以使電路斷電,LED數(shù)碼管熄滅。</p><p>  第六章 軟件實(shí)用方法總結(jié)</p><p><b>  軟件實(shí)用方法總結(jié):</b></p><p>  關(guān)于keil官方軟件中新建項(xiàng)目時(shí)選擇單片機(jī)型號(hào)中無(wú)

66、STC型號(hào)的單片機(jī)的解決方案:</p><p>  數(shù)據(jù)庫(kù)替換法(STC官網(wǎng)http://www.stcmcu.com/方法):</p><p><b>  操作步驟:</b></p><p>  1.先備份KEIL安裝目錄UV3(KEIL3版本是UV3,KEIL4是UV4,下同)文件夾下面的UV3.CDB(或者UV4.CDB)文件,然后用ST

67、C官網(wǎng)提供的同名的CDB文件(下載壓縮包內(nèi)的UV3.cdb已經(jīng)集合了 keil自帶的數(shù)據(jù)庫(kù)+STC數(shù)據(jù)庫(kù))代替。</p><p>  注:沒有UV4.CDB的話,可以將“UV2.CDB(或者UV3.CDB)”改名成“UV4.CDB”來(lái)使用。</p><p>  步驟1完成后新建工程是如圖8所示:</p><p><b>  圖8</b><

68、/p><p>  2. 將壓縮包內(nèi)的 “STC”文件夾(已經(jīng)存放了STC所有系列的頭文件)放到KEIL安裝目錄Keil\C51\INC目錄下。</p><p>  第2步驟的作用:可以 單擊右鍵 快捷插入STC對(duì)應(yīng)的頭文件。</p><p><b>  ?如圖9所示:</b></p><p><b>  圖9<

69、;/b></p><p>  本課程設(shè)計(jì)所采用的STC12C5A60S2系列單片機(jī)的頭文件“STC12C5A.H”如下:</p><p>  /*------------------------------------------------*/</p><p>  /* --- 宏晶科技 STCMCU ---------------------------*

70、/</p><p>  /* --- Mobile: (86)13922805190 -------------------*/</p><p>  /* --- Fax: 86-755-82944243 ----------------------*/</p><p>  /* --- Tel: 86-755-82948412 ------------------

71、----*/</p><p>  /* --- Web: www.STCMCU.com -----------------------*/</p><p>  /* 適用于: STC12C5AxxX STC12LE5AxxX ------------*/</p><p>  /* ------- STC12C5AxxCPP STC12LE5AxxCPP ----

72、------*/</p><p>  /* ------- STC12C5AxxAD STC12LE5AxxAD ----------*/</p><p>  /* ------- STC12C5AxxS2 STC12LE5AxxS2 ----------*/</p><p>  /* ------- IAP12C5Axx IAP12LE5Axx

73、 ----------*/</p><p>  /* ------- IAP12C5AxxCPP IAP12LE5AxxCPP ----------*/</p><p>  /* ------- IAP12C5AxxAD IAP12LE5AxxAD ----------*/</p><p>  /* ------- IAP12C5AxxS2 IAP12LE5A

74、xxS2 ----------*/</p><p>  /*------------------------------------------------*/</p><p>  #ifndef __STC12C5A_H__</p><p>  #define __STC12C5A_H__</p><p>  //////////////

75、//////////////////////////////////////////////////////////////////////////////////////////////////</p><p>  sfr PSW = 0xd0; //程序狀態(tài)字 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2

76、Bit1 Bit0</p><p>  //位描述 CY AC F0 RS1 RS0 OV F1 P</p><p>  //初始值=0000,0000 0 0 0 0 0 0 0 0</p

77、><p>  sbit CY = PSW^7; //進(jìn)位標(biāo)志</p><p>  sbit AC = PSW^6; //輔助進(jìn)位標(biāo)志</p><p>  sbit F0 = PSW^5; //用戶標(biāo)志</p><p>  sbit RS1 =

78、 PSW^4; //寄存器組選擇位1</p><p>  sbit RS0 = PSW^3; //寄存器組選擇位0</p><p>  sbit OV = PSW^2; //溢出標(biāo)志</p><p>  sbit P = PSW^0; //ACC的偶校驗(yàn)位</

79、p><p>  /////////////////////////////////</p><p>  sfr ACC = 0xe0; //累加器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p>  //初始值=0000

80、,0000 0 0 0 0 0 0 0 0</p><p>  sbit ACC7 = ACC^7; //累加器第7位</p><p>  sbit ACC6 = ACC^6; //累加器第6位</p><p>  sbi

81、t ACC5 = ACC^5; //累加器第5位</p><p>  sbit ACC4 = ACC^4; //累加器第4位</p><p>  sbit ACC3 = ACC^3; //累加器第3位</p><p>  sbit ACC2 = ACC^2; //

82、累加器第2位</p><p>  sbit ACC1 = ACC^1; //累加器第1位</p><p>  sbit ACC0 = ACC^0; //累加器第0位</p><p>  /////////////////////////////////</p><p>  sfr B

83、 = 0xf0; //B寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p>  //初始值=0000,0000 0 0 0 0 0 0 0 0</p><

84、;p>  /////////////////////////////////</p><p>  sfr SP = 0x81; //堆棧指針 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p>  //初始值=0000,0111

85、0 0 0 0 0 1 1 1</p><p>  /////////////////////////////////</p><p>  sfr DPL = 0x82; //數(shù)據(jù)指針低字節(jié) Bit7 Bit6 Bit5 Bit4 Bit

86、3 Bit2 Bit1 Bit0</p><p>  //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p>  /////////////////////////////////</p><p>  sfr DPH

87、 = 0x83; //數(shù)據(jù)指針高字節(jié) Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p>  //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p>  //

88、//////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><p>  sfr PCON = 0x87; //電源控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3

89、 Bit2 Bit1 Bit0</p><p>  //位描述 SMOD SMOD0 LVDF POF GF1 GF0 PD IDL</p><p>  //初始值=0011,0000 0 0 1 1 0 0 0

90、 0</p><p>  #define SMOD 0x80 //串口波特率倍速位,置1可使波特率快1倍</p><p>  #define SMOD0 0x40 //FE/SM0選擇位,0:SCON.7為SM0 1:SCON.7為FE</p><p>  #define LVDF 0x20

91、 //低壓檢測(cè)中斷請(qǐng)求位,由硬件置1,需由軟件清0</p><p>  #define POF 0x10 //上電復(fù)位標(biāo)志位,上電時(shí)由硬件置1,需由軟件清0</p><p>  #define GF1 0x08 //通用標(biāo)志位1</p><p>  #define GF0 0x

92、04 //通用標(biāo)志位0</p><p>  #define PD 0x02 //掉電控制位,寫1可以使MCU進(jìn)入PowerDown模式</p><p>  #define IDL 0x01 //空閑控制位,寫1可以使MCU進(jìn)入Idle模式</p><p>  ////////////////

93、/////////////////</p><p>  sfr WAKE_CLKO = 0x8f; //掉電喚醒/時(shí)鐘輸出控制 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p>  //位描述 PCAWAKEUP RXDPINIE T1PINIE T0PINIE L

94、VD_WAKEUP BRTCLKO T1VLKO T0CLKO</p><p>  //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p>  #define PCAWAKEUP 0x80 //允許PCA的上升沿/下降沿中斷喚醒掉電MCU</p&g

95、t;<p>  #define RXD_PIN_IE 0x40 //允許RXD(P3.0)下降沿置位RI中斷時(shí)喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p>  #define T1_PIN_IE 0x20 //允許T1(P3.5)下降沿置位T1中斷時(shí)喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p>  #define T0_PIN_I

96、E 0x10 //允許T0(P3.4)下降沿置位T0中斷時(shí)喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p>  #define LVD_WAKEUP 0x08 //允許LVD(P4.6)的低壓檢測(cè)中斷喚醒掉電MCU(必須打開相應(yīng)中斷)</p><p>  #define BRTCLKOEN 0x04 //打開P1.0腳的BRT時(shí)鐘溢出脈

97、沖,輸出的時(shí)鐘頻率為1/2倍的BRT溢出率</p><p>  #define T1CLKOEN 0x02 //打開P3.5腳的定時(shí)器1時(shí)鐘溢出脈沖,輸出的時(shí)鐘頻率為1/2倍的T1溢出率</p><p>  #define T0CLKOEN 0x01 //打開P3.4腳的定時(shí)器0時(shí)鐘溢出脈沖,輸出的時(shí)鐘頻率為1/2倍的T0溢出率</p>

98、<p>  /////////////////////////////////</p><p>  sfr CLK_DIV = 0x97; //時(shí)鐘分頻寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p>  //位描述

99、 - - - - - CLKS2 CLKS1 CLKS0</p><p>  //初始值=xxxx,x000 x x x x x 0 0 0</p><p>  #define FOSCD1 0x00 //

100、系統(tǒng)時(shí)鐘為Fosc</p><p>  #define FOSCD2 0x01 //系統(tǒng)時(shí)鐘為Fosc/2</p><p>  #define FOSCD4 0x02 //系統(tǒng)時(shí)鐘為Fosc/4</p><p>  #define FOSCD8 0x03 //系統(tǒng)時(shí)鐘為Fosc/8</p&

101、gt;<p>  #define FOSCD16 0x04 //系統(tǒng)時(shí)鐘為Fosc/16</p><p>  #define FOSCD32 0x05 //系統(tǒng)時(shí)鐘為Fosc/32</p><p>  #define FOSCD64 0x06 //系統(tǒng)時(shí)鐘為Fosc/64</p><p>

102、;  #define FOSCD128 0x07 //系統(tǒng)時(shí)鐘為Fosc/128</p><p>  /////////////////////////////////</p><p>  sfr BUS_SPEED = 0xa1; //數(shù)據(jù)總線速度控制器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2

103、 Bit1 Bit0</p><p>  //位描述 - - ALES1 ALES0 - RWS2 RWS1 RWS0</p><p>  //初始值=xx10,x011 x x 1 0 x 0 1

104、1</p><p>  #define ALES1 0x20 //P0地址建立時(shí)間和保持時(shí)間到ALE信號(hào)的下降沿的時(shí)鐘數(shù)</p><p>  #define ALES0 0x10 //ALES1/ALES0=0/0:1個(gè)時(shí)鐘 0/1:2個(gè)時(shí)鐘 1/0:3個(gè)時(shí)鐘 1/1:4個(gè)時(shí)鐘</p><p>  #define

105、RWS2 0x04 //MOVX指令的時(shí)鐘數(shù)</p><p>  #define RWS1 0x02 //RWS2/RWS1/RWS0=000:1個(gè)時(shí)鐘 001:2個(gè)時(shí)鐘 010:3個(gè)時(shí)鐘 011:4個(gè)時(shí)鐘</p><p>  #define RWS0 0x01 // 100:5

106、個(gè)時(shí)鐘 101:6個(gè)時(shí)鐘 110:7個(gè)時(shí)鐘 111:8個(gè)時(shí)鐘</p><p>  /////////////////////////////////</p><p>  sfr WDT_CONTR = 0xc1; //看門狗定時(shí)器控制器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0<

107、/p><p>  //位描述 WDT_FLAG - EN_WDT CLR_WDT IDL_WDT PS2 PS1 PS0</p><p>  //初始值=0x00,0000 0 x 0 0 0 0 0 0</p><p>

108、;  #define WDT_FLAG 0x80 //看門狗復(fù)位標(biāo)志,當(dāng)看門狗溢出產(chǎn)生復(fù)位后,硬件自動(dòng)置1,需要由軟件清0</p><p>  #define EN_WDT 0x20 //軟件使能看門狗,打開后不能用軟件的方式關(guān)閉</p><p>  #define CLR_WDT 0x10 //清看門狗定時(shí)器</p&

109、gt;<p>  #define IDLE_WDT 0x08 //IDLE模式下,看門狗定時(shí)器是否繼續(xù)計(jì)時(shí)</p><p>  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><

110、;p>  sfr AUXR = 0x8e; //輔助寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0</p><p>  //位描述 T0x12 T1x12 UM0x6 BRTR S2SMOD BRTx12 EXTRAM S

111、1BRS</p><p>  //初始值=0000,0000 0 0 0 0 0 0 0 0</p><p>  #define T0x12 0x80 //定時(shí)器0時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍于傳統(tǒng)速度)&l

112、t;/p><p>  #define T1x12 0x40 //定時(shí)器1時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍于傳統(tǒng)速度)</p><p>  #define UR0x6 0x20 //串口模式0的時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/2(2分頻,,即6倍于傳統(tǒng)速度

113、)</p><p>  #define BRTR 0x10 //獨(dú)立波特率發(fā)生器啟動(dòng)控制位,1:啟動(dòng)獨(dú)立波特率發(fā)生器 0:停止獨(dú)立波特率發(fā)生器</p><p>  #define S2SMOD 0x08 //串口2波特率倍速位,置1可使串口2的波特率快1倍</p><p>  #define BRTx12

114、 0x04 //獨(dú)立波特率發(fā)生器時(shí)鐘控制,0:Fosc/12(傳統(tǒng)的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍于傳統(tǒng)速度)</p><p>  #define EXTRAM 0x02 //內(nèi)部擴(kuò)展RAM禁能位,0:內(nèi)部擴(kuò)展RAM有效 1:禁用內(nèi)部擴(kuò)展RAM</p><p>  #define S1BRS 0x01

115、 //串口1的波特率發(fā)生器選擇位,0:定時(shí)器1 1:獨(dú)立波特率發(fā)生器(注意串口2只能夠使用獨(dú)立波特率發(fā)生器)</p><p>  /////////////////////////////////</p><p>  sfr AUXR1 = 0xa2; //輔助寄存器1 Bit7 Bit6 Bit5 Bit4 Bit3

116、 Bit2 Bit1 Bit0</p><p>  //位描述 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS</p><p>  //初始值=x000,00x0 x 0 0 0 0 0 x

117、 0</p><p>  #define PCA_P4 0x40 //將PCA口映射到P4口,0:ECI(P1.2)CEX0(P1.3)CEX1(P1.4) 1:ECI(P4.1)CEX0(P4.2)CEX1(P4.3)</p><p>  #define SPI_P4 0x20 //將SPI口映射到P4口,0:SCLK(P1.7

118、)MISO(P1.6)MOSI(P1.5)SS(P1.4) 1:SCLK(P4.3)MISO(P4.2)MOSI(P4.1)SS(P4.0)</p><p>  #define S2_P4 0x10 //將串口2映射到P4口,0:RXD2(P1.2)TXD2(P1.3) 1:RXD2(P4.2)TXD2(P4.3)</p><p>  #define GF2

119、 0x08 //通用標(biāo)志位2</p><p>  #define ADRJ 0x04 //ADC結(jié)果調(diào)整,0:{ADC_RES[9876,5432],ADC_RESL[----,--10]} 1:{ADC_RES[----,--98],ADC_RESL[7654,3210]}</p><p>  #define DPS 0

120、x01 //DPTR0/DPTR1選擇位,0:DPTR0 1:DPTR1</p><p>  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><p>  sfr P0 =

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論