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

下載本文檔

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

文檔簡介

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

2、 單片機(jī)系統(tǒng)原理圖及工作原理描述</p><p><b>  程序模塊框圖</b></p><p><b>  程序清單</b></p><p>  設(shè)計(jì)或調(diào)試過程中碰到的問題及決計(jì)方法</p><p>  測試數(shù)據(jù),誤差分析,補(bǔ)償方法,補(bǔ)償前后精度比較</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>  一、課程設(shè)計(jì)任務(wù)書4</p><p><b>  1)基本要求4</b></p><p>  2)設(shè)計(jì)報(bào)告要求:4</p><p>  3)課程設(shè)計(jì)驗(yàn)收標(biāo)準(zhǔn):5</p><p>  二、個(gè)性化電子鐘功能描述5</p><p>  1.基本計(jì)時(shí)

5、功能:5</p><p><b>  2.校準(zhǔn)功能5</b></p><p><b>  3.鬧鐘模式6</b></p><p>  三、單片機(jī)系統(tǒng)原理圖及工作原理描述6</p><p>  1.各模塊介紹6</p><p>  2.單片機(jī)系統(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>  ; 中斷服務(wù)程序14</p><p>  ;鬧鐘顯示及轉(zhuǎn)碼程序16</p><p

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

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

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

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

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

13、式轉(zhuǎn)換鍵,具有“正常——小時(shí)(校準(zhǔn))——分鐘(校準(zhǔn))——小時(shí)(鬧鈴)——分鐘(鬧鈴)”等5種模式,每按一次,轉(zhuǎn)換一種模式。假設(shè)當(dāng)前處于正常模式,按一下此鍵,“小時(shí)”閃爍,表示進(jìn)入“小時(shí)”調(diào)校模式,再按一次,轉(zhuǎn)入分鐘模式,如此類推,正常模式下不閃爍。</p><p>  [UP]——加“1”鍵,按下此鍵,被選中的項(xiàng)目加“1”</p><p>  [DOWN]——減“1”鍵,按下此鍵,被選中的

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

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

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

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

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

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

20、gt;<b>  顯示接口電路</b></p><p><b>  鍵盤接口電路</b></p><p><b>  蜂鳴器驅(qū)動(dòng)電路</b></p><p><b>  電源部分</b></p><p>  軟件設(shè)計(jì)及答辯(60%),包括以下知識點(diǎn):<

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

22、;b>  鬧鈴程序</b></p><p><b>  按鍵聲程序</b></p><p>  課程設(shè)計(jì)報(bào)告(20%),具體要求見上面所述.</p><p>  基礎(chǔ)較好的學(xué)生可以結(jié)合實(shí)際應(yīng)用自擬題目,題目和具體設(shè)計(jì)內(nèi)容定好后</p><p><b>  由指導(dǎo)老師比準(zhǔn)。</b>&

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

24、gt;<p>  當(dāng)P3.7鍵按下,顯示年月日,因?yàn)楸容^方便觀察,并沒有設(shè)置小數(shù)點(diǎn)以作區(qū)分。</p><p><b>  校準(zhǔn)功能</b></p><p>  上電顯示為時(shí)分秒或年月日</p><p>  當(dāng)P3.4按下一次,校準(zhǔn)時(shí)鐘位,時(shí)鐘位閃爍</p><p>  當(dāng)P3.4按下兩次,校準(zhǔn)分鐘位,分鐘位

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

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

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

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

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

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

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

32、電位器,可以把輸入的9V電壓轉(zhuǎn)變成5V的電壓。</p><p><b>  單片機(jī)系統(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;掃描顯示計(jì)數(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ù)軟件計(jì)數(shù)器</p><p>  MODEEQU70H </p><p>  TEM

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

42、;  ORG0000H</p><p>  LJMPMAIN</p><p>  ORG0003H;外部中斷0的標(biāo)志</p><p>  RETI;中斷標(biāo)志</p><p>  ORG000BH;定時(shí)器中斷0的標(biāo)志</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í)間常數(shù)</p><p>  MOVTH0,#(65536-4608)/256</p>&

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

