⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 定时器6.lst

📁 这个是大学的计算机接口实验课上经常用到的原程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
A51 MACRO ASSEMBLER  定时器6                                                              04/14/2005 16:26:25 PAGE     1


MACRO ASSEMBLER A51 V1.10
OBJECT MODULE PLACED IN 定时器6.OBJ
ASSEMBLER INVOKED BY: H:\239\A51.EXE 定时器6.ASM DB

LOC  OBJ            LINE     SOURCE

                       1     ;实验六:定时器设计
                       2                     ;******************;
                       3                     ;    定时器程序    ;
                       4                     ;    采用89c2051   ;
                       5                     ;    2001.10       ;
                       6                     ;******************;
                       7                 ;
                       8                 ;******************
                       9                 ;      伪定义     ;
                      10                 ;******************
  0030                11                 SL     EQU   30H               ;SL存放秒的个位数
  0031                12                 SH     EQU   31H               ;SH存放秒的十位数
  0032                13                 ML    EQU   32H                        ;ML存放分的个位数
  0033                14                 MH     EQU   33H               ;MH存放分的十位数
  0034                15                 HL     EQU   34H               ;HL存放时的个位数
  0035                16                 HH     EQU   35H                   ;HH存放时的十位数
                      17                 ;
  0036                18                 L0     EQU   36H               ;L0~L3:显示数据存储器
  0037                19                 L1     EQU   37H
  0038                20                 L2     EQU   38H
  0039                21                 L3     EQU   39H
  003A                22                 DSPLYP    EQU   3AH         ;显示数据指针(DISPLAY-POINT)
  003B                23                 PLYTS     EQU   3BH         ;显示次数计数器(DISPLAY-TIMES)
                      24                 ;
  0039                25                 LPLMOD   BIT   39H          ;低两位显示方式(LOW-PLAY-MOD)
  003A                26                 HPLMOD   BIT   3AH         ;高两位显示方式(HIGH-PLAY-MOD)
  003B                27                 BRIGHT    BIT   3BH         ;DISPLAY子程序参数:亮灭指示位
                      28             ;
  003C                29             TCOUNT   EQU   3CH         ;时间计数器(TIME-COUNT)
                      30             ;
  003D                31             ADDRES   EQU   3DH           ;加1子程序参数
  003E                32             MAX     EQU   3EH           ;加1子程序参数
  0020                33                 IFDEC    BIT   20H            ;BCD加法子程序参数
                      34                 ;
  003F                35             R_MOD  EQU   3FH          ;响铃方式参数
                      36                 ;
  0097                37                 LED4     BIT   P1.7            ;发光管状态位
  00A7                38                 BELL     BIT   P2.7           ;蜂鸣器
  00B7                39                 SWITCH  BIT   P3.7           ;继电器
  00B0                40                 FKEY     BIT   P3.0           ;功能键 (S1)
  00B1                41                 MKEY    BIT   P3.1           ;修改键 (S2)
                      42                 ;
  0038                43                 WORKIN BIT   38H            ;工作状态指示位
                      44                 ;
                      45     
                      46                 ;******************
                      47                 ;     中断入口    ;
                      48                     ;******************
0000                  49                         ORG          0000H
0000 020030           50                 START:  LJMP         MAIN                   ; 0000H  引向主程序
0003 02040D           51                         LJMP         ERR                    ; 0003H
0006 00               52                         NOP
0007 00               53                         NOP
0008 02040D           54                         LJMP        ERR                     ; 引向出错处理程序
000B 02010F           55                         LJMP        PGT0                    ; 000BH  引向中断处理程序PGT0
000E 00               56                         NOP
000F 00               57                         NOP
0010 02040D           58                         LJMP        ERR                     ; 引向出错处理程序
A51 MACRO ASSEMBLER  定时器6                                                              04/14/2005 16:26:25 PAGE     2

