<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 匯編電子鐘的設(shè)計

          匯編電子鐘的設(shè)計

          作者: 時間:2012-09-17 來源:網(wǎng)絡(luò) 收藏

          8.jpg寫在前面: ­
          前天晚上斷網(wǎng)之后閑來無事忽然心血來潮想起和誰說過以我現(xiàn)在的水平做個時鐘沒有什么問題,就準(zhǔn)備將它實現(xiàn)了。借用老師的學(xué)習(xí)板子,一直搞到凌晨2點做出了一個24小時的計數(shù)器顯示,因為沒有學(xué)過按鍵的使用方法,昨天實驗課下課后問了老師,她給出了查詢方式。昨晚搞了下,可以置數(shù),但是不能實現(xiàn)0~60范圍加,只能0~99加。今天上午在老師的指導(dǎo)下,終于可以了,總算沒有食言啊。呵呵,下面貼出程序了。
          先來個效果圖:

          本文引用地址:http://www.ex-cimer.com/article/170853.htm


          mini_second equ 30h ;設(shè)置0.05秒、秒、分、時的地址 ­

          second equ 31h ­

          minute equ 32h ­

          clock equ 33h ­

          k1 equ p3.2 ;設(shè)置按鍵地址,為外部中斷口int0和int1 ­

          k2 equ p3.3 ­

          ­

          org 0000h ­

          ljmp start ­

          org 000bh ­

          ljmp t0_x ;使用中斷計時 ­

          org 0050h ­

          start: mov mini_second,#00h ;清零 ­

          mov second,#00h ­

          mov minute,#00h ­

          mov clock,#00h ­

          mov tmod,#01h ;置工作方式1,開定時器 ­

          mov th0,#3ch ­

          mov tl0,#0b0h ­

          setb ea ­

          setb et0 ­

          setb tr0 ­

          start1: lcall show_led ;主程序跳轉(zhuǎn)程序顯示 ­

          lcall key_d ;置數(shù)程序 ­

          ljmp start1 ;一直循環(huán)顯示 ­

          t0_x: ­

          push acc ;保護(hù)現(xiàn)場 ­

          push psw ­

          mov th0,#3ch ;置初值,這個不是很準(zhǔn)確, ­

          mov tl0,#0b4h ;估計一分鐘慢個2~3秒 ­

          inc mini_second ­

          mov a,mini_second ­

          cjne a,#20,ret0 ;20次為1秒,沒有20次均跳出中斷重新跳 ­

          mov mini_second, #00h ­

          mov a,second ­

          add a,#01h ­

          da a ­

          mov second,a ­

          cjne a,#60h,ret0 ;1秒后出循環(huán),每秒后秒清零,跳到分計時加1 ­

          mov second,#00h ­

          mov a,minute ­

          add a,#01h ;分同秒 ­

          da a ­

          mov minute,a ­

          cjne a,#60h,ret0 ­

          mov minute,#00h ­

          mov a,clock ­

          add a,#01h ­

          da a ­

          mov clock,a ­

          cjne a,#24h,ret0 ­

          mov clock,#00h ­

          ret0: pop psw ;結(jié)束保護(hù),跳出 ­

          pop acc ­

          reti ­

          nop ­

          nop ­

          nop ­

          ;======================================顯示子程序 ­

          show_led: ­

          mov a,second ;個位秒顯示 ­

          anl a,#0fh ­

          mov 40h,a ­

          clr p1.5 ;片選數(shù)碼管 ­

          clr p1.6 ­

          setb p1.7 ­

          mov a,40h ­

          lcall led_x ­

          lcall delay ­

          mov a,second ;十位秒顯示 ­

          anl a,#0f0h ­

          swap a ­

          mov 41h,a ­

          setb p1.5 ­

          clr p1.6 ­

          setb p1.7 ­

          mov a,41h ­

          lcall led_x ­

          lcall delay ­

          ­

          mov a,minute ;個位分顯示 ­

          anl a,#0fh ­

          mov 42h,a ­

          setb p1.5 ­

          setb p1.6 ­

          setb p1.7 ­

          mov a,42h ­

          lcall led_x ­

          lcall delay ­

          mov a,minute ;十位分顯示 ­

          anl a,#0f0h ­

          swap a ­

          mov 43h,a ­

          clr p1.5 ­

          clr p1.6 ­

          clr p1.7 ­

          mov a,43h ­

          lcall led_x ­

          lcall delay ­

          ­

          mov a,clock ;個位時顯示 ­

          anl a,#0fh ­

          mov 44h,a ­

          clr p1.5 ­

          setb p1.6 ­

          clr p1.7 ­

          mov a,44h ­

          lcall led_x ­

          lcall delay ­

          mov a,clock ;十位時顯示 ­

          anl a,#0f0h ­

          swap a ­

          mov 45h,a ­

          setb p1.5 ­

          setb p1.6 ­

          clr p1.7 ­

          mov a,45h ­

          lcall led_x ­

          lcall delay ­

          ret ­

          ­

          led_x: mov dptr,#led_data ­

          movc a,@a+dptr ­

          mov p0,a ­

          ret ­

          ;====================================延遲子程序 ­

          delay: mov r7,#10 ­

          de1: mov r6,#100 ;延時1ms多一點,因為晶振為11.0592MHZ ­

          djnz r6,$ ­

          djnz r7,de1 ­

          ret ­

          ;===================================數(shù)碼管的段選碼 ­

          led_data: db 0c0h,0f9h,0a4h,0b0h,099h,92h,82h,0f8h,80h,90h ­

          ;=====================================置數(shù)子程序 ­

          key_d: jnb k1,key1 ­

          jnb k2,key2 ­

          ret ­

          key1: mov a,minute ;查詢方式 ————> 分位置數(shù) ­

          clr c ;清零進(jìn)位,防止干擾da和cjne指令的操作 ­

          inc a ;累加器自加一 ,此為加法置數(shù) ­

          da a ;十進(jìn)制處理 ­

          cjne a, #60h, k_01 ;判斷是否為60,為60清零,跳出 ­

          mov a,#00h ­

          k_01: mov minute,a ­

          jnb k1,$ ­

          ret ­

          ­

          key2: mov a,clock ;時位 置數(shù)同上 ­

          clr c ­

          inc a ­

          da a ­

          cjne a, #24h,k_11 ­

          mov a,#00h ­

          k_11: mov clock,a ­

          jnb k2,$ ­

          ret ­
          本程序如有雷同,純屬不可能 ?

          我的不夠成熟或稱之為幼稚的編程,鄭文老師的獨特學(xué)習(xí)板子(顯示數(shù)碼管是p0口,片選竟然是用p1口3個I/O口接138,——!這個獨特焊接方式讓我程序?qū)懙眠@么長),鄭子含老師對我置數(shù)程序的修改,才出來的程序,雖然不是什么成功,至少是一個開始,我會繼續(xù)瘋下去的。這個時鐘的弊端挺多的,比如置數(shù)的時候,會有閃屏現(xiàn)象,程序我會再改進(jìn)的。 ?

          后記:對于院系電子競賽我的失敗我得向我的組員道歉,雖然我知道那些所謂成功的幾組也比我們好不到哪里去(看過答辯了),但是我會繼續(xù)我們的課題,加油吧 ?

          編譯工具:wave6000 ?

          燒制工具:stc-isp(話說國產(chǎn)的stc公司要統(tǒng)一全球51市場,呵呵) 、RS232串口



          關(guān)鍵詞: 設(shè)計 電子鐘 匯編

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();