單片機課程設計--基于單片機的數(shù)字電子鐘_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  論文題目: 基于單片機的數(shù)字電子鐘 </p><p>  課程名稱: 單片機原理機接口技術 </p><p><b>  目錄1</b></p><p><b>  設計任務書</b></p><p>  個性化電子鐘功能描述</p><p> 

2、 單片機系統(tǒng)原理圖及工作原理描述</p><p><b>  程序模塊框圖</b></p><p><b>  程序清單</b></p><p>  設計或調試過程中碰到的問題及決計方法</p><p>  測試數(shù)據(jù),誤差分析,補償方法,補償前后精度比較</p><p>&l

3、t;b>  收獲及意見</b></p><p><b>  附錄(完整電路圖)</b></p><p><b>  目錄2</b></p><p><b>  目錄12</b></p><p><b>  目錄23</b></p

4、><p>  一、課程設計任務書4</p><p><b>  1)基本要求4</b></p><p>  2)設計報告要求:4</p><p>  3)課程設計驗收標準:5</p><p>  二、個性化電子鐘功能描述5</p><p>  1.基本計時

5、功能:5</p><p><b>  2.校準功能5</b></p><p><b>  3.鬧鐘模式6</b></p><p>  三、單片機系統(tǒng)原理圖及工作原理描述6</p><p>  1.各模塊介紹6</p><p>  2.單片機系統(tǒng)總圖9&l

6、t;/p><p>  四、程序模塊框圖9</p><p><b>  1.功能框圖9</b></p><p>  2.程序框圖10</p><p>  五、程序清單11</p><p><b>  ;變量定義11</b></p><p>

7、<b>  ;初始化12</b></p><p>  ;主要執(zhí)行程序12</p><p>  ;按鍵P3.7檢測程序13</p><p>  ;顯示模式選擇程序13</p><p>  ; 中斷服務程序14</p><p>  ;鬧鐘顯示及轉碼程序16</p><p

8、>  ;檢測鬧鐘程序18</p><p>  ; 顯示時分秒程序18</p><p>  ; 顯示年月日的程序22</p><p>  ;年月日校準程序26</p><p>  ;按鍵檢測程序28</p><p><b>  ;功能小程序34</b></p><

9、;p>  六、設計或調試過程中碰到的問題及解決方法37</p><p>  1.存儲錯亂37</p><p>  2.工作區(qū)的選擇38</p><p>  3.鬧鐘響的時間38</p><p>  4.按鍵紊亂39</p><p>  七、測試數(shù)據(jù),誤差分析,補償方法,補償前后精度比較39

10、</p><p>  a)未考慮月份不同天數(shù)39</p><p>  b)中斷服務程序造成的時間延遲39</p><p>  八、收獲及意見40</p><p>  九、附錄(完整電路圖)40</p><p><b>  課程設計任務書</b></p><p&g

11、t;<b>  基本要求</b></p><p>  根據(jù)《單片機原理及接口技術》所學的內容及其他相關課程的知識,結合各生的基礎,充分發(fā)揮個人的特長,設計個性化數(shù)字電子鐘。具體要求以下:</p><p><b>  基本電路</b></p><p>  AT89S51CPU,12MHZ時鐘,常規(guī)上電和手動復位電路。<

12、/p><p><b>  數(shù)碼管顯示模式</b></p><p>  4位LED數(shù)碼顯示器(帶鐘點),分別顯示“小時:分鐘”或“分鐘:秒”</p><p><b>  獨立按鍵</b></p><p>  3個獨立試按鍵,具體功能描述如下:</p><p>  [MODE]——模

13、式轉換鍵,具有“正?!r(校準)——分鐘(校準)——小時(鬧鈴)——分鐘(鬧鈴)”等5種模式,每按一次,轉換一種模式。假設當前處于正常模式,按一下此鍵,“小時”閃爍,表示進入“小時”調校模式,再按一次,轉入分鐘模式,如此類推,正常模式下不閃爍。</p><p>  [UP]——加“1”鍵,按下此鍵,被選中的項目加“1”</p><p>  [DOWN]——減“1”鍵,按下此鍵,被選中的

14、項目減“1”</p><p><b>  蜂鳴器</b></p><p>  設計1路蜂鳴器輸出驅動電路,用于報警或按鍵聲</p><p><b>  電源電路</b></p><p>  電源:9V交流輸入,全波整流,濾波,7805穩(wěn)壓電路,輸出5V直流電源共給單片機系統(tǒng)。</p>