0013 02040D           59                         LJMP        ERR                     ; 0013H  INT1
0016 00               60                         NOP
0017 00               61                         NOP
0018 02040D           62                         LJMP        ERR
001B 02040D           63                         LJMP        ERR                     ; 001BH  T1
001E 00               64                         NOP
001F 00               65                         NOP
0020 02040D           66                         LJMP        ERR
0023 02040D           67                         LJMP        ERR                     ; 0023H
0026 00               68                         NOP
0027 00               69                         NOP
0028 02040D           70                         LJMP        ERR
002B 02040D           71                         LJMP        ERR                     ; 002BH
002E 00               72                         NOP
002F 00               73                         NOP
                      74                     ;
                      75                     ;************
                      76                     ;   主程序  ;
                      77                     ;************
0030 75A800           78                    MAIN:   MOV   IE,  #00H            ;关中断
0033 758157           79                         MOV   SP,  #57H            ;设置堆栈指针
0036 75D000           80                         MOV   PSW,  #00H          ;选用寄存器组0
0039 758911           81                         MOV   TMOD, #11H          ;设定中断工作方式为T0和T1
                      82                 ;
003C E556             83                         MOV   A, 56H
003E B4AA0C           84                         CJNE  A, #0AAH, CSTART     ;判上电复位标志,无标志转冷启动
0041 E557             85                         MOV   A, 57H
0043 B45507           86                         CJNE  A, #55H,  CSTART      ; 无标志转冷启动
0046 0198             87                         AJMP  HSTART               ;有上电复位标志转热启动
0048 00               88                         NOP
0049 00               89                         NOP
004A 02040D           90                         LJMP        ERR                  ;软件陷阱,引向出错处理程序
004D 7590FF           91                 CSTART: MOV   P1, #0FFH             ;冷启动,全面初始化
0050 75B0FF           92                         MOV   P3, #0FFH
0053 758800           93                         MOV   TCON,  #00H          ;计时停止
0056 758AB0           94                         MOV   TL0, #0B0H            ;赋中断T0初值
0059 758C3C           95                         MOV   TH0, #3CH
005C 753C0A           96                         MOV   TCOUNT, #0AH          ;赋定时器初值
005F 7D00             97                         MOV   R5, #00H              ;R5为一空单元(备用)
0061 7C00             98                         MOV   R4, #00H              ; R4 为工作模式选择寄存器
0063 753000           99                         MOV   SL, #00H              ;定时单元清零
0066 753100          100                         MOV   SH, #00H              ;秒
0069 753200          101                         MOV   ML, #00H             ;
006C 753300          102                         MOV   MH, #00H             ;分
006F 753400          103                         MOV   HL, #00H             ;
0072 753500          104                         MOV   HH, #00H             ;时
0075 753B64          105                         MOV   PLYTS,  #64H          ;赋显示次数初值为100次
0078 753A36          106                         MOV   DSPLYP,  #L0          ;显示指针指向显存单元
007B 75360A          107                         MOV   L0,  #0AH           ;送显示数据"-----"
007E 75370A          108                         MOV   L1,  #0AH
0081 75380A          109                         MOV   L2,  #0AH
0084 753904          110                         MOV   L3,  #04H
0087 D297            111                         SETB   LED4                 ;LED4为数码管之间的发光二极管
0089 D239            112                         SETB   LPLMOD              ;设定显示方式为闪烁
008B D23A            113                         SETB   HPLMOD              ;
008D D23B            114                         SETB   BRIGHT               ;允许显示
008F C238            115                         CLR    WORKIN                    ;清工作标志 , 待命
0091 01AB            116                         AJMP  SETUP                ;转开始工作
0093 00              117                         NOP
0094 00              118                         NOP
0095 02040D          119                         LJMP        ERR          ;软件陷阱
0098 759800          120              HSTART:    MOV   SCON, #00H    ; 有上电标志,热启动,清串行口控制寄存器
009B 75B800          121                         MOV   IP,  #00H      ; 清中断优先控制寄存器
009E D2B0            122                         SETB   FKEY           ;重设按键
00A0 D2B1            123                         SETB   MKEY
00A2 D2AF            124                         SETB   EA              ;开中断
A51 MACRO ASSEMBLER  定时器6                                                              04/14/2005 16:26:25 PAGE     3

