• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      stc2052-clock.asm
      文章長度[6176] 加入時間[2006/7/1] 更新時間[2024/11/18 11:56:31] 級別[3] [評論] [收藏]
      org 00h
      jmp config
      ORG 03H
      JMP TE0
      ORG 0BH
      JMP TT0
      ORG 13H
      JMP TE1
      ORG 1BH
      JMP TT1
      config:
      MOV TMOD,#00010010B;T0工作在8位自動重裝計數器模式
      mov th0,#8
      setb tr0
      setb et0
      setb et1
      setb ea
      mov 3fh,#1;定時總路數,默認為第1路
      mov 92h,#11111111b;大電流輸出
      mov 0b2h,#11111111b;大電流輸出
      mov 39h,#00;工作模式0=走時模式1=校時模式2=定時模式3=誤差模式
      mov r2,#0;設定默認的閃動模式
      mov r1,#15;設定長按鍵的時間
      mov r3,#30;設定不按鍵的最長時間

      mov a,3eh
      cjne a,#51,setup
      jmp main
      setup:
      mov 36h,#12;時默認值
      mov 37h,#00;分默認值
      mov 38h,#00;秒默認值
      mov r0,#80h;定時默認值24:30
      dsmr:inc r0
      mov @r0,#30
      inc r0
      mov @r0,#24
      cjne r0,#0f0h,dsmr

      main:mov 3eh,#51
      call clock
      call cup

      call hled
      call disp ;LED數碼顯示
      call key
      call run
      jmp main


      tt0:
      inc r7
      cjne r7,#168,t0end
      mov r7,#0
      setb 55h
      t0end:reti

      clock:
      jnb 55h,cend;檢查中斷計數標志
      clr 55h
      cpl 56h
      jnb 56h, cend;一次延時
      cpl 57h
      jnb 57h, cend;二次延時
      cpl p3.7
      jnb p3.7, cend;三次延時
      inc 38h ;時鐘程序秒加1
      mov r6,38h
      cjne r6,#60,cend
      mov 38h,#0
      ck1:inc 37h
      mov r6,37h
      cjne r6,#60,cend
      mov 37h,#0
      ck2:inc 36h
      mov r6,36h
      cjne r6,#24,cend
      mov 36h,#0
      cend:ret




      tt1:
      CLR TR1
      MOV TL1,3eh
      MOV TH1,3dh
      SETB TR1

      reti

      te0:

      reti

      te1:

      reti


      cup:
      mov 3ah,36h
      mov 3bh,37h
      mov 3ch,38h
      mov a,39h
      cjne a,#20,ms1up

      mov 3ah,3fh
      mov a,#80h
      add a,3fh
      add a,3fh
      mov r0,a
      mov 3bh,@r0
      inc r0
      mov 3ch,@r0

      ms1up:cjne a,#30,msup
      mov 3ch,55h
      msup:mov a,3ch
      mov b,#10
      div ab ;將秒計算后送入顯示緩存
      mov 30h,b
      mov 31h,a
      mov a,3bh
      mov b,#10
      div ab ;將分計算后送入顯示緩存
      mov 32h,b
      mov 33h,a
      mov a,3ah
      mov b,#10
      div ab ;將小時計算后送入顯示緩存
      mov 34h,b
      mov 35h,a
      ret

      hled:
      mov a,39h
      cjne a,#10,ms1
      jb 56h,ms1
      cjne r2,#0,h1
      mov 35h,#11
      mov 34h,#11
      h1:cjne r2,#1,h2
      mov 33h,#11
      mov 32h,#11
      h2:cjne r2,#2,ms1
      mov 31h,#11
      mov 30h,#11
      ms1:cjne a,#20,ms2
      jnb 57h,ms2
      cjne r2,#0,h21
      mov 35h,#11
      mov 34h,#11
      h21:cjne r2,#1,h22
      mov 33h,#11
      mov 32h,#11
      h22:cjne r2,#2,ms2
      mov 31h,#11
      mov 30h,#11
      ms2:cjne a,#30,hend
      cjne r2,#0,h31
      mov 35h,#12
      mov 34h,#12
      mov 33h,#12
      mov 32h,#12
      h31:cjne r2,#1,hend
      mov 35h,#13
      mov 34h,#13
      mov 33h,#13
      mov 32h,#13
      hend:ret




      disp:
      mov p1,#10000000b
      setb p3.0
      setb p3.1
      setb p3.2
      setb p3.3
      setb p3.4
      setb p3.5

      cjne r5,#6,ds0;r5等于顯示的當前LED,r5的值不能隨意改變
      mov r5,#0
      ds0:inc r5
      cjne r5,#1,ds1
      clr p3.5
      mov a,30h
      call ledtab
      ds1:cjne r5,#2,ds2
      clr p3.4
      mov a,31h
      jmp ledtab
      ds2:cjne r5,#3,ds3
      clr p3.1
      mov a,32h
      jmp ledtab
      ds3:cjne r5,#4,ds4
      clr p3.3
      mov a,33h
      jmp ledtab
      ds4:cjne r5,#5,ds5
      clr p3.2
      mov a,34h
      jmp ledtab
      ds5:cjne r5,#6,edisp
      clr p3.0
      mov a,35h
      jmp ledtab
      edisp:
      ret
      ledtab:
      jb p1.7, kk ;檢查按鍵是否按下
      mov 40h,r5 ;按鍵按下取鍵值
      kk:mov dptr,#table
      movc a,@a+dptr
      mov p1,a
      jmp edisp






      key:
      cjne r5,#1,scan1
      mov 40h,#0
      jmp kend
      scan1:
      cjne r5,#6,kend
      mov r6,40h
      cjne r6,#0,kset;不等于0說明有按鍵按下,分別設定有鍵無鍵的最長時間
      mov r1,#20;設定長按鍵時間一般為2-3秒
      clr 51h;按鍵放開中
      jmp ksetend
      kset:mov r3,#200;設定不按鍵的最長等待時間,一般為10-30秒
      setb 51h;按鍵中
      mov a,39h
      add a,r6
      mov r4,a;
      ksetend:
      djnz 56h,kend;檢查長按鍵延時用
      ;mov 56h,#250;根據時鐘頻率來確定延時程度

      cjne r6,#0,long1;不等于0說明有按鍵按下,分別求出有鍵按和無鍵按的時間
      djnz r3,kend
      mov 39h,#0;10秒鐘長時間沒有鍵按下時模式回到正常走時
      ;clr p3.7
      jmp kend

      long1:
      djnz r1,kend
      mov a,39h
      add a,#10
      mov 39h,a;有按鍵長按2秒以上模式加10
      mov r2,#0

      ;setb p3.7
      kend:

      kendd:
      ret


      skey:


      jmp kend


      run:jb 51h,gotoend;按鍵是否放開,不放開不執行按鍵程序
      jmp run0

      gotoend:jmp runend

      run0:cjne r4,#16,run1;校時模式
      inc r2;調校時分秒三種情況選擇
      cjne r2,#3,run1
      mov r2,#0

      run1:cjne r4,#13,run2;校時加數模式

      cjne r2,#0,jj1
      inc 36h
      mov a,36h
      cjne a,#24,jj1
      mov 36h,#0

      jj1:cjne r2,#1,jj2
      inc 37h
      mov a,37h
      cjne a,#60,jj2
      mov 37h,#0

      jj2:cjne r2,#2,run2
      inc 38h
      mov a,38h
      cjne a,#60,run2
      mov 38h,#0

      run2:cjne r4,#14,run3;校時減數模式
      cjne r2,#0,jg1
      dec 36h
      mov a,36h
      cjne a,#255,jg1
      mov 36h,#23

      jg1:cjne r2,#1,jg2
      dec 37h
      mov a,37h
      cjne a,#255,jg2
      mov 37h,#59

      jg2:cjne r2,#2,run3
      dec 38h
      mov a,38h
      cjne a,#255,run3
      mov 38h,#59


      run3:cjne r4,#26,run4;定時模式
      inc r2;定時模式的R2表示選擇路數、設定小時和分鐘的情況
      cjne r2,#3,run4
      mov r2,#0
      run4:cjne r4,#23,run5;定時模式的加模式

      dsjia:cjne r2,#0,dsjia1
      inc 3fh
      mov a,3fh
      cjne a,#17,dsjia1;最大的定時路數
      mov 3fh,#1
      dsjia1:cjne r2,#1,dsjia2
      inc 3bh
      mov a,3bh
      cjne a,#25,dsup11
      mov 3bh,#0
      dsup11:call dsup
      dsjia2:cjne r2,#2,run5
      inc 3ch
      mov a,3ch
      cjne a,#60,dsup22
      mov 3ch,#0
      dsup22:call dsup

      run5:cjne r4,#24,run6;定時模式的減模式

      dsjian:cjne r2,#0,dsjian1
      dec 3fh
      mov a,3fh
      cjne a,#0,dsjian1
      mov 3fh,#16;最大的定時路數
      dsjian1:cjne r2,#1,dsjian2
      dec 3bh
      mov a,3bh
      cjne a,#0ffh,dsup33
      mov 3bh,#24

      dsup33:call dsup
      dsjian2:cjne r2,#2,run6
      dec 3ch
      mov a,3ch
      cjne a,#0ffh,dsup44
      mov 3ch,#59
      dsup44:call dsup
      run6:cjne r4,#36,run7;誤差模式
      inc r2;誤差模式的調快還是調慢模式
      cjne r2,#2,run7
      mov r2,#0

      run7:cjne r4,#33,run8;誤差模式
      inc 55h;誤差系數的加法
      mov a,55h
      cjne a,#100,run8
      mov 55h,#0

      run8:cjne r4,#34,run9;誤差模式
      dec 55h;誤差系數的減法
      mov a,55h
      cjne a,#255,run9
      mov 55h,#99

      run9:cjne r4,#46,run10;到正常模式
      mov 39h,#0
      run10:cjne r4,#43,run11;到正常模式
      mov 39h,#0
      run11:cjne r4,#44,rund;到正常模式
      mov 39h,#0
      rund:mov r4,#0
      runend:ret


      dsup:;保存定時時間
      mov a,#80h
      add a,3fh
      add a,3fh
      mov r0,a
      mov @r0,3bh
      inc r0
      mov @r0,3ch
      ret

      table: db 11110111b,11000001b,10111011b,11101011b,11001101b,11101110b,11111110b
          db 11000011b,11111111b,11101111b,00000000b,00000000b,10001000b,10101010b
      end
      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版