专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机—多任务编程

作者:佚名   来源:本站原创   点击数:  更新时间:2012年12月20日   【字体:


 

;================================================================
LedPort               Equ           P2
SegPort               Equ           P0
Timer1                Equ           0FB23H
Sec400Chg             Bit           30H
Sec10Chg              Bit           31H
SecChg                Bit           32H
MinChg                Bit           33H
Sec400                Data          34H
Sec10                 Data          35H
Second                Data          36H
Temp                  Data          37H
Relieve               Data          38H
Temp1                 Data          39H
;================================================================
                      Org           0000H
                      Ajmp          Main
;================================================================
InitSysT:             Mov           Relieve,#50
           Mov           TMod,#00100000B
                      Mov           TL1,#Low(Timer1)
                      Mov           TH1,#High(Timer1)
                      Setb          EA
                      Setb          ET1
                      Setb          TR1
                     
                      Mov           Sec400,#40
                      Mov           Sec10,#10
                      Mov           Second,#60
                      Clr           Sec400Chg
                      Clr           Sec10Chg
                      Clr           SecChg
                      Clr           MinChg
                      Ret
;================================================================
                      Org           001BH
                      Mov           TL1,#Low(Timer1)
                      Mov           TH1,#High(TImer1)
                      AJmp          CTC1Entry
                     
CTC1Entry:            Setb          Sec400Chg
                      Djnz          Sec400,T1IntOut
                      Mov           Sec400,#40
                     
                      Setb          Sec10Chg
                      Inc           Sec10HEX
                      Djnz          Sec10,T1IntOut
                      Mov           Sec10,#10
                     
                      Setb          SecChg
                      Djnz          Second,T1IntOut
                      Mov           Second,#60
                      Setb          MinChg
                     
T1IntOut:             RetI            
;================================================================
Delay:                Mov           R6,#40
Delay1:               Mov           R7,#0
Delay2:               Djnz          R7,Delay2
                      Djnz          R6,Delay1
                      Ret
;================================================================ 
SegDisplay:           Mov           Dptr,#Table
SegLoop:             
                      Movc          A,@A+Dptr
                      Mov           SegPort,A
                      Ret
;----------------------------------------------------------------
Table:                DB            11000000B
                      DB            11111001B
                      DB            10100100B
                      DB            10110000B
                      DB            10011001B
                      DB            10010010B
                      DB            10000010B
                      DB            11011000B
                      DB            10000000B
                      DB            10010000B
;================================================================
Main:                 MOv           Temp1,#11111110B
                      Mov           Temp,#0
                      Acall         InitSysT
                     
MainLoop0:            Jbc           Sec400Chg,DoSec400
MainLoop1:            Jbc           Sec10Chg,DoSec10
MainLoop2:            Jbc           SecChg,DoSecond
MainLoop3:            Jbc           MinChg,DoMinute
                      Ajmp          MainLoop0
DoSec400:
                      Sjmp          MainLoop1
DoSec10:
                      Mov           A,Temp
                      Acall         SegDisplay
                      Djnz          Relieve,L3
                      Mov           Relieve,#50
                      Inc           Temp
                      Mov           A,Temp
                      Cjne          A,#9,MainLoop2
                      Mov           Temp,#0                    
L3:                   Sjmp          MainLoop2
DoSecond:                           
                      Mov           LedPort,Temp1
                      Mov           A,Temp1
                      Rl            A
                      Mov           Temp1,A
                      Sjmp          MainLoop3
DoMinute:
                      Sjmp          MainLoop0                     
;================================================================
                      End 
关闭窗口

相关文章