00A4 01BD            125                         AJMP  BEGIN           ;转向继续工作
00A6 00              126                         NOP
00A7 00              127                         NOP
00A8 02040D          128                         LJMP          ERR            ;软件陷阱
00AB D2AF            129                 SETUP:  SETB  EA               ;开中断
                     130                 ;
00AD 711F            131                   MAIN1:   ACALL  DISPLY          ;调用显示
00AF 20B035          132                             JB         FKEY,  JUDGE    ;按键扫描
00B2 71D1            133                             ACALL  KEYDLY        ;延时消抖动
00B4 20B030          134                             JB         FKEY,  JUDGE    ;无键按下转向判断是否到点
00B7 C2A9            135                             CLR   ET0              ;功能键被按下,则
00B9 C28C            136                             CLR   TR0                       ;暂停计时
00BB 31C3            137                             ACALL MENU           ; 调用菜单设置程序
00BD D238            138                    BEGIN:  SETB  WORKIN          ;置工作标志位,开始工作
00BF D2A9            139                             SETB  ET0              ;开中断
00C1 D28C            140                             SETB  TR0              ;开始计时
00C3 EC              141                             MOV   A, R4            ;移入工作模式选择
00C4 23              142                             RL    A                         ;指针放大
00C5 9000C9          143                             MOV   DPTR,  #M_TAB
00C8 73              144                             JMP   @A+DPTR        ;根据工作模式跳转到相应程序段
00C9 01D6            145                     M_TAB:  AJMP  WORK1
00CB 01D6            146                             AJMP  WORK2
00CD 01DF            147                             AJMP  WORK3
00CF 01DF            148                             AJMP  WORK4
00D1 00              149                             NOP
00D2 00              150                             NOP
00D3 02040D          151                             LJMP  ERR               ;软件陷阱
00D6                 152     WORK1:  ;
00D6 C2B7            153       WORK2:  CLR   SWITCH            ;工作方式1和2:开继电器
00D8 01E1            154               AJMP  MAIN2
00DA 00              155               NOP
00DB 00              156               NOP
00DC 02040D          157               LJMP  ERR                ;软件陷阱
00DF                 158       WORK3:  ;
00DF D2B7            159     WORK4:  SETB  SWITCH             ;工作方式3和4:不开继电器
00E1 C2A7            160       MAIN2:  CLR   BELL                 ;蜂鸣器短鸣一声,以示开始工作
00E3 71F3            161                ACALL  DL05S
00E5 D2A7            162                SETB  BELL
00E7 3038C3          163        JUDGE:  JNB WORKIN, MAIN1           ;判断是否在定时之中
00EA E530            164                 MOV   A, SL                  ;判断秒是否为零
00EC 70BF            165                 JNZ   MAIN1
00EE E531            166                 MOV   A, SH                ;判断秒是否为零
00F0 70BB            167                 JNZ   MAIN1
00F2 E532            168                 MOV   A, ML                ;判断分是否为零
00F4 70B7            169                 JNZ   MAIN1
00F6 E533            170                 MOV   A, MH                ;判断分是否为零
00F8 70B3            171                 JNZ   MAIN1
00FA E534            172                 MOV   A, HL                ;判断时是否为零
00FC 70AF            173                 JNZ   MAIN1
00FE E535            174                 MOV   A, HH                ;判断时是否为零
0100 70AB            175                 JNZ   MAIN1                ;若时分秒全为零则
0102 C2A9            176                 CLR   ET0                  ; 停止计时
0104 C28C            177                 CLR   TR0                  ;
0106 5186            178                 ACALL ACTION              ; 调用到点工作子程序
0108 0130            179                 AJMP  MAIN                ; 返回
010A 00              180                 NOP
010B 00              181                 NOP
010C 02040D          182                 LJMP ERR                   ;软件陷阱
                     183                 ;
                     184             ;******************
                     185                 ;    倒计时程序   ;
                     186                 ;******************
010F C2AF            187                 PGT0:   CLR   EA                             ;关中断
0111 C0E0            188                         PUSH  ACC                            ;保护现场
0113 C0D0            189                         PUSH  PSW
0115 C082            190                         PUSH  DPL
A51 MACRO ASSEMBLER  定时器6                                                              04/14/2005 16:26:25 PAGE     4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -