• <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支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      采用AT89C2051的智能時鐘
      文章長度[22913] 加入時間[2006/7/16] 更新時間[2025/5/13 3:56:31] 級別[3] [評論] [收藏]




      智能電子鐘的功能:

      1。 全日歷計時。
      2。 12/24小時轉換。
      3。 8路定時輸出(可關/開控制)
      4。 誤差:15S+1uS
      5。 大、小月,潤年,周,自動追蹤

      二、 調校:

      上電后,電子鐘顯示“1:00”。

      1。 8路定時時間查詢

      按下K1鍵依此顯示8路定時時間。星期位顯示:“H”表示:打開當前定時輸出;“L” 表示:關閉當前定時輸出。此時按K2鍵可進行“H”、“L”的切換。所有輸出,均由蜂鳴器輸出!

      2。 顯示狀態的控制

      按下K2鍵可進入以下工作狀態:
      1)12小時/ 日月交替顯示。
      2)12小時固定顯示。
      3)24小時/ 日月交替顯示。
      4)24小時固定顯示。

      3。 校時

          按下K2鍵3S后,進入校時菜單。按下K1鍵依次進入校時狀態:分、時、天、月、年、微調系數。此時按K2鍵,完成+1。當顯示“d”時,表示要調整微調系數(0-99),其值越小,時鐘走時越慢。當使用的6MHz的晶振偏差大時,應仔細調整微調系數!當顯示“out”時,按K2鍵,即可退出!退出后,按任意鍵即可啟動時鐘。

      4。 設置定時時間

          按下K1鍵3S后,進入設置菜單。按下K1鍵依次進入8路定時調整狀態:時、分。此時按K2鍵,完成+1。當顯示“out”時,按K2鍵,即可退出!




      ;2001.5.24
      ;***************
      ;all_clk1 _program 2000-10-12
      ;***************
      fl_250ms bit 00h
      fl_500ms bit fl_250ms+1
      set_clk_f bit fl_500ms+1
      set_al4_f bit set_clk_f+1
      am_f bit set_al4_f+1
      fl_3s bit am_f+1
      al1_f bit fl_3s+1
      al2_f bit fl_3s+2
      al3_f bit fl_3s+3
      al4_f bit fl_3s+4
      set_over bit al4_f+1
      ha_f bit set_over+1
      ha_over bit ha_f+1
      fl_ms_f bit ha_over+1
      fl_s_f bit fl_ms_f+1
      key_over bit fl_s_f+1
      ;**************************************************
      key_data equ 08h
      timers equ key_data+1
      t_30ms equ timers+1
      t_20ms equ t_30ms+1
      t_1s equ t_20ms+1
      k1_data equ t_1s+1
      k2_data equ k1_data+1
      stat_work equ k2_data+1
      stat_led equ stat_work+1
      t_1ms equ stat_led+1
      t_20m equ t_1ms+1
      beep equ t_20m
      al1 equ beep+1
      al2 equ beep+2
      al3 equ beep+3
      al4 equ beep+4
      al5 equ beep+5
      al6 equ beep+6
      al7 equ beep+7
      al8 equ beep+8
      ret_timer equ al8+1
      ;**************************************************
      sec equ 23h
      min equ sec+1h
      hour equ min+1h
      day equ hour+1h
      mon equ day+1h
      year equ mon+1h
      w_adj equ year+1h
      week equ w_adj+1h
      ;***************************************
      al1_h equ week+1h
      al1_m equ al1_h+1h
      al2_h equ al1_m+1h
      al2_m equ al2_h+1h
      al3_h equ al2_m+1h
      al3_m equ al3_h+1h
      al4_h equ al3_m+1h
      al4_m equ al4_h+1h
      al5_h equ al4_m+1h
      al5_m equ al5_h+1h
      al6_h equ al5_m+1h
      al6_m equ al6_h+1h
      al7_h equ al6_m+1h
      al7_m equ al7_h+1h
      al8_h equ al7_m+1h
      al8_m equ al8_h+1h
      beep_t equ al8_m+1
      frist equ beep_t+1
      ;**************************************
      led1 equ frist+1
      led2 equ led1+1
      led3 equ led2+1
      led4 equ led3+1
      led5 equ led4+1
      sp_data equ led5+1
      ;**************************************
      led_1 bit p3.5
      led_2 bit p3.4
      led_3 bit p3.3
      led_4 bit p3.2
      led_5 bit p3.1

      beep_f BIT P3.7
      key_f bit p3.0

      ;********************************************************
      t_h_100ms equ 05dh ;100 ms for 6MHz
      t_l_100ms equ 07fh ;c6 for 100ms
      timer_no equ 8d ;3c90+30d=3cb0h
      w_adj_dat equ 50d
      key_da equ 00000110b


      ;*********************************************************
      blk_led equ 20d
      dot_led equ 21d
      f_led equ 22d
      n_led equ 23d
      u_led equ 24d
      t_led equ 25d
      b_led equ 26d
      d_led equ 27d


      oRG 0000H; ;
      sJMP start
      ORG 0003H; ;
      reti;
      ORG 000BH ;
      ;ajmp t0
      reti ;
      ORG 0013H
      reti ;
      ORG 001BH ;
      aJMP T1 ;
      ORG 0023H ;
      RETI; AJMP RS_485 ;

      ;**************************************
      start:
      call clr_ram
      MOV SP,#sp_data ;
      call int_t0
      call timer_int
      call timer_20ms
      STAR_BI:
      call clock
      call week_auto
      call al_out
      CALL KEY_bord
      call key_del
      call set_clk_al
      call key_jmp
      call reback
      call led_jmp
      sjmp star_bi
      ;*******************************************
      reback:
      mov a,stat_work
      jz reback_end
      jb al1_f ,ka1
      mov ret_timer,sec
      setb al1_f
      sjmp reback_end
      ka1:
      mov a,ret_timer
      add a,#05d
      mov b,#60d
      div ab
      mov a,sec
      cjne a,b,reback_end
      clr al1_f
      mov stat_work,#00d
      reback_end:
      ret
      key_jmp:
      mov a,key_data
      jz key_jmp_end
      mov ret_timer,sec
      cjne a,#01d,kk1
      mov a,stat_work
      inc a ;k1_key
      cjne a,#9d,kka1
      mov a,#00d
      kka1:
      mov stat_work ,a
      sjmp key_jmp_end
      kk1:
      mov a,stat_work ;k2_key
      jnz kk2
      mov a,stat_led
      inc a
      cjne a,#05d,kka2
      mov a,#00d
      kka2:
      mov stat_led,a
      sjmp key_jmp_end
      kk2:
      acall all1
      cpl a
      mov @r0,a
      key_jmp_end:
      ret


      all1:
      mov r0,#al1
      mov a,stat_work
      dec a
      add a,r0
      mov r0,a
      mov a,@r0
      ret


      led_jmp:
      ;**********************************
      ;mov stat_work,#01d
      ;mov stat_tw,#01d


      mov a,stat_work
      jnz led_al1
      mov a,stat_led
      acall led_t_d
      mov led1,week
      sjmp led_jmp_end
      led_al1:
      acall all1
      mov led1,#f_led
      jnz le_t2
      mov led1,#n_led
      le_t2:
      jb fl_250ms ,le_t4
      mov led1,#blk_led
      le_t4:
      acall al_led
      led_jmp_end:
      acall led
      ret
      ;*************************************


      time_24:
      mov a,hour
      acall bcd_8
      mov led2,a
      jnz tim4
      mov led2,#blk_led
      tim4:
      mov led3,b
      jb fl_500ms,tim1
      mov a,b
      add a,#10d
      mov led3,a
      tim1:
      acall led_min
      time_12_end:
      ret
      ;***********************************
      led_min:
      mov a,min
      acall bcd_8
      jb fl_500ms ,tim2
      add a,#10d
      tim2:
      mov led4,a
      mov led5,b
      ret
      ;*************************************



      date_led:
      mov a,mon
      acall bcd_8
      mov led2,a
      jnz da1
      mov led2,#blk_led
      da1:
      mov a,b
      add a,#10d
      mov led3,a
      mov a,day
      acall bcd_8
      mov led4,a
      jnz da2
      mov led4,#blk_led
      da2:
      mov led5,b
      date_led_end:
      ret


      ;*************
      ; D_8=>BCD
      ;*************
      BCD_8:
      MOV B,#10D
      DIV AB
      RET
      ;****************************************
      LED:
      mov p1,#0
      mov dptr,#led_asc
      ;***************************led1
      mov a,led1
      movc a,@a+dptr
      mov p1,a
      clr led_1
      acall timer_1ms
      acall timer_1ms
      ;acall timer_1ms
      ;acall timer_1ms
      ;acall timer_1ms

      setb led_1
      ;*************************led2
      led_led2:
      mov a,led2
      movc a,@a+dptr
      mov p1,a
      clr led_2
      acall timer_1ms
      setb led_2
      ;*************************led3
      led_led3:
      mov a,led3
      movc a,@a+dptr
      mov p1,a
      clr led_3
      acall timer_1ms
      setb led_3
      ;*************************led4
      led_led4:
      mov a,led4
      movc a,@a+dptr
      mov p1,a
      clr led_4
      acall timer_1ms
      setb led_4
      ;*************************led5
      led_led5:
      mov a,led5
      movc a,@a+dptr
      mov p1,a
      clr led_5
      acall timer_1ms
      setb led_5
      ;*************************
      led_end:
      mov p1,#0
      ret
      ;************************************
      ; bafhcdeg
      led_asc:
      db 11101110B;0
      db 10001000B;1
      db 11000111B;2
      db 11001101B;3
      db 10101001B;4
      db 01101101B;5
      db 01101111B;6
      db 11001000B;7
      db 11101111B;8
      db 11101101B;9
      db 11111110B;0. =>10d
      db 10011000B;1.
      db 11010111B;2.
      db 11011101B;3.
      db 10111001B;4.
      db 01111101B;5.
      db 01111111B;6.
      db 11011000B;7.
      db 11111111B;8.
      db 11111101B;9.
      DB 00000000B;BLACK=>20d
      DB 00010000B;dot=>21d
      DB 00100110b;l=>22d
      dB 10101011B;h=>23d
      DB 10101110B;u=>24d
      DB 00100111B;t=>25d
      dB 00101111B;b=>26d
      dB 10001111B;d=>27d


      ; bafhcdeg


      ;**********************************
      ;delay
      ;********************************
      timer_1ms:
      mov t_1ms,#030h
      r2_1:
      djnz t_1ms , r2_1
      ret
      timer_20ms:
      mov t_20m,#050d
      r2_2:
      call clock
      call led
      djnz t_20m , r2_2
      call week_auto
      call al_out
      ret
      ;#############################################
      ;if mon<=2 and year=4Z(0,1,2,3...)
      ;gs1=>week=mod([5/4]*year+mon_asc(mon)+day-1)/7
      ;else
      ; gs2=>week=mod([5/4]*year+mon_asc(mon)+day)/7
      week_auto:

      mov a,YEAR
      mov b,#05
      mul ab
      mov r4,b
      mov r5,a
      mov r7,#04
      call mul_2


      MOV DPTR,#MON_ASC
      MOV A,MON
      dec a
      MOVC A,@A+DPTR
      ADD A,r3
      ;*********************
      MOV B,DAY
      ADD A,B
      mov r3,a;r3=gs2
      ;*******jb mon<=2 ******
      MOV A,MON
      CJNE A,#02D,WEEK_1
      SJMP WEEK_2
      WEEK_1:
      JC WEEK_2
      week_3:
      mov a,r3
      mov b,#07
      div ab
      mov a,b
      sjmp week_4
      WEEK_2:
      ;*****jb year=4N ******
      mov a,year
      mov b,#04
      div ab
      mov a,b
      jnz week_3
      mov a,r3
      dec a
      mov b,#07
      div ab
      mov a,b
      week_4:
      MOV WEEK,a
      jnz week_end
      mov week,#07h
      week_end:
      RET
      MON_ASC:
      DB 6d, 2d, 2d, 5d, 0d, 3d, 5d, 1d, 4d, 6d, 2d, 4d ;2002.5.5
      ;r4r5/r7=r3
      mul_2:
      D457: CLR C
      MOV A,R4
      SUBB A,R7
      JC DV50
      SETB OV
      RET
      DV50: MOV R6,#8 ;;求平均值(R4R5/R7-→R3)
      DV51: MOV A,R5
      RLC A
      MOV R5,A
      MOV A,R4
      RLC A
      MOV R4,A
      MOV F0,C
      CLR C
      SUBB A,R7
      ANL C,/F0
      JC DV52
      MOV R4,A
      DV52: CPL C
      MOV A,R3
      RLC A
      MOV R3,A
      DJNZ R6,DV51
      MOV A,R4 ;;四舍五入
      ADD A,#0;R4
      JC DV53
      SUBB A,R7
      JC DV54
      DV53: INC R3
      DV54: CLR OV
      RET
      ;*************************************************************
      clr_ram:
      MOV R7,#78h ;
      MOV R0,#0bH ;
      CLR A ;
      CR: INC R0 ;
      MOV @R0,A ;
      djnz r7,cr ;CLR RAM
      ret
      ;************** INT_CTRL
      int_t0:
      setb et1
      MOV TMOD,#00010001b ;
      mov w_adj,#w_adj_dat
      setb ea
      jmp adj_w
      ;**********************************************
      al_led:
      mov r0,#al1_h
      mov a,stat_work
      dec a
      rl a
      add a,r0
      mov r0,a
      mov a,@r0
      acall bcd_8
      mov led2,a
      jnz al_1
      mov led2,#blk_led
      al_1:
      mov a,b
      add a,#10d
      mov led3,a
      inc r0
      mov a,@r0
      acall bcd_8
      add a,#10d
      mov led4,a
      mov led5,b
      al_led_end:
      ret

      ;********************************
      set_clk_al:
      jnb set_clk_f,see1
      call set_clock
      clr set_clk_f
      sjmp see2
      see1:
      jnb set_al4_f,see2
      call set_al4
      clr set_al4_f
      see2:
      ret
      ;*********************************
      proc led_t_d
      led_t_d:
      mov dptr,#led_ord_3
      mov b,#02h
      mul ab
      jmp @a+dptr

      led_ord_3: ajmp led_k0_2
      ajmp led_k1_2
      ajmp led_k2_2
      ajmp led_k3_2
      ajmp led_k4_2

      led_k0_2: ; timer_12 and date to led
      acall time_12
      jnb fl_3s ,lk1
      acall date_led
      lk1:
      ajmp led_jmp_5_end
      led_k1_2: ; timer_12 to led
      acall time_12
      ajmp led_jmp_5_end
      led_k2_2: ;timer_24and date to led
      acall time_24
      jnb fl_3s ,lk2
      acall date_led
      lk2:
      ajmp led_jmp_5_end
      led_k3_2: ;timer_24to led
      acall time_24
      ajmp led_jmp_5_end


      led_k4_2: ;sec to led
      mov led1,#blk_led
      mov led2,#blk_led
      mov led3,#dot_led
      mov a,sec
      acall bcd_8
      add a,#10d
      mov led4,a
      mov led5,b
      led_jmp_5_end:
      ret
      end


      ;****************************************
      proc set_al4
      set_al4:
      mov k1_data,#01d
      mov k2_data,#01d
      clr set_over
      acall led_al
      acall key_bord
      call sf_key
      mov key_data,#0
      mov frist,#0
      set_al41:


      call clock
      call week_auto
      acall led_al
      acall key_bord
      call key_del
      acall key_al
      jnb set_over,set_al41
      clr a
      mov k1_data,a
      mov k2_data,a
      mov key_data,a
      mov frist,a
      ret
      end
      ;**************************************
      proc key_al
      key_al:
      mov a,key_data
      jz key_al_end
      cjne a,#01d,k2_al


      inc k1_data ;(1-9)
      mov a,k1_data
      cjne a,#19d,key_al_end
      mov k1_data,#01d
      sjmp key_al_end


      k2_al:
      mov a,k1_data
      cjne a,#018d,ke2
      setb set_over
      sjmp key_al_end
      ke2:
      mov r0,#al1_h
      dec a
      add a,r0
      mov r0,a
      inc @r0
      acall jj_bit
      mov b,#24d
      jnz ke3
      mov b,#60d
      ke3:
      mov a,@r0
      div ab
      mov a,b
      mov @r0,a
      key_al_end:
      ret
      end
      jj_bit:
      mov a,k1_data
      mov b,#02d
      div ab
      mov a,b ;(a=1,0)
      ret
      ;*********************************
      led_out1:
      mov led2,#00h
      mov led3,#u_led
      mov led4,#t_led
      mov led5,#blk_led
      mov led1,#blk_led
      ret
      ;********************************
      led_al:
      mov a,k1_data
      cjne a,#017d,lo1
      acall beep_timer
      sjmp led_al_end
      lo1:
      cjne a,#18d,ld1
      acall led_out1
      sjmp led_al_end
      ld1:
      inc a
      mov b,#02d
      div ab
      ;**********
      mov led1,a
      ;**********
      dec a
      rl a
      mov r0,#al1_h
      add a,r0
      mov r0,a
      mov a,@r0
      acall bcd_8
      mov led2,a
      jnz ld2
      mov led2,#blk_led
      ld2:
      mov a,b
      add a,#10d
      mov led3,a
      ;************************************
      inc r0
      mov a,@r0
      acall bcd_8
      add a,#10d
      mov led4,a
      mov led5,b


      ;***************************flash bit
      jb fl_250ms,led_al_end
      acall jj_bit
      jnz led_al_e
      mov led4,#blk_led
      mov led5,#blk_led
      sjmp led_al_end
      led_al_e:
      mov led2,#blk_led
      mov led3,#blk_led
      led_al_end:
      acall led
      ret
      ;***************************************
      proc set_clock
      set_clock:
      mov k1_data,#01d
      mov k2_data,#01d
      clr set_over
      call led_cl
      call key_bord
      call sf_key
      mov key_data,#0
      mov frist,#0
      set_al41:
      call clock
      acall week_auto
      call al_out
      acall led_cl
      acall key_bord
      call key_del
      acall key_cl
      jnb set_over,set_al41
      ;acall key_bord
      clr a
      mov k1_data,a
      mov k2_data,a
      mov key_data,a
      mov frist,a
      ret
      end
      ;**************************************
      proc key_cl
      key_cl:
      mov a,key_data
      jz key_al_end
      cjne a,#01d,k2_al


      inc k1_data ;(1-8)
      mov a,k1_data
      cjne a,#9d,key_al_end
      mov k1_data,#01d
      sjmp key_al_end
      k2_al:
      mov a,k1_data
      cjne a,#08d,ke2
      setb set_over
      sjmp key_al_end
      ke2:
      dec a
      mov dptr,#asc_h
      movc a,@a+dptr
      mov b,a
      ;********************************
      mov r0,#sec
      mov a,k1_data
      dec a
      add a,r0
      mov r0,a
      inc @r0
      mov a,@r0
      div ab
      mov a,b
      mov @r0,a
      key_al_end:
      ret
      end
      asc_h:
      db 60d,60d,24d,32d,13d,100d,100d


      proc led_cl
      led_cl:
      mov dptr,#led_ord_3
      mov a,k1_data
      dec a
      mov b,#02h
      mul ab
      jmp @a+dptr
      led_ord_3: ajmp led_k0_2
      ajmp led_k1_2
      ajmp led_k2_2
      ajmp led_k3_2
      ajmp led_k4_2
      ajmp led_k5_2
      ajmp led_k6_2
      ajmp led_k7_2

      led_k0_2: ; led sec
      mov led2,#blk_led
      mov led3,#dot_led
      mov a,sec
      acall bcd_8
      add a,#10d
      mov led4,a
      mov led5,b
      jb fl_250ms ,lk1
      mov led4,#blk_led
      mov led5,#blk_led
      lk1:
      ajmp led_jmp_5_end
      led_k1_2: ; led min,hour
      acall led_hour
      jb fl_250ms ,lk2
      mov led4,#blk_led
      mov led5,#blk_led
      lk2:
      ajmp led_jmp_5_end
      led_k2_2: ;led min,hour
      acall led_hour
      jb fl_250ms ,lk3
      mov led2,#blk_led
      mov led3,#blk_led
      lk3:
      ajmp led_jmp_5_end
      led_k3_2: ;led day,mon
      acall led_mon
      jb fl_250ms ,lk4
      mov led4,#blk_led
      mov led5,#blk_led
      lk4:
      ajmp led_jmp_5_end
      led_k4_2: ; led day,mon
      acall led_mon
      jb fl_250ms ,lk5
      mov led2,#blk_led
      mov led3,#blk_led
      lk5:
      ajmp led_jmp_5_end
      led_k5_2: ; led year
      mov led2,#2d
      mov led3,#0d
      mov a,year
      acall bcd_8
      mov led4,a
      mov led5,b
      jb fl_250ms ,lk6
      mov led4,#blk_led
      mov led5,#blk_led
      lk6:
      ajmp led_jmp_5_end
      led_k6_2: ;led w_adj
      mov led2,#d_led
      mov led3,#blk_led
      mov a,w_adj
      acall bcd_8
      mov led4,a
      mov led5,b
      jb fl_250ms ,lk7
      mov led4,#blk_led
      mov led5,#blk_led
      lk7:
      ajmp led_jmp_5_end
      led_k7_2: ;led out
      acall led_out1
      led_jmp_5_end:
      mov led1,week
      acall led
      ret
      end

      led_hour:
      mov a,hour
      acall bcd_8
      mov led2,a
      jnz lj1
      mov led2,#blk_led
      lj1:
      mov a,b
      add a,#10d
      mov led3,a
      ;*********************
      mov a,min
      acall bcd_8
      add a,#10d
      mov led4,a
      mov led5,b
      ret
      led_mon:
      mov a,mon
      jnz lj5
      inc mon
      mov a,mon
      lj5:
      acall bcd_8
      mov led2,a
      jnz lj2
      mov led2,#blk_led
      lj2:
      mov led3,b
      ;*********************
      mov a,day
      jnz lj4
      inc day
      mov a,day
      lj4:
      acall bcd_8
      mov led4,a
      jnz lj3
      mov led4,#blk_led
      lj3:
      mov led5,b
      ret
      ;********************************************
      al_out:
      jb ha_over,al_out_end
      mov r7,#8d
      mov r1,#al8_m
      al_ch_1:
      mov r0,#min
      mov r6,#02d ;min hour
      al_l:
      mov a,@r0
      mov b,@r1
      cjne a,b ,al_ch
      inc r0
      dec r1
      djnz r6 ,al_l
      ;**************************************************
      mov a,r7
      dec a
      mov r0,#al1
      add a,r0
      mov r0,a
      mov a,@r0
      mov c,acc.0
      cpl c
      anl c,fl_250ms
      cpl c
      mov beep_f,c
      acall beep_out
      al_ch:
      clr c
      mov a,r1
      subb a,r6
      mov r1,a
      djnz r7,al_ch_1
      al_out_end:
      ret


      beep_out:
      jb ha_f,ba1
      mov beep,sec
      setb ha_f
      ba1:
      mov a,beep
      add a,beep_t
      mov b,#60d
      div ab
      mov a,sec
      cjne a,b,beep_out_end
      setb beep_f
      setb ha_over
      clr ha_f
      beep_out_end:
      ret
      timer_int:
      MOV T_1S,#TIMER_no
      mov beep_t,#15d
      mov year ,#01d
      mov mon , #011d
      mov day , #06d
      mov hour ,#13d
      mov min , #00d
      mov sec , #00d
      mov r7,#16
      mov dptr ,#al_asc
      mov r0,#al1_h
      al_read:
      clr a
      movc a,@a+dptr
      mov @r0,a
      inc r0
      inc dptr
      djnz r7,al_read
      ret


      ;************************************
      beep_timer:
      mov led1,#blk_led
      mov led2,#b_led
      mov led3,#blk_led
      mov a,beep_t
      acall bcd_8
      mov led4,a
      mov led5,b
      jb fl_250ms,ft1
      mov led4,#blk_led
      mov led5,#blk_led
      ft1:
      ret


      time_12:
      mov dptr,#asc_12
      mov a,hour
      rl a
      movc a,@a+dptr
      mov led2,a
      jnz iu2
      mov led2,#blk_led
      iu2:
      inc dptr
      mov a,hour
      rl a
      movc a,@a+dptr
      jb fl_500ms ,iu1
      add a,#10d
      iu1:
      mov led3,a

      ;*************************************** min to led
      acall led_min
      time_24_end:
      ret
      asc_12:
      db 11d,2d,21d,1d,21d,2d,21d,3d,21d,4d,21d,5d,21d,6d,21d,7d
      db 21d,8d,21d,9d,11d,0d,11d,1d
      db 1d,2d,0d,1d,0d,2d,0d,3d,0d,4d,0d,5d,0d,6d,0d,7d,0d,8d,0d,9d
      db 1d,0,1d,1d


      clock:
      ;********************************
      mov a,sec
      cjne a,#60d,clock_end;!!!!!!!!!!!!!!!!!!!!!!
      mov sec,#00h


      inc min
      ;**********
      clr ha_over ;2001.5.6

      mov a,min
      cjne a,#60d,clock_end
      mov min,#00h

      inc hour
      mov a,hour
      cjne a,#24d,clock_end
      mov hour,#00h

      mov a,mon
      xrl a,#02d
      jnz mm_1
      mov dptr,#year_d
      mov a, year
      movc a,@a+dptr
      sjmp mm_2
      mm_1:
      mov a,mon
      dec a
      mov dptr,#mou_12
      movc a,@a+dptr
      mm_2:
      mov b,a
      inc b
      inc day ;***************day+1
      mov a,day
      cjne a ,b ,clck_end
      sjmp clck1
      clck_end:
      jc clock_end
      clck1:
      mov day,#01h

      inc mon
      mov a,mon
      cjne a,#13d ,clock_end
      mov mon,#01d


      inc year
      mov a,year
      cjne a,#100d ,clock_end
      mov year,#00d
      clock_end:
      call fl_out
      ret
      mou_12:
      db 31d, 28d, 31d, 30d, 31d,30d
      db 31d, 31d, 30d,31d, 30d,31d

      year_d:
      db 29d, 28d, 28d, 28d, 29d, 28d , 28d, 28d, 29d, 28d
      db 28d, 28d, 29d, 28d, 28d, 28d , 29d, 28d, 28d, 28d
      db 29d, 28d, 28d, 28d, 29d, 28d , 28d, 28d, 29d, 28d
      db 28d, 28d, 29d, 28d, 28d, 28d , 29d, 28d, 28d, 28d
      db "li jie 2000.5.15"
      ;***************************************
      t1:
      push a
      push psw
      push b
      clr fl_ms_f
      djnz t_1s ,t1_end
      clr fl_s_f
      inc sec
      call adj_w
      ;********************************
      t1_end:
      pop b
      pop psw
      pop a
      reti


      adj_w:
      clr tr1
      mov a,#T_L_100ms
      add a, w_adj ;*******have 5 order
      mov tl1 ,a
      mov a,#T_H_100ms
      addc a, #00h
      mov th1,a
      mov t_1s,#timer_no
      setb tr1
      ret


      fl_out:
      jb fl_ms_f ,fl_out_end
      setb fl_ms_f
      mov a,t_1s
      mov b,#02d
      div ab
      mov a,b
      jnz to_d1
      cpl fl_250ms
      to_d1:
      mov a,t_1s
      mov b,#04d
      div ab
      mov a,b
      jnz to_d2
      cpl fl_500ms
      to_d2:
      fl_out_end:
      call sec_out
      ret

      sec_out:
      jb fl_s_f ,sec_out_end
      setb fl_s_f
      mov a,sec
      mov b,#07d
      jnb fl_3s,za1
      mov b,#02d
      za1:
      div ab
      mov a,b
      jnz sec_out_end
      cpl fl_3s
      sec_out_end:
      ret
      ;**********************************
      key_del:
      mov a,key_data
      jnz kl_12
      mov a,frist
      jnz kl_13
      ret
      kl_13:
      mov key_data,frist
      mov frist,#0
      clr key_over
      jmp sf_beep
      kl_12:
      jnb key_over,kl11
      mov a,t_30ms
      add a,#03
      mov b,#60d
      div ab
      mov a,sec
      cjne a,b,key_del_end
      clr key_over
      jmp set_key
      kl11:
      mov t_30ms,sec
      setb key_over
      key_del_end:
      call sf_a
      cjne a,#key_da,sfg_12
      clr key_over
      jmp sf_beep
      sfg_12:
      mov frist,key_data
      mov key_data,#0
      ret
      ;****************************************
      key_bord:
      acall re_k
      mov a,key_data
      jz key_bord1_end
      ;acall psf_key0
      key_bord1_end:
      setb key_f
      ret
      set_key:
      mov a,key_data
      cjne a,#01h,set_cc1
      setb set_al4_f
      sjmp sf23
      set_cc1:
      cjne a,#02h,sf23
      setb set_clk_f
      sf23:
      ret
      ;************************************
      sf_key:
      call clock
      call week_auto
      call al_out
      setb key_f
      call led
      call sf_a
      cjne a,#key_da,sf_key
      call sf_beep
      ret


      sf_beep:


      clr beep_f
      call timer_20ms
      setb beep_f
      ret
      ;********************************
      re_k:
      mov key_data,#00h
      mov p1,#00h
      mov a,p3
      orl a,#01111111b
      mov p3,a
      clr key_f
      mov a,p3
      setb key_f
      mov p1,#0ffh
      anl a ,#00000110b
      cjne a,#00000110b,you_key
      re_k_end:
      ret
      you_key:
      call timer_20ms
      ;call led
      mov p1,#00h
      mov a,p3
      orl a,#01111111b
      mov p3,a
      clr key_f
      mov a,p3
      setb key_f
      mov p1,#0ffh
      anl a ,#key_da
      cjne a,#key_da,you_key1
      ret;sjmp re_k_end
      you_key1:
      jb acc.1,key_kb
      mov key_data,#02h
      key_kb:
      jb acc.2,sf_key0
      mov key_data,#01h
      sf_key0:
      ret


      sf_a:
      mov p1,#00h
      mov a,p3
      orl a,#01111111b
      mov p3,a
      clr key_f
      mov a,p3
      setb key_f
      anl a ,#key_da
      ret
      al_asc:
      db 06d,40d, 06d,50d, 07d,00d, 07d,10d;am 4_al
      db 07d,15d, 013d,40d, 13d,45d, 14d,15d;pm 4_al


      這是上面程序匯編以后獲得的編程器燒寫文件:clock.hex


          下載燒寫文件的方法:將鼠標移到燒寫文件的超級鍵連處,點擊鼠標的右鍵,選擇“目標另存為(A)...”保存文件類型中不要選擇“文本文件”,應該選擇“所有文件”,這樣就能獲得*.hex文件了。

      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嫩草黄片动漫版