15、<p><b>  軟件</b></p><p>  編寫數(shù)字電字鐘的所有軟件,包括主程序,定時器中斷計時程序,定時器中斷掃描顯示程序,鍵盤掃描及功能程序,BCD碼轉換程序,“二翻十﹑拆字﹑轉碼”程序,鬧鈴程序等等。將這些程序整合成一個完整的電子鐘程序,在軟件模擬器上調試,在MCS51學習機上調試,并測試其功能及性能。在設計軟件時,學生可充分發(fā)揮自己的特長和想象力,自行擴充功能,如

16、“秒表”功能,通信功能,鐘控功能等。</p><p><b>  精度分析</b></p><p>  在程序調試通過后,測試計時精度,分析誤差來源,提出補償方法。</p><p><b>  設計報告要求:</b></p><p>  每人一份設計報告,要求獨立完成,用統(tǒng)一的封面裝訂,設計報告的內

17、容包括以下部分:</p><p><b>  設計任務書</b></p><p>  個性化電子鐘功能要求</p><p>  單片機系統(tǒng)原理圖及工作原理描述</p><p><b>  程序模塊框圖</b></p><p><b>  程序清單</b>

18、</p><p>  設計或調試過程中碰到的問題及決計方法</p><p>  測試數(shù)據(jù),誤差分析,補償方法,補償前后精度比較</p><p>  完成課程設計后的收獲或體會,對《單片機課程設計》提出改進意見。</p><p><b>  課程設計驗收標準:</b></p><p>  本次課程設

19、計的成績由3大部分組成:即硬件設計﹑軟件設計和課程設計報告。硬件設計主要是電路圖設計(可以用手工畫或計算機輔助設計)。軟件部分在答辯時驗收,并結合答辯情況進行評定。</p><p>  電路原理圖設計(20%),</p><p><b>  包括以下知識點:</b></p><p>  CPU及時鐘,復位電路</p><p&

20、gt;<b>  顯示接口電路</b></p><p><b>  鍵盤接口電路</b></p><p><b>  蜂鳴器驅動電路</b></p><p><b>  電源部分</b></p><p>  軟件設計及答辯(60%),包括以下知識點:<

21、;/p><p><b>  主程序及初始化程序</b></p><p><b>  定時中斷及計時程序</b></p><p><b>  定時中斷及顯示程序</b></p><p><b>  鍵盤程序</b></p><p><

22、;b>  鬧鈴程序</b></p><p><b>  按鍵聲程序</b></p><p>  課程設計報告(20%),具體要求見上面所述.</p><p>  基礎較好的學生可以結合實際應用自擬題目,題目和具體設計內容定好后</p><p><b>  由指導老師比準。</b>&

23、lt;/p><p><b>  指導老師:樂金松</b></p><p>  2014,12,28</p><p>  個性化電子鐘功能描述</p><p><b>  基本計時功能:</b></p><p>  上電顯示時鐘、分鐘、秒,時鐘和分鐘顯示小數(shù)點以做區(qū)分</p&

24、gt;<p>  當P3.7鍵按下,顯示年月日,因為比較方便觀察,并沒有設置小數(shù)點以作區(qū)分。</p><p><b>  校準功能</b></p><p>  上電顯示為時分秒或年月日</p><p>  當P3.4按下一次,校準時鐘位,時鐘位閃爍</p><p>  當P3.4按下兩次,校準分鐘位,分鐘位

25、閃爍</p><p>  當P3.4按下三次,校準秒位,秒位閃爍,注意,此時若是顯示年月日模式,調整無效,數(shù)碼管熄滅</p><p>  當P3.4按下四次,校準年的高位,年的高位閃爍</p><p>  當P3.4按下五次,校準年的低位,年的低位閃爍</p><p>  當P3.4按下六次,校準月份位,月份位閃爍</p>&l

26、t;p>  當P3.4按下七次,校準日位,日位閃爍,此時若是顯示時分秒模式,調整無效,數(shù)碼管熄滅,其中,若P3.5鍵按下,加1,若P3.6鍵按下,減1</p><p>  當P3.4按下八次或九次,為鬧鐘校準模式</p><p>  當P3.4按到十次,恢復顯示年月日或者時分秒</p><p><b>  鬧鐘模式</b></p&g

27、t;<p>  當P3.4按到八次,時鐘和分鐘位顯示初始時間(12:00),設置小時鬧鐘。若P3.5鍵按下,加1,若P3.6鍵按下,減1</p><p>  當P3.4按到九次,設置分鐘鬧鐘,若P3.5鍵按下,加1,若P3.6鍵按下,減1</p><p>  即使沒有設置鬧鐘,在時間為12:00時,也會啟動鬧鐘,鬧鐘聲音為十次簡短的鳴聲。</p><p&g

