找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2529|回复: 0
打印 上一主题 下一主题
收起左侧

单片机-数码管、LED多任务汇编语言编程

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-4 02:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Time1                 Equ           65535-1000+5
;================================================================
LedPort               Equ           P1
SegCS                 Equ           2000H
SegDisPlay            Equ           0000H

FlagUnit              Equ           20H
Sec0001F              Bit           FlagUnit.0
Sec001F               Bit           FlagUnit.1
Sec01F                Bit           FlagUnit.2
SecondF               Bit           FlagUnit.3
MinuteF               Bit           FlagUnit.4
                     
Sec0001               Data          22H
Sec001                Data          23H
Sec01                 Data          24H
Second                Data          25H
Minute                Data          26H

CSNum                 Data          27H
LedNum                Data          28H
SegNum                Data          29H
;2Ah..2fh
DisBuf                Equ           30H;..35h

;================================================================
                      Org           0000H
                      Ajmp          Main
;================================================================
                      Org           001BH
                      Mov           TL1,#Low(Time1)
                      Mov           TH1,#High(Time1)
                      AJmp          CTCEntry
;================================================================
CTCEntry:             Setb          Sec0001F
                      Djnz          Sec0001,CTCEntryQ
                      Mov           Sec0001,#10
                     
                      Setb          Sec001F
                      Djnz          Sec001,CTCEntryQ
                      Mov           Sec001,#10
                     
                      Setb          Sec01F
                      Djnz          Sec01,CTCEntryQ
                      Mov           Sec01,#10
                     
                      Setb          SecondF
                      Djnz          Second,CTCEntryQ
                      Mov           Second,#60
                     
                      Setb          MinuteF
                     
CTCEntryQ:            RetI
;================================================================
InitSysT:       Mov           TMod,#00000001B
                      Mov           TL1,#Low(Time1)
                      Mov           TH1,#High(Time1)
                      Setb          EA
                      Setb          ET1
                      Setb          TR1

                      Mov           Sec0001,#10
                      Mov           Sec001,#10
                      Mov           Sec01,#10
                      Mov           Second,#10
                      Clr           Sec0001F
                      Clr           Sec001F
                      Clr           Sec01F
                      Clr           SecondF
                      Clr           MinuteF

                      Ret
;================================================================
InitSeg:              Mov           DisBuf+0,#0
                      Mov           DisBuf+1,#1
                      Mov           DisBuf+2,#2
                      Mov           DisBuf+3,#3
                      Mov           DisBuf+4,#4
                      Mov           DisBuf+5,#5
                      AJmp          InitDis
;================================================================
InitLed:              
                      Mov           LedNum,#0
                      Ret
;================================================================
Delay:                Mov           R6,#0
Delay1:               Mov           R7,#0
Delay2:               Djnz          R7,Delay2
                      Djnz          R6,Delay1
                      Ret
;================================================================
Ledplay:              Mov           Dptr,#LedTab1
                      Mov           A,LedNum
                      Movc          A,@A+Dptr
                      Mov           LedPort,A
                      Inc           LedNum
                      Mov           A,LedNum
                      Cjne          A,#8,LedQ
                      Mov           LedNum,#0
LedQ:                 Ret
;================================================================
LedTab1:              DB            11111110B
                      DB            11111101B
                      DB            11111011B
                      DB            11110111B
                      DB            11101111B
                      DB            11011111B
                      DB            10111111B
                      DB            01111111B
;----------------------------------------------------------------                  
LedTab2:
;================================================================  
SegPlay:              Mov           A,CSNum               
                      Mov           Dptr,#SegCS
                      MovX          @Dptr,A
                      Rl            A
                      Mov           CSNum,A
                     
                      Mov           Dptr,#DisTab
                      Mov           R0,SegNum
                      Mov           A,@R0
                      Movc          A,@A+Dptr
                      Mov           Dptr,#SegDisplay
                      Movx          @Dptr,A
                      Inc           SegNum
                      Mov           A,SegNum
                      Cjne          A,#DisBuf+6,SegPlayQ
InitDis:              Mov           CSNum,#00000001B
                      Mov           SegNum,#DisBuf
SegPlayQ:             Ret
;---------------------------------------------------------------
;                     Char          "0" ,"1" ,"2" ,"3" ,"4","5","6","7","8"
DisTab:               DB            0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h
;===============================================================
Main:                 Mov           SP,#07H   
                      Acall         Delay
                      Acall         InitSysT
                      Acall         InitSeg
                      Acall         InitLed
;----------------------------------------------------------------
MainLoop :            Jbc           Sec0001F,DoSec0001                       
                      Jbc           Sec001F,DoSec001
                      Jbc           Sec01F,DoSec01
                      Jbc           SecondF,DoSecond
                      Jbc           MinuteF,DoMinute
                      Ajmp          MainLoop
;----------------------------------------------------------------
DoSec0001:            
                                          
                      Ajmp          MainLoop
;----------------------------------------------------------------
DoSec001:
                      Acall         SegPlay
                      Ajmp          MainLoop
;----------------------------------------------------------------
DoSec01:              
                      Ajmp          MainLoop
;----------------------------------------------------------------
DoSecond:             Acall         Ledplay
                      Ajmp          MainLoop
;----------------------------------------------------------------
DoMinute:
                      Ajmp          MainLoop                     
;================================================================
                      End



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表