• <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倒計時器
      文章長度[22622] 加入時間[2006/7/16] 更新時間[2025/6/4 7:49:59] 級別[3] [評論] [收藏]

           倒計時器在生活非常有用,用單片機自制,不但電路簡單,而且功能可根據需要自行設計。由74系列、40系列小規模數字芯片設計的倒計時器非常多,但有顯示不直觀(無LED數碼管);調整參數不靈活;計時精度低(采用RC振蕩)等缺點。在此向大家介紹如何用89C2051單片機自制倒計時器的方法。

      一、功能介紹

      1. 獨立的三路倒計時。均可獨立設置啟動、關閉。
      2. 范圍:0~20小時,可任意設定。關機后數據不丟失。計時精度高:<0.1S
      3..獨立的三路輸出:
      a:第1路 蜂鳴器輸出: 15S
      b:第2路 PNP晶體管輸出:5S
      c:第3路 PNP晶體管輸出:直致關機

      二、工作原理



          電路見上圖整機由89c2051、三位LED數碼管、K1-K4、R、T等元器件組成。89C2051內部T1定時器完成100mS定時中斷功能。為了減少硬件,由89C2051的P1口直接輸出LED的段碼,BCD轉換由軟件完成。位選碼由P3.0,P3.1,P3.7輸出。鍵盤掃描與LED位選碼的腳共用。


          由于89C2051的灌入電流:20mA。故直接驅動:蜂鳴器、PNP晶體管。LED數碼管采用共陰高亮型,LED1數碼管要旋轉180度。因為要顯示:“19:99”,而只有三位數碼管,因此用第三位的數碼管的小數點表示“1”。




      三、軟件編制

      (軟件流程見圖三)
          在T1中斷程序中做一個軟時鐘,在定時處理程序不斷查尋時間,并根據每路的啟動狀態,判別是否要減數。每路倒計時到"0"后,均要判別其它兩路是否已啟動。如果沒有啟動,則CPU進入掉電模式,電流<1.5uA,因此電路中無電源開關,再次啟動,由K4(復位鍵)完成。每路倒計數的初值、啟動狀態(是否開始倒計數),均可單獨設定并存在89c2015的RAM中,只要不斷電,數據不會改變。




      四、操作說明

      電路中設有K1~K4四個開關:

      1.功能如下:

          K1:定時路數切換。上電:LED顯示第1路定時時間,按下k1,LED顯示第1路定時啟動狀態: 【F】表示:關 !緉】表示:開。再按下K1后,依此進入第2路、3路的設置,最后進入關機狀態。 LED顯示:【OFF】,K3按下則關機。

          K2:小時位加1。當超過9小時后,LED1的小數位亮。表示“1”,因此LED顯示最大的定時時間:19小時。LED1安裝時要倒過來,而且最好用綠色的。K3:分位加1 、 啟動狀態切換【F-n-F】、關機確認。

      1、 當LED數碼管顯示定時時間時,按下K3則相應路數的分位加1。范圍:0~59分鐘。
      2、 當LED數碼管顯示【1.F】或【2.F】或【3F】時,按下K3則【F】變為【n】,再次按下K3則【n】變為【F】,一旦進入【n】則相應路數的倒計時就啟動。
      3、 當LED數碼管顯示【OFF】時,表示CPU已處于關機模式,只要按下K3,則CPU進入掉電模式。

          K4:復位 復位89C2051,把MCU從掉電模式拉出重新啟動。以上電路定時初值及啟動狀態均可時時改變。

      2.定時初值及啟動狀態的設定:

      三路定時初值及啟動狀態均可一次設置好,方法如下:

      1、K1~K3鍵任意鍵按下不松約5s后,LED數碼管顯示開始閃爍,表示已進入初值和啟動狀態設定模式。
      2、通過K1-K3的操作,可對三路的定時初值及啟動狀態進入設定。

      四、注意事項

      1、 當MCU用6MHz晶振時,工作電壓可在2.6-5.5V之間。
      2、 外接繼電器,請注意工作電壓,及晶體管的保護。


          


      ;***************
      ;timer_program 2000-12-3 倒計時器源程序
      ;***************


      timers equ 08h
      ;**************************************************
      al1_min equ timers+1h
      al1_hour equ timers+2h
      al2_min equ timers+3h
      al2_hour equ timers+4h
      al3_min equ timers+5h
      al3_hour equ timers+6h
      flash equ timers+7h


      ;****************************************************************
      del1 equ flash+1h
      del2 equ flash+2h
      del3 equ flash+3h ;ram addres at 12h
      ;*****************************************************************
      key_data equ del3+1h
      sec equ del3+2h
      timer_no equ sec+1h
      del4 equ timer_no+1h
      key_power equ del4+1h


      ;*************************************************


      time_led1 equ 24h
      time_led2 equ time_led1+1
      time_led3 equ time_led2+1

      led1 equ time_led3+1h
      led2 equ led1+1
      led3 equ led2+1

      ;*************************************************
      al1_min_t equ led3+1
      al1_hour_t equ al1_min_t+1

      al2_min_t equ al1_hour_t+1h
      al2_hour_t equ al2_min_t+1h

      al3_min_t equ al2_hour_t+1h
      al3_hour_t equ al3_min_t+1h
      ;***************************************************

      beep_timer equ al3_hour_t+1h

      ;****************以上進行內存分配*******************

      led_1 bit p3.0;P3.0控制最右邊的數碼管
      led_2 bit p3.1;P3.1控制中間的數碼管
      led_3 bit p3.7;P3.7控制最左邊的數碼管


      ;(原理圖標的好象有出入,以PCB為準,最左邊的數碼管是顛反安裝的)

      HA BIT P3.2;接蜂鳴器
      key_f bit p3.3;接按鈕公共端

      pnp1 bit p3.4;T1路控制輸出
      pnp2 bit p3.5;T2路控制輸出


      timer_50ms bit 00h;定時50毫秒標志位
      timer_1s bit 01h;定時1秒標志位
      timer_3s bit 03h;定時3秒標志位
      ; timer_20s bit 04h;定時20秒標志位
      timer_1min bit 05h;定時1分鐘標志位
      timer_10min bit 06h;定時10分鐘標志位

      ;timer_am bit 07h
      key_set_f bit 08h
      sec_flash_f bit key_set_f+1h
      ;*************************************************************
      al1_f bit sec_flash_f+1h
      al2_f bit al1_f+1h
      al3_f bit al2_f+1h
      flash_f bit al3_f+1h
      set_f bit flash_f+1h
      ;*****************************************************************
      al_f bit set_f+1h
      al_out_f bit al_f+1h
      all_s bit al_f+2h
      turn_f bit all_s+1h

      aal1_f bit turn_f+1h
      aal2_f bit turn_f+2h
      aal3_f bit turn_f+3h
      ;*****************************************************************

      tih equ 3ch ;9e58h 6MHz
      til equ 0b0h ;3cb0h 12MHz
      tis equ 10d ;20d 12MHz, 10d 6MHz
      ti_no equ 3h

      led_blk equ 0ah
      led_c equ 0bh
      led_e equ 0ch

      ;主程序開始
      oRG 0000H; ;
      sJMP start
      ORG 0003H; ;
      reti;
      ORG 000BH ;
      reti ;
      ORG 0013H
      reti ;
      ORG 001BH ;
      aJMP T1 ;
      ORG 0023H ;
      RETI; AJMP RS_485 ;
      ;**************************************
      start:


      MOV R7,#78h ;
      MOV R0,#10H ;
      CLR A ;
      CR: INC R0 ;
      MOV @R0,A ;
      djnz r7,cr ;將內存清零
      MOV SP,#40H ;
      clr ea
      clr set_f
      clr turn_f
      setb pnp2
      setb pnp1
      ;********************************* j al1-3 data
      mov r0,#al1_min
      mov r1,#al1_min_t
      mov r7,#07h
      op_4:
      mov a,@r0
      cjne a,#19d ,op_1
      op_2: mov a,#00h
      mov @r0,a
      sjmp op_3
      op_1:
      jnc op_2


      op_3:
      mov a,@r0
      mov @r1,a
      inc r0
      inc r1
      djnz r7 ,op_4


      mov a,flash
      mov c,acc.1 ;acc.1 al1 acc.2 al2 ....
      mov al1_f,c
      mov c,acc.2 ;acc.1 al1 acc.2 al2 ....
      mov al2_f,c
      mov c,acc.3 ;acc.1 al1 acc.2 al2 ....
      mov al3_f,c



      ;************************************************


      ;************** INT_CTRL



      ; SETB ie0 ;
      ; SETB EX0 ;
      ; SETb ex1 ;
      setB ET0 ;
      SETB ET1 ;
      ; SETB IT0 ;
      ; setb IT1 ;
      MOV TMOD,#00010001b ;
      MOV TH1,#tih
      mov tl1,#til
      mov th0,#00h
      mov tl0,#00h

      ;***********RS_CTRL


      ; MOV SCON,#00H ;


      ;*****************
      ; MINI_Pragram
      ;*****************
      mov timers,#tis
      mov sec,#00d
      ;mov al1_hour_t ,al1_hour
      ;mov al1_min_t ,al1_min


      ;mov al2_hour_t ,al2_hour
      ;mov al2_min_t ,al2_min


      ;mov al3_min_t ,al3_min
      ;mov al3_hour_t,al3_hour


      mov timer_no,#ti_no
      mov del4,#00h
      ;mov beep_timer,#8d


      mov del1,#00d
      mov del2,#00d
      mov del3,#00d
      mov del4,#00d
      mov key_power,#01d


      setb al_out_f
      setb tr1
      setb ea


      setb timer_50ms


      STAR_BI:
      ; setb flash_f
      acall led_jmp_1;led_times
      aCALL KEY_1
      acall al_out_way
      acall delay
      sjmp star_bi
      ;;;;;;;;;;;;;;;;;
      delay:


      inc del3
      mov a,del3
      cjne a,#0ffh,del_1
      mov del3,#00h
      inc del4
      mov a,del4
      cjne a,#040h,del_1
      mov del4,#00h
      clr flash_f
      clr set_f


      del_1:

      ret


      ;****************************
      ; key_pragm
      ;****************************


      KEY_1:
      mov p1,#00h
      mov p3,#0ffh
      clr key_f
      mov a,p3
      setb key_f
      anl a ,#10000011b
      cjne a,#10000011b,you_key_1
      key_e:

      mov p3,#0ffh
      setb key_f
      mov key_data,#00h

      key_1_end:


      ret



      you_key_1:
      mov del3,#0feh
      mov del4,#0feh


      setb key_f

      mov b,#20h
      lll_1:
      push b
      lcall led
      pop b
      djnz b ,lll_1



      mov p1,#00h
      mov p3,#0ffh
      clr key_f
      mov a,p3
      setb key_f
      anl a ,#10000011b
      cjne a,#10000011b,you_key_2

      sjmp key_e


      you_key_2: jb acc.0 ,key_set


      mov key_data,#01h
      sjmp you_key_33


      key_set: jb acc.1 ,you_key_3


      mov key_data,#02h
      sjmp you_key_33


      you_key_3:
      jb acc.7 ,you_key_33
      mov key_data,#03h
      sjmp you_key_33


      you_key_33:


      setb key_f
      acall led


      inc del1
      mov a,del1
      cjne a,#0ffh ,jhg_1
      mov del1,#00h

      inc del2
      mov a,del2
      cjne a,#08h ,jhg_1
      mov del2,#00h
      setb flash_f
      setb set_f
      ; mov key_power,#01h
      ; mov key_data,#00h



      jhg_1:
      mov p1,#00h
      mov p3,#0ffh


      clr key_f
      mov a,p3
      anl a ,#10000011b
      cjne a,#10000011b,you_key_33
      setb key_f
      mov p3,#0ffh
      mov del1,#00h
      mov del2,#00h


      ; acall beep
      mov r6,#040h
      bb_1:
      ;!!!!!!!!!!!!!!!!!!!!!!!!!!
      clr ha
      setb key_f
      acall led
      acall led
      djnz r6 ,bb_1
      setb ha
      ;******************************************
      mov dptr,#key_ord_1
      mov a,key_data
      mov b,#03h;!!!!!!!!!!!!!!!
      mul ab
      jmp @a+dptr

      key_ord_1: ljmp key_k0_0
      ljmp key_k1_0
      ljmp key_k2_0
      ljmp key_k3_0

      key_k0_0: ;no key
      ajmp key_1_end


      key_k1_0: ; key_3
      acall key_3
      ajmp key_1_end


      key_k2_0: ; key_2
      acall key_2
      ajmp key_1_end


      key_k3_0: ; key_1


      inc key_power
      mov a,key_power
      cjne a,#08h ,io_1

      mov key_power,#01h
      io_1:
      ajmp key_1_end




      ;**************************************
      proc key_3
      key_3:


      mov dptr,#led_ord_3
      mov a,key_power ;data
      mov b,#02h
      mul ab
      jmp @a+dptr

      led_ord_3: ajmp led_k0_2
      ajmp led_k2_2
      ajmp led_k1_2
      ajmp led_k4_2
      ajmp led_k3_2
      ajmp led_k6_2
      ajmp led_k5_2
      ajmp led_k7_2

      led_k0_2: ; nop


      ajmp led_jmp_5_end


      led_k1_2: ; al1 way off/on


      cpl al1_f
      jb flash_f ,tw_11


      sjmp tw_21
      tw_11:
      mov c,al1_f
      mov a,flash
      mov acc.1 ,c
      mov flash,a

      tw_21:
      ajmp led_jmp_5_end


      led_k2_2: ;al1 timer

      jb flash_f ,set_11
      inc al1_min_t
      mov a,al1_min_t
      cjne a,#60 ,set_12
      mov al1_min_t,#00h
      set_12:
      sjmp set_14

      set_11:
      inc al1_min
      mov a,al1_min
      cjne a,#60 ,set_14
      mov al1_min,#00h
      set_14:

      ajmp led_jmp_5_end


      led_k3_2: ;al2 way off/on

      cpl al2_f
      jb flash_f ,tw_12
      sjmp tw_22
      tw_12:
      mov c,al2_f
      mov a,flash
      mov acc.2 ,c
      mov flash,a

      tw_22:
      ajmp led_jmp_5_end


      led_k4_2: ;al2 timer


      jb flash_f ,set_21
      inc al2_min_t
      mov a,al2_min_t
      cjne a,#60 ,set_22
      mov al2_min_t,#00h
      set_22:
      sjmp set_24

      set_21:
      inc al2_min
      mov a,al2_min
      cjne a,#60 ,set_24
      mov al2_min,#00h
      set_24:


      ajmp led_jmp_5_end


      led_k5_2: ; al3 way off/on


      cpl al3_f
      jb flash_f ,tw_13
      sjmp tw_23
      tw_13:
      mov c,al3_f
      mov a,flash
      mov acc.3 ,c
      mov flash,a

      tw_23:
      ajmp led_jmp_5_end


      led_k6_2: ;al3 timer
      jb flash_f ,set_31
      inc al3_min_t
      mov a,al3_min_t
      cjne a,#60 ,set_32
      mov al3_min_t,#00h
      set_32:
      sjmp set_34

      set_31:
      inc al3_min
      mov a,al3_min
      cjne a,#60 ,set_34
      mov al3_min,#00h
      set_34:
      ajmp led_jmp_5_end


      led_k7_2: ; turn off/on
      setb turn_f


      led_jmp_5_end:
      ret
      end
      ;****************************************
      proc key_2
      key_2:


      mov dptr,#led_ord_3
      mov a,key_power ;data
      mov b,#02h
      mul ab
      jmp @a+dptr

      led_ord_3: ajmp led_k0_2
      ajmp led_k2_2
      ajmp led_k1_2
      ajmp led_k4_2
      ajmp led_k3_2
      ajmp led_k6_2
      ajmp led_k5_2
      ajmp led_k7_2

      led_k0_2: ; nop


      ajmp led_jmp_5_end


      led_k1_2: ; al1 way off/on


      ajmp led_jmp_5_end


      led_k2_2: ;al1 timer
      jb flash_f ,set_311
      inc al1_hour_t
      mov a,al1_hour_t
      cjne a,#20d ,set_321
      mov al1_hour_t,#00h
      set_321:
      sjmp set_341

      set_311:
      inc al1_hour
      mov a,al1_hour
      cjne a,#20d ,set_341
      mov al1_hour,#00h
      set_341:


      ajmp led_jmp_5_end


      led_k3_2: ;al2 way off/on
      ajmp led_jmp_5_end


      led_k4_2: ;al2 timer
      jb flash_f ,set_312
      inc al2_hour_t
      mov a,al2_hour_t
      cjne a,#20d ,set_322
      mov al2_hour_t,#00h
      set_322:
      sjmp set_342

      set_312:
      inc al2_hour
      mov a,al2_hour
      cjne a,#20d ,set_342
      mov al2_hour,#00h
      set_342:


      ajmp led_jmp_5_end


      led_k5_2: ; al3 way off/on
      ajmp led_jmp_5_end


      led_k6_2: ;al3 timer
      jb flash_f ,set_313
      inc al3_hour_t
      mov a,al3_hour_t
      cjne a,#20d ,set_323
      mov al3_hour_t,#00h
      set_323:
      sjmp set_343

      set_313:
      inc al3_hour
      mov a,al3_hour
      cjne a,#20d ,set_343
      mov al3_hour,#00h
      set_343:


      ajmp led_jmp_5_end


      led_k7_2: ; turn off/on


      led_jmp_5_end:
      ret
      end


      ;******************************************** led
      proc led_jmp_1
      led_jmp_1:


      mov dptr,#led_ord_3
      mov a,key_power ;data
      mov b,#02h
      mul ab
      jmp @a+dptr

      led_ord_3: ajmp led_k0_2
      ajmp led_k2_2
      ajmp led_k1_2
      ajmp led_k4_2
      ajmp led_k3_2
      ajmp led_k6_2
      ajmp led_k5_2
      ajmp led_k7_2

      led_k0_2: ; nop

      setb flash_f
      mov a,#89d
      mov r7,#18d
      acall timer_led1
      clr flash_f
      ajmp led_jmp_5_end


      led_k1_2: ; al1 way off/on


      mov led1 ,#0bh

      jnb al1_f,aal_1


      mov a,#0ch
      mov led1,a
      aal_1:
      mov led3,#1d
      mov led2,#led_blk


      ajmp led_jmp_5_end


      led_k2_2: ;al1 timer

      jb flash_f ,led_m11
      mov a,al1_min_t
      mov r7,al1_hour_t
      sjmp led_m21
      led_m11:
      mov a,al1_min
      mov r7,al1_hour
      led_m21:
      acall timer_led1
      ajmp led_jmp_5_end


      led_k3_2: ;al2 way off/on
      mov led1 ,#0bh

      jnb al2_f,aal_2


      mov a,#0ch
      mov led1 ,a

      aal_2:
      mov led3,#2d
      mov led2,#led_blk


      ajmp led_jmp_5_end


      led_k4_2: ;al2 timer

      jb flash_f ,led_m12
      mov a,al2_min_t
      mov r7,al2_hour_t
      sjmp led_m22
      led_m12:
      mov a,al2_min
      mov r7,al2_hour
      led_m22:
      acall timer_led1

      ajmp led_jmp_5_end


      led_k5_2: ; al3 way off/on


      mov led1 ,#0bh

      jnb al3_f,aal_3


      mov a,#0ch
      mov led1 ,a

      aal_3:
      mov led3,#3d
      mov led2,#led_blk
      ajmp led_jmp_5_end


      led_k6_2: ;al3 timer

      jb flash_f ,led_m13
      mov a,al3_min_t
      mov r7,al3_hour_t
      sjmp led_m23
      led_m13:
      mov a,al3_min
      mov r7,al3_hour
      led_m23:
      acall timer_led1
      ajmp led_jmp_5_end



      led_k7_2: ; turn off/on
      mov led3,#00h
      mov led2,#0bh;led_b
      mov led1,#0bh;led_b


      led_jmp_5_end:
      acall led
      ret
      end



      timer_led1:


      ;*******************************min to led
      MOV B,#10D
      DIV AB
      mov led2,a
      mov a,b
      mov led1,a
      ;*******************************hour to led
      mov a,r7
      MOV B,#10D
      DIV AB
      mov r1,a
      mov a,b
      mov b,r1
      mov r1,a

      jnz tt_2

      tt_1: mov a,#led_blk
      tt_2:
      mov led3,a
      clr all_s

      mov a,b
      jz tt_3
      setb all_s
      mov led3 ,r1
      tt_3:
      ret



      ;********************
      ; LED_PROGRAM
      ;*******************

      LED:


      mov c,flash_f
      jnc ffl_1
      mov c,timer_50ms
      jc ffl_1

      ;mov led1,#led_blk
      ;mov led2,#led_blk
      ;mov led3,#led_blk
      ajmp led_end

      ffl_1:


      mov dptr,#led_asc
      ;***************************led1
      mov a,led1
      movc a,@a+dptr
      mov c, timer_50ms
      mov acc.0,c

      mov p1,a

      clr led_1

      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 c,all_s
      mov acc.0 ,c


      mov p1,a

      clr led_3
      acall timer_1ms
      setb led_3
      ;*************************
      led_end:
      mov p1,#0ffh
      mov a,p3
      orl a,#11111000b
      mov p3,a

      ret


      led_asc:
      db 11101110B;0 "bafgecdh"
      db 10000100B;1
      db 11011010B;2
      db 11010110B;3
      db 10110100B;4
      db 01110110B;5
      db 01111110B;6
      db 11000100B;7
      db 11111110B;8
      db 11110110B;9
      DB 00000000B;BLACK=>0aH
      DB 01111000B;f=>b
      dB 11101100B;e=>C
      DB 00110000B;1,=>D

      ;**********************************
      ;delay
      ;********************************

      timer_1ms:
      push b
      mov r2,#01h
      a_1: mov b,#020h
      b_1: djnz b,b_1
      djnz r2,a_1
      pop b
      ret

      ;******************
      ; TO-T1_INT T1定時器完成100毫秒定時(6M晶振)
      ;******************


      T1:
      setb tr0
      PUSH ACC ;程序參數保護
      PUSH b ;
      push psw


      inc time_led1
      mov a,time_led1
      cjne a,#5d,t1_n1;判斷time_led1中是否滿5?
      mov time_led1,#00h
      cpl timer_50ms;滿50毫秒后對50毫秒標志位取反


      ; mov a,timers
      ; cjne a,#10d ,t1_n11;判斷timers中是否滿10?
      ;t1_n12:
      ; clr timer_1s;滿1秒后對1秒標志位取反

      sjmp t1_n1
      ;*********************************
      t1_end_2: ajmp t1_end_1
      ;********************************


      ;t1_n11: jc t1_n12
      ; setb timer_1s


      t1_n1: djnz timers ,t1_end_2
      mov timers,#tis


      inc time_led3
      mov a,time_led3
      cjne a,#03d,t1_sec
      mov time_led3,#00h
      cpl timer_3s
      t1_sec:
      inc sec
      mov a,sec
      cjne a,#60d ,t1_end
      mov sec,#00d


      jnb al1_f ,t1_al1


      mov a,al1_min_t
      mov b,al1_hour_t
      mov c ,aal1_f
      acall al_all
      mov al1_min_t,a
      mov al1_hour_t,b
      mov aal1_f,c

      t1_al1:
      jnb al2_f ,t1_al2
      mov a,al2_min_t
      mov b,al2_hour_t
      mov c ,aal2_f
      acall al_all
      mov al2_min_t,a
      mov al2_hour_t,b
      mov aal2_f,c

      t1_al2:
      jnb al3_f ,t1_al3
      mov a,al3_min_t
      mov b,al3_hour_t
      mov c ,aal3_f
      acall al_all
      mov al3_min_t,a
      mov al3_hour_t,b
      mov aal3_f,c


      t1_al3:
      T1_END:
      t1_end_1:
      ;************************************ sub t0 timer
      clr c
      clr tr0
      mov b,timer_no
      mov a,#til
      add a,tl0

      addc a,b ;*******have 5 order
      mov tl1 ,a

      mov a,#tih
      addc a, th0
      mov th1,a
      mov th0,#00h
      mov tl0,#00h
      setb tr1
      pop psw
      pop b ;
      pop acc ;
      RETI ;


      ;************************************
      beep:
      clr ha


      mov r6,#060h
      bee_2: mov r4,#0ffh
      bee_1:
      djnz r4 ,bee_1
      djnz r6,bee_2
      setb ha
      ret
      ;***************************************
      stop:
      mov a,#0ffh
      mov p1,a
      mov p3,a

      mov a,pcon
      orl a,#00000010b
      mov pcon,a
      ret

      al_out_way:


      jnb aal1_f ,al_out1


      mov r3,#0ffh
      pnp_3:
      mov b,#060h


      pnp_4:
      push b


      acall led_jmp_1;led_times

      mov c,timer_50ms
      mov ha ,c
      pop b
      djnz b ,pnp_4
      djnz r3 ,pnp_3


      mov c,al2_f
      orl c,al3_f
      jc al_out54
      acall stop


      al_out54:
      clr aal1_f
      clr al1_f
      sjmp al_out4


      al_out1:
      jnb aal2_f ,al_out2


      clr pnp1
      mov r3,#0ffh
      pnp_1:
      mov b,#020h


      pnp_2:
      push b


      acall led_jmp_1;led_times
      pop b
      djnz b ,pnp_2
      djnz r3 ,pnp_1


      setb pnp1


      mov c,al1_f
      orl c,al3_f
      jc al_out64
      acall stop


      al_out64:
      clr aal2_f
      clr al2_f
      sjmp al_out4



      al_out2:
      jnb aal3_f ,al_out3
      clr pnp2


      al_out3:
      jnb turn_f ,al_out4
      acall stop
      al_out4:
      ret
      ;*******************************************
      al_all:
      jc al_all_1
      dec a
      jnz al_all_1
      mov a,b
      jz al_all_3
      dec b
      sjmp al_all_2

      al_all_3:
      setb c
      sjmp al_all_1

      al_all_2:
      mov a,#60d
      al_all_1:


      ret


      ;看懂別人寫的匯編程序是很困難的事情,我希望有興趣的網友能幫我完成這段程序的中文注釋,這樣可以使初學者能夠更加容易學會編程.


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

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