28、t;  單片機系統(tǒng)原理圖及工作原理描述</p><p><b>  各模塊介紹</b></p><p>  CPU及時鐘,復位電路</p><p><b>  復位電路</b></p><p>  功能描述:上電時,單片機會自動復位,按下S1按鍵時,手動復位,該電子鐘系統(tǒng)會從0開始計時。</p

29、><p><b>  時鐘</b></p><p>  此電路系統(tǒng)配置的是12MHZ的晶振,擁有這個晶振,電路才會計時、中斷系統(tǒng)才會溢出。</p><p><b>  CPU</b></p><p>  此電子鐘系統(tǒng)采用的是STC公司的89C52單片機,本電路主要使用其P0口(數(shù)碼管)、P3口(按鍵)、

30、和P1口(蜂鳴器),該單片機內部含有運算器、存儲器、控制器、輸入輸出設備等。</p><p><b>  顯示接口電路</b></p><p>  這個開發(fā)板需要兩個鎖存器分別控制位選和斷選,只有位選控制端置一,才能送位選信號,同理,斷選控制端置一,才能送段選信號。</p><p><b>  鍵盤接口電路</b><

31、/p><p>  此按鍵,按下為0,松開為1。</p><p><b>  蜂鳴器驅動電路</b></p><p>  蜂鳴器送邏輯1的時候才能發(fā)出聲音。</p><p><b>  電源部分</b></p><p>  此電源用LM317芯片進行整流,進行濾波和穩(wěn)壓后,通過調節(jié)

32、電位器,可以把輸入的9V電壓轉變成5V的電壓。</p><p><b>  單片機系統(tǒng)總圖</b></p><p><b> ?。ㄔ斠姼戒洠?lt;/b></p><p><b>  程序模塊框圖</b></p><p><b>  功能框圖</b></p

33、><p><b>  程序框圖</b></p><p><b>  程序清單</b></p><p><b>  ;變量定義</b></p><p>  LED1EQU7FH</p><p>  LED2EQU7EH</p><

34、;p>  LED3EQU7DH</p><p>  LED4EQU7CH</p><p>  LED5EQU7BH</p><p>  LED6EQU7AH</p><p>  LED1_2EQU6CH</p><p>  LED2_2EQU6BH</p><

35、;p>  LED3_2EQU6AH</p><p>  LED4_2EQU69H</p><p>  LED5_2EQU68H</p><p>  LED6_2EQU67H</p><p>  LED7_2EQU66H</p><p>  LED8_2EQU65H</p&

36、gt;<p>  SCAN_COUNT2EQU64H</p><p>  MODE2EQU60H</p><p>  SCAN_COUNT3EQU5FH</p><p>  SCAN_COUNT4EQU5EH</p><p>  LED1_CLOCK_HOUR EQU5DH</p>

37、<p>  LED2_CLOCK_HOUREQU5CH</p><p>  LED1_CLOCK_MIN EQU5BH</p><p>  LED2_CLOCK_MINEQU5AH</p><p>  H_MEM_CLOCKEQU59H</p><p>  M_MEM_CLOCKEQU58

38、H</p><p>  SCAN_COUNT5EQU57H</p><p>  SCAN_COUNTEQU77H;掃描顯示計數(shù)器</p><p>  TEMP1EQU76H</p><p>  TEMP2EQU75H</p><p>  TEMP3EQU74H</

39、p><p>  H_MEMEQU73H</p><p>  M_MEMEQU72H</p><p>  S_MEMEQU71H</p><p>  D_MEMEQU6DH</p><p>  MON_MEMEQU63H</p><p>  Y_MEM

40、_1EQU62H</p><p>  Y_MEM_2EQU61H</p><p>  MODE_REGEQU6FH</p><p>  TIMER_COUNTEQU6EH ;定時器中斷次數(shù)軟件計數(shù)器</p><p>  MODEEQU70H </p><p>  TEM

41、P4EQU20H.1</p><p>  ;TEMP4EQU6CH</p><p>  FLASH_FLAGEQU20H.0;定義閃爍標志位</p><p>  CLOCK_FLAGEQU20H.2</p><p><b>  ;初始化</b></p><p>

42、;  ORG0000H</p><p>  LJMPMAIN</p><p>  ORG0003H;外部中斷0的標志</p><p>  RETI;中斷標志</p><p>  ORG000BH;定時器中斷0的標志</p><p>  LJMPT0_INT

43、</p><p>  ORG0013H;外部中斷1</p><p><b>  RETI</b></p><p>  ;-------------------------------------------------------------</p><p>  ORG0030H;好像一般都有