46、PU中斷允許總開關(guān)</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跳轉(zhuǎn),沒有按鍵,執(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;按下跳轉(zhuǎn)

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>  ;----------無論如何都要選擇一個(gè)模式-------------------------</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,調(diào)用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,調(diào)用顯示程序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時(shí),不為模式8,判斷是否為模式9</p><p>  LCALLCONVERT_BCD3;為模式8,調(diào)用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,調(diào)用clockdisplay程序</p><p>  LCALLCLOCK_DISPLAY</p><p><b>  RET</b></p><p>  NOT_CLOCK2:</p><p>  LCALLCONVERT_BCD2;

61、 此時(shí)為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,調(diào)用正常的顯示程序</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,調(diào)用正常的顯示程序</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>  ; 中斷服務(wù)程序</b></p><p>  ;------------------------中斷服務(wù)程序-------------------------------------</p><p><b>  T0_INT:</b></p><p&

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

67、;選擇2區(qū)工作存儲(chǔ)單元</p><p>  MOVTL0,#(65536-5000)MOD 256;恢復(fù)時(shí)間常數(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取反閃爍標(biāo)志位</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 ;時(shí)位</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>  ;鬧鐘顯示及轉(zhuǎn)碼程序</p><p><b>  ;鬧鐘顯示程序</b></p><p>  ;--------------------------時(shí)鐘的顯示函數(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ù)中選擇調(diào)用哪個(gè)表</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 ;調(diào)試用</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>  ;----------------時(shí)鐘

84、閃爍模式選擇程序----------------------------</p><p><b>  FLASH3:</b></p><p>  JNBFLASH_FLAG,F31;若標(biāo)志位位為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,校準(zhǔn)小時(shí)</p><p>  F32:;CJNEA,#0,F34;模式為0,則返回?</p><p>  LJMPM_

86、F_CLOCK;模式9,校準(zhǔn)分鐘</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轉(zhuǎn)碼程序</p><

88、p>  ;-----------------------為鬧鐘做BCD轉(zhuǎn)碼----------------</p><p>  CONVERT_BCD3:</p><p><b>  ;第一個(gè)數(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>  ;第二個(gè)數(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>  ;第三個(gè)數(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>  ;第四個(gè)數(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>  ;----------------------檢測是否到達(dá)鬧鐘

95、時(shí)間---------------------------------</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;為了防止整一分鐘都會(huì)叫,只在一秒的時(shí)候判斷一次</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>  ; 顯示時(shí)分秒程序</b></p><p><b>  ;時(shí)分秒顯示程序</b></p&g

98、t;<p>  ;------------------------顯示時(shí)分秒程序--------------------------------------</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 ;調(diào)試用</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>  ;時(shí)分秒BCD程序</b></p><p>  ;-----------------------------------------------------</p><p>  CONVERT_BCD1:</p><

107、;p><b>  ;第一個(gè)數(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>  ;第二個(gè)數(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>  ;第三個(gè)數(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>  ;第四個(gè)數(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>  ;第五個(gè)數(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>  ;第六個(gè)數(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;帶進(jìn)位循環(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:十進(jìn)制

119、調(diào)整指令,將二進(jìn)制結(jié)果</p><p><b>  ;調(diào)整為十進(jìn)制數(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;在進(jìn)行A+R4前,A的值是多少</p><p><b>  DAA</b></p><p>  MOVR4,A</p><p>  DJNZR7,IB

121、TL ;減1為1跳轉(zhuǎn)</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轉(zhuǎn)碼程序</p><p>  ;--------------------------啟用第二段轉(zhuǎn)碼程序----

128、--------------------</p><p>  CONVERT_BCD2:</p><p><b>  ;第1_2個(gè)數(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個(gè)數(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個(gè)數(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個(gè)數(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個(gè)數(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個(gè)數(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個(gè)數(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個(gè)數(shù)碼管</b></p><p>  MOVA,R6</p><p>  ANLA,#0F0H</p><p

溫馨提示

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

評論

0/150

提交評論