44、這一句</p><p><b>  MAIN:</b></p><p>  MOVSP,#2FH</p><p>  MOVTL0,#(65536-4608)MOD 256;MOD是取余數(shù),初始化時間常數(shù)</p><p>  MOVTH0,#(65536-4608)/256</p>&

45、lt;p>  MOVTMOD,#00000001B;G=0,C/T取T(定時器),模式為模式1(16位定時器或計數(shù)器方式)</p><p>  SETBET0;T0(定時器0中斷)中斷允許 </p><p>  SETBTR0;定時器0控制位,置1</p><p>  SETBEA;C

46、PU中斷允許總開關</p><p>  LCALL CLR_MEM</p><p>  MOVMON_MEM,#1</p><p>  MOVD_MEM,#1</p><p>  ;------------</p><p>  MOVH_MEM_CLOCK,#12</p>&

47、lt;p><b>  CLRP1.4</b></p><p><b>  ;主要執(zhí)行程序</b></p><p>  ;---------------------------------------------------------------</p><p><b>  WAIT:</b>

48、;</p><p>  ;LCALLCLOCK_CHOOSE</p><p>  ;LCALLDELAY_1S</p><p>  LCALLKEY4_SCAN</p><p>  LCALLCHOOSE</p><p>  LCALLCHECK_TIME</p><p> 

49、 SJMPWAIT</p><p>  ;按鍵P3.7檢測程序</p><p>  ;------------------顯示模式的選擇程序--------------------------------</p><p>  ;------------------等待按鍵按下---------------------------</p><p

50、>  KEY4_SCAN:</p><p><b>  NOKEY_4:</b></p><p>  MOVC,P3.7 </p><p><b>  CPLC</b></p><p>  JNCGATE4;CY為0跳轉,沒有按鍵,執(zhí)行display程序</p&g

51、t;<p>  MOVC,P3.7</p><p>  MOVTEMP4,C</p><p>  LCALLDELAY_10MS</p><p>  MOVC,P3.7</p><p>  ORLC,TEMP4</p><p>  JNCK4;按下跳轉

52、;沒按下,返回</p><p>  GATE4:RET</p><p><b>  K4:</b></p><p>  LCALLSOUND</p><p>  INCMODE2</p><p>  MOVA,MODE2</p><p>  CJNE

53、A,#2,K41 ;mode只能為0或者1 mode為1執(zhí)行display2程序</p><p>  MOVMODE2,#0</p><p>  K41:JNBP3.7,$</p><p><b>  RET </b></p><p><b>  ;顯示模式選擇程序</b><

54、/p><p>  ;----------無論如何都要選擇一個模式-------------------------</p><p><b>  CHOOSE:</b></p><p>  MOVA,MODE2</p><p>  CJNEA,#0,NOT_CLOCK0; MODE2為1,判斷是模式8還是模式9<

55、;/p><p>  MOVA,MODE ;MODE2為0, 判斷是否為8或者9</p><p>  CJNEA,#8,NOT_CLOCK3;MODE2=0的情況下,不為模式8,判斷是否為模式9</p><p>  LCALLCONVERT_BCD3;為模式8,調用display——clock程序</p><p>  LCA

56、LLCLOCK_DISPLAY ;為模式8</p><p><b>  RET</b></p><p>  NOT_CLOCK3:</p><p>  CJNEA,#9,NOT_CLOCK4;判斷是否為模式9</p><p>  LCALLCONVERT_BCD3 </p><p>

57、  LJMPCLOCK_DISPLAY</p><p><b>  RET</b></p><p>  NOT_CLOCK4:</p><p>  LCALLCONVERT_BCD1 ;不為模式9,調用顯示程序1</p><p>  LCALLCHOOSE_DISPLAY1</p><

58、p><b>  RET</b></p><p>  NOT_CLOCK0:</p><p>  MOVA,MODE</p><p>  CJNEA,#8,NOT_CLOCK1;MODE2為1時,不為模式8,判斷是否為模式9</p><p>  LCALLCONVERT_BCD3;為模式8,調用dis

59、play——clock程序</p><p>  LCALLCLOCK_DISPLAY</p><p><b>  RET</b></p><p>  NOT_CLOCK1:</p><p>  CJNEA,#9,NOT_CLOCK2;不為模式9,顯示mode2=0下的display程序</p>&

60、lt;p>  LCALLCONVERT_BCD3 ;為模式9,調用clockdisplay程序</p><p>  LCALLCLOCK_DISPLAY</p><p><b>  RET</b></p><p>  NOT_CLOCK2:</p><p>  LCALLCONVERT_BCD2;

61、 此時為mode2模式為1的,選擇閃爍模式,對DISPLAY程序經(jīng)行選擇</p><p>  LCALLCHOOSE_DISPLAY2;模式0,display程序</p><p><b>  RET</b></p><p>  ;-----------顯示模式選擇函數(shù)-----------------------</p>&l

62、t;p>  CHOOSE_DISPLAY1:</p><p>  MOVA,MODE</p><p>  CJNEA,#0,CH_1</p><p>  LCALLDISPLAY1 ;模式為0,調用正常的顯示程序</p><p><b>  RET</b></p><p>&l

63、t;b>  CH_1:</b></p><p>  LCALLDISPLAY1_2</p><p><b>  RET</b></p><p>  CHOOSE_DISPLAY2:</p><p>  MOVA,MODE</p><p>  CJNEA,#0,CH_

64、2</p><p>  LCALLDISPLAY2 ;模式為0,調用正常的顯示程序</p><p><b>  RET</b></p><p><b>  CH_2:</b></p><p>  LCALLDISPLAY2_2</p><p><b>  R

65、ET</b></p><p><b>  ; 中斷服務程序</b></p><p>  ;------------------------中斷服務程序-------------------------------------</p><p><b>  T0_INT:</b></p><p&

66、gt;  PUSHACC;保護現(xiàn)場開始,保護A累加器</p><p>  PUSHPSW;保護程序狀態(tài)字存儲器</p><p>  PUSH DPL;數(shù)據(jù)地址指針(低8位)</p><p><b>  PUSHDPH</b></p><p>  SETBRS1

67、;選擇2區(qū)工作存儲單元</p><p>  MOVTL0,#(65536-5000)MOD 256;恢復時間常數(shù)</p><p>  MOVTH0,#(65536-5000)/256</p><p>  LCALLKEY_SCAN</p><p>  INCTIMER_COUNT</p>&

68、lt;p>  MOVA,TIMER_COUNT</p><p>  CJNEA,#100,T0_INT1;如果A不等于100,跳到TO_INT1</p><p>  MOVTIMER_COUNT,#0</p><p>  CPLFLASH_FLAG;每5MS*100=500MS取反閃爍標志位</p><

69、;p>  ;CPLP1.4</p><p>  ;LCALLFLASH;CPL:Converse Position Logical 位取反</p><p>  JNBFLASH_FLAG,T0_INT1;為0跳到TO_INT1</p><p>  INCS_MEM</p><p>  MOV

70、A,S_MEM</p><p>  CJNEA,#60,T0_INT1;秒位</p><p>  MOVS_MEM,#0</p><p>  INC M_MEM</p><p>  MOVA,M_MEM</p><p>  CJNEA,#60,T0_INT1 ;分位</

71、p><p>  MOVM_MEM,#0</p><p>  INC H_MEM</p><p>  MOVA,H_MEM</p><p>  CJNEA,#24,T0_INT1</p><p>  MOVH_MEM,#0 ;時位</p><p>  INC

72、D_MEM</p><p>  MOVA,D_MEM</p><p>  CJNEA,#32,T0_INT1</p><p>  MOVD_MEM,#1</p><p><b>  ;天</b></p><p>  INCMON_MEM</p><p&

73、gt;  MOVA,MON_MEM</p><p>  CJNEA,#13,T0_INT1</p><p>  MOVMON_MEM,#1;月</p><p>  INCY_MEM_1</p><p>  MOVA,Y_MEM_1</p><p>  CJNEA,#100,T0

74、_INT1</p><p>  MOVY_MEM_1,#0 ;低位年</p><p>  INCY_MEM_2</p><p>  MOVA,Y_MEM_2</p><p>  CJNEA,#100,T0_INT1</p><p>  MOVY_MEM_2,#0;高位

75、年</p><p><b>  T0_INT1:</b></p><p><b>  POPDPH</b></p><p><b>  POPDPL</b></p><p><b>  POPPSW</b></p><

76、p><b>  POPACC</b></p><p>  RETI ;出棧</p><p>  ;鬧鐘顯示及轉碼程序</p><p><b>  ;鬧鐘顯示程序</b></p><p>  ;--------------------------時鐘的顯示函數(shù)-----

77、----------------------------</p><p>  CLOCK_DISPLAY:</p><p>  ;SETBCLOCK_FLASH</p><p>  MOVP0,#11111111B</p><p>  SETBP2.7</p><p><b>  NOP<

78、/b></p><p><b>  NOP</b></p><p>  CPLP2.7</p><p>  MOVA,SCAN_COUNT5</p><p>  ADDA,ACC</p><p>  MOVR1,A</p><p> 

79、 LCALLFLASH3 ;在flash函數(shù)中選擇調用哪個表</p><p>  ;MOVDPTR,#LED_SCAN_TABLE</p><p>  MOVA,R1</p><p>  MOVCA,@A+DPTR</p><p>  SETBP2.7;位鎖存</p><p

80、>  MOVP0,A</p><p>  CLRP2.7 </p><p>  MOVA,SCAN_COUNT5</p><p>  ADDA,ACC</p><p><b>  INCA</b></p><p>  MOVCA,@A+DPTR

81、</p><p>  MOVR0,A</p><p>  MOVA,@R0</p><p>  SETBP2.6</p><p>  MOVP0,A</p><p>  ;LCALLDELAY_1S ;調試用</p><p>  CLRP2.6 ;D

82、B3FH,06H,5BH,04FH,66H,6DH,7DH,07H</p><p>  ;DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,0FFH </p><p>  INCSCAN_COUNT5</p><p>  MOVA,SCAN_COUNT5 </p><p>  CJNEA,#4,D

83、ONE5</p><p>  MOVSCAN_COUNT5,#0</p><p><b>  DONE5: </b></p><p><b>  RET</b></p><p>  ;鬧鐘閃爍及模式選擇程序</p><p>  ;----------------時鐘

84、閃爍模式選擇程序----------------------------</p><p><b>  FLASH3:</b></p><p>  JNBFLASH_FLAG,F31;若標志位位為0,顯示閃爍程序,否則顯示正常模式</p><p>  ;LCALLLIGHT_OFF</p><p>  LJM

85、P FLASH3</p><p>  F31:MOVA,MODE</p><p>  CJNEA,#8,F32</p><p>  LJMPH_F_CLOCK;模式8,校準小時</p><p>  F32:;CJNEA,#0,F34;模式為0,則返回?</p><p>  LJMPM_

86、F_CLOCK;模式9,校準分鐘</p><p>  F34:RET; </p><p>  ;----------------閃爍程序--------------------------</p><p>  H_F_CLOCK:</p><p>  MOVDPTR,#LED_SCAN_TABLE_CLOCK_1</p>

87、<p><b>  RET</b></p><p>  M_F_CLOCK:</p><p>  MOVDPTR,#LED_SCAN_TABLE_CLOCK_2</p><p><b>  RET</b></p><p>  ;鬧鐘BCD轉碼程序</p><

88、p>  ;-----------------------為鬧鐘做BCD轉碼----------------</p><p>  CONVERT_BCD3:</p><p><b>  ;第一個數(shù)碼管</b></p><p>  MOVR3,H_MEM_CLOCK</p><p>  MOVR2,#0&l

89、t;/p><p>  LCALLBTID</p><p>  MOVA,R6</p><p>  ANLA,#0FH;保留低四位</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  MOVL

90、ED1_CLOCK_HOUR,A</p><p><b>  ;第二個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H;保留高四位</p><p>  SWAPA</p><p>  MOVDPTR,#LED_CODE

91、</p><p>  MOVCA,@A+DPTR</p><p>  MOVLED2_CLOCK_HOUR,A</p><p><b>  ;第三個數(shù)碼管</b></p><p>  MOVR3,M_MEM_CLOCK</p><p>  MOVR2,#0</p>

92、<p>  LCALLBTID</p><p>  MOVA,R6</p><p>  ANLA,#0FH</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  MOVLED1_CLOCK_MIN,A&l

93、t;/p><p><b>  ;第四個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H</p><p><b>  SWAPA</b></p><p>  ;MOVDPTR,#LED_CODE</p>

94、<p>  MOVCA,@A+DPTR</p><p>  MOVLED2_CLOCK_MIN,A</p><p><b>  RET</b></p><p><b>  ;檢測鬧鐘程序</b></p><p>  ;----------------------檢測是否到達鬧鐘

95、時間---------------------------------</p><p>  CHECK_TIME:</p><p>  MOVA,H_MEM_CLOCK</p><p>  CJNEA,H_MEM,OVER2</p><p>  CHECK_NEXT:</p><p>  MOVA,M_

96、MEM_CLOCK</p><p>  CJNEA,M_MEM,OVER2</p><p>  MOVA,S_MEM;為了防止整一分鐘都會叫,只在一秒的時候判斷一次</p><p>  CJNEA,#0,OVER2</p><p>  LCALLCLOCK_SOUND</p><p><b>

97、;  RET</b></p><p><b>  OVER2:</b></p><p><b>  RET</b></p><p><b>  ; 顯示時分秒程序</b></p><p><b>  ;時分秒顯示程序</b></p&g

98、t;<p>  ;------------------------顯示時分秒程序--------------------------------------</p><p><b>  DISPLAY1:</b></p><p>  MOVP0,#11111111B</p><p>  SETBP2.7</p>

99、;<p><b>  NOP</b></p><p><b>  NOP</b></p><p>  ;MOVP0,#0FFH</p><p>  CPLP2.7</p><p>  MOVA,SCAN_COUNT;之前定義過:SCAN_COUNTEQU

100、7BH</p><p>  ADDA,ACC</p><p>  MOVDPTR,#LED_SCAN_TABLE</p><p>  MOVCA,@A+DPTR</p><p>  SETBP2.7;位鎖存</p><p>  MOVP0,A</p><p

101、>  CLRP2.7 </p><p>  MOVA,SCAN_COUNT</p><p>  ADDA,ACC</p><p><b>  INCA</b></p><p>  MOVCA,@A+DPTR</p><p>  MOVR0,A&

102、lt;/p><p>  MOVA,@R0</p><p>  MOVR0,SCAN_COUNT</p><p>  DOT:CJNER0,#2,NOACT1</p><p>  ACT:SETBP2.6</p><p>  ORLA,#80H</p><p>  MOV

103、P0,A</p><p>  SETBP0.7 ;調試用</p><p>  CLRP2.6</p><p>  SJMPGO_ON</p><p>  NOACT1: CJNER0,#4,NOACT2</p><p><b>  SJMPACT</b>&l

104、t;/p><p>  NOACT2:SETBP2.6</p><p>  MOVP0,A </p><p>  CLRP2.6 ;DB3FH,06H,5BH,04FH,66H,6DH,7DH,07H</p><p>  ;DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,0FFH &l

105、t;/p><p>  GO_ON:INCSCAN_COUNT</p><p>  MOVA,SCAN_COUNT </p><p>  CJNEA,#6,DONE</p><p>  MOVSCAN_COUNT,#0</p><p><b>  DONE: </b><

106、/p><p><b>  RET</b></p><p><b>  ;時分秒BCD程序</b></p><p>  ;-----------------------------------------------------</p><p>  CONVERT_BCD1:</p><

107、;p><b>  ;第一個數(shù)碼管</b></p><p>  MOVR3,S_MEM</p><p>  MOVR2,#0</p><p>  LCALLBTID</p><p>  MOVA,R6</p><p>  ANLA,#0FH;保留低四位<

108、/p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  MOVLED1,A</p><p><b>  ;第二個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANL

109、A,#0F0H;保留高四位</p><p>  SWAPA</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  MOVLED2,A</p><p><b>  ;第三個數(shù)碼管</b>&l

110、t;/p><p>  MOVR3,M_MEM</p><p>  MOVR2,#0</p><p>  LCALLBTID</p><p>  MOVA,R6</p><p>  ANLA,#0FH</p><p>  MOVDPTR,#LED_CODE</p

111、><p>  MOVCA,@A+DPTR</p><p>  MOVLED3,A</p><p><b>  ;第四個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H</p><p><b>  SWA

112、PA</b></p><p>  ;MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  MOVLED4,A</p><p><b>  ;第五個數(shù)碼管</b></p><p>  MOVR3,H_MEM<

113、;/p><p>  MOVR2,#0</p><p>  LCALLBTID</p><p>  MOVA,R6</p><p>  ANLA,#0FH</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p

114、><p>  MOVLED5,A</p><p><b>  ;第六個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H</p><p><b>  SWAPA</b></p><p>  M

115、OVCA,@A+DPTR</p><p>  MOVLED6,A</p><p><b>  RET</b></p><p><b>  ;二翻十程序</b></p><p>  ;------------------二翻十程序----------------------------<

116、;/p><p><b>  BTID:</b></p><p><b>  CLRA</b></p><p>  MOVR4,A</p><p>  MOVR5,A</p><p>  MOVR6,A</p><p>  MOV

117、R7,#16</p><p><b>  IBTL:</b></p><p><b>  CLRC</b></p><p>  MOVA,R3</p><p>  RLCA;帶進位循環(huán)左移,與LC指令的區(qū)別?</p><p>  MOVR3,A

118、</p><p>  MOVA,R2</p><p><b>  RLCA</b></p><p>  MOVR2,A</p><p>  MOVA,R6</p><p>  ADDCA,R6</p><p>  DAA;DA:十進制

119、調整指令,將二進制結果</p><p><b>  ;調整為十進制數(shù)</b></p><p>  MOVR6,A</p><p>  MOVA,R5</p><p>  ADDCA,R5</p><p><b>  DAA</b></p>

120、<p>  MOVR5,A</p><p>  MOVA,R4</p><p>  ADDCA,R4;在進行A+R4前,A的值是多少</p><p><b>  DAA</b></p><p>  MOVR4,A</p><p>  DJNZR7,IB

121、TL ;減1為1跳轉</p><p><b>  RET</b></p><p>  ; 顯示年月日的程序</p><p><b>  ;年月日顯示程序</b></p><p>  ;-----------------顯示年月日的程序-----------------</p>&

122、lt;p><b>  DISPLAY2:</b></p><p>  MOVP0,#11111111B</p><p>  SETBP2.7</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p

123、>  ;MOVP0,#0FFH</p><p>  CPLP2.7</p><p>  MOVA,SCAN_COUNT2;之前定義過:SCAN_COUNTEQU7BH</p><p>  ADDA,ACC</p><p>  MOVDPTR,#LED_SCAN_TABLE2</p

124、><p>  MOVCA,@A+DPTR</p><p>  SETBP2.7;位鎖存</p><p>  MOVP0,A</p><p>  CLRP2.7 </p><p>  MOVA,SCAN_COUNT2</p><p>  ADD

125、A,ACC</p><p><b>  INCA</b></p><p>  MOVCA,@A+DPTR</p><p>  MOVR0,A</p><p>  MOVA,@R0</p><p>  SETBP2.6</p><p>  MOV

126、P0,A</p><p>  ;LCALLDELAY_1S</p><p>  CLRP2.6 </p><p>  INCSCAN_COUNT2</p><p>  MOVA,SCAN_COUNT2 </p><p>  CJNEA,#8,DONE2</p><

127、p>  MOVSCAN_COUNT2,#0</p><p><b>  DONE2: </b></p><p><b>  RET</b></p><p>  ;年月日BCD轉碼程序</p><p>  ;--------------------------啟用第二段轉碼程序----

128、--------------------</p><p>  CONVERT_BCD2:</p><p><b>  ;第1_2個數(shù)碼管</b></p><p>  MOVR3,D_MEM</p><p>  MOVR2,#0</p><p>  LCALLBTID</p

129、><p>  MOVA,R6</p><p>  ANLA,#0FH;保留低四位</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  MOVLED1_2,A</p><p><b> 

130、 ;第2_2個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H;保留高四位</p><p>  SWAPA</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p&

131、gt;<p>  MOVLED2_2,A</p><p><b>  ;第3_2個數(shù)碼管</b></p><p>  MOVR3,MON_MEM</p><p>  MOVR2,#0</p><p>  LCALLBTID</p><p>  MOVA,R

132、6</p><p>  ANLA,#0FH</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  JNBFLASH_FLAG,MODE0_BCD1 ;FLASH_FLAG為0跳到MODE0_BCD1</p><p>  SET

133、BACC.7</p><p>  MODE0_BCD1:</p><p>  MOVLED3_2,A</p><p><b>  ;第4_2個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H</p><p&g

134、t;<b>  SWAPA</b></p><p>  MOVCA,@A+DPTR</p><p>  MOVLED4_2,A</p><p><b>  ;第5_2個數(shù)碼管</b></p><p>  MOVR3,Y_MEM_1</p><p>  MO

135、VR2,#0</p><p>  LCALLBTID</p><p>  MOVA,R6</p><p>  ANLA,#0FH</p><p>  MOVDPTR,#LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  JNB

136、FLASH_FLAG,MODE0_BCD2 ;FLASH_FLAG為0跳到MODE0_BCD1</p><p>  SETBACC.7</p><p>  MODE0_BCD2:</p><p>  MOVLED5_2,A</p><p><b>  ;第6_2個數(shù)碼管</b></p>&l

137、t;p>  MOVA,R6</p><p>  ANLA,#0F0H</p><p><b>  SWAPA</b></p><p>  MOVCA,@A+DPTR</p><p>  MOVLED6_2,A</p><p><b>  ;第7_2個數(shù)碼管

138、</b></p><p>  MOVR3,Y_MEM_2</p><p>  MOVR2,#0</p><p>  LCALLBTID</p><p>  MOVA,R6</p><p>  ANLA,#0FH</p><p>  MOVDPTR,#

139、LED_CODE</p><p>  MOVCA,@A+DPTR</p><p>  MOVLED7_2,A</p><p><b>  ;第8_2個數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H</p><p

溫馨提示

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

評論

0/150

提交評論