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

📄 5电子钟p1p2.lst

📁 这个是大学的计算机接口实验课上经常用到的原程序
💻 LST
📖 第 1 页 / 共 3 页
字号:

00B9 F6              125                        MOV   @R0,A       ;放回前一地址单元
00BA EB              126                        MOV   A,R3        ;取回R3中暂存数据
00BB 08              127                        INC   R0          ;指向当前地址单元
00BC C4              128                        SWAP  A           ;A中数据高四位与低四位交换
00BD 540F            129                        ANL   A,#0FH      ;高四位变0
00BF F6              130                        MOV   @R0,A       ;数据放入当削地址单元中
00C0 22              131                        RET                  ;子程序返回
                     132     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     133     ;;           清零程序                  ;;
                     134     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     135     ;对计时单元复零用
00C1 E4              136                  CLR0: CLR          A           ;清累加器
00C2 F6              137                        MOV          @R0,A       ;清当前地址单元
00C3 18              138                        DEC          R0          ;指向前一地址
00C4 F6              139                        MOV          @R0,A       ;前一地址单元清0
00C5 22              140                        RET                      ;子程序返回
                     141     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     142     ;;           显示程序                  ;;
                     143     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     144     ; 显示数据在70H-75H单元内,用六位LED共阳数码管显示,P1口输出段码数据,P2口作
                     145     ; 扫描控制,每个LED数码管亮1MS时间再逐位循环。
00C6 7970            146               DISPLAY: MOV          R1,#70H       ;指向显示数据首址
00C8 7DFE            147                        MOV          R5,#0FEH      ;扫描控制字初值
00CA ED              148                  PLAY: MOV          A,R5          ;扫描字放入A
00CB F5A0            149                        MOV          P2,A          ;从P2口输出
00CD E7              150                        MOV          A,@R1         ;取显示数据到A
00CE 9000F9          151                        MOV          DPTR,#TAB     ;取段码表地址
00D1 93              152                        MOVC         A,@A+DPTR     ;查显示数据对应段码
00D2 BDFE04          153                     CJNE    R5,#0FEH,PLAY_1 ;不是秒低位则转移PLAY_1
00D5 547F            154                     ANL     A,#7FH          ;是,则点亮
00D7 01E5            155                     AJMP    PLAY_3
00D9 BDFB04          156             PLAY_1: CJNE    R5,#0FBH,PLAY_2 ;分低位?
00DC 547F            157                     ANL     A,#7FH
00DE 01E5            158                     AJMP    PLAY_3
00E0 BDEF02          159             PLAY_2: CJNE    R5,#0EFH,PLAY_3 ;时低位?
00E3 547F            160                     ANL     A,#7FH
00E5 F590            161                PLAY_3: MOV          P1,A          ;段码放入P1口
00E7 120104          162                        LCALL        DL1MS         ;显示1MS
00EA 09              163                        INC          R1            ;指向下一地址
00EB ED              164                        MOV          A,R5            ;扫描控制字放入A
00EC 30E504          165                        JNB          ACC.5,ENDOUT    ;ACC.5=0时一次显示结束
00EF 23              166                        RL           A               ;A中数据循环左移
00F0 FD              167                        MOV          R5,A            ;放回R5内
00F1 01CA            168                        AJMP         PLAY            ;跳回PLAY循环
00F3 D2A5            169                ENDOUT: SETB         P2.5            ;一次显示结束,P2口复位
00F5 7590FF          170                        MOV           P1,#0FFH       ;P1口复位
00F8 22              171                        RET                      ;子程序返回
00F9 C0F9A4B0        172                  TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
00FD 999282F8
0101 8090FF
                     173     ;共阳段码表          "0"   "1"  "2" "3"  "4" "5" "6" "7"  "8" "9" "不亮"
                     174     ;
                     175     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     176     ;;           延时程序                  ;;
                     177     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     178     ;
                     179     ;1MS延时程序,LED显示程序用
0104 7E14            180                  DL1MS: MOV         R6,#14H
0106 7F19            181                  DL1:   MOV         R7,#19H
0108 DFFE            182                  DL2:   DJNZ        R7,DL2
010A DEFA            183                         DJNZ        R6,DL1
010C 22              184                         RET
                     185     ;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象
010D 11C6            186                DS20MS: ACALL         DISPLAY
010F 11C6            187                        ACALL         DISPLAY
0111 11C6            188                        ACALL         DISPLAY
A51 MACRO ASSEMBLER  5电子钟P1P2                                                          04/14/2005 16:27:46 PAGE     4

0113 22              189                        RET
                     190     ;延时程序,用作按键时间的长短判断
0114 12011B          191                DL1S:   LCALL      DL05S
0117 12011B          192                        LCALL      DL05S
011A 22              193                        RET
011B 7B20            194               DL05S:   MOV        R3,#20H      ;8毫秒*32=0.256秒
011D 1200C6          195               DL05S1:  LCALL      DISPLAY
0120 DBFB            196                        DJNZ       R3,DL05S1
0122 22              197                        RET
                     198     ;
                     199     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     200     ;;           闪动调时 程 序            ;;
                     201     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     202     ;T1中断服务程序,用作时间调整时调整单元闪烁指示
0123 C0E0            203     INTT1:          PUSH    ACC                ;中断现场保护
0125 C0D0            204                     PUSH    PSW                ;
0127 758B00          205                     MOV     TL1,   #00H       ;装定时器T1定时初值
012A 758D4C          206                     MOV     TH1,   #4CH             ;
012D DA13            207                     DJNZ    R2,INTT1OUT             ;0.3秒未到退出中断(50MS中断6次)
012F 7A06            208                     MOV     R2,#06H                 ;重装0.3秒定时用初值
0131 B202            209                     CPL     02H                     ;0.3秒定时到对闪烁标志取反
0133 200211          210                     JB      02H,FLASH1              ;02H位为1时显示单元"熄灭"
0136 857672          211                     MOV     72H,76H       ;02H位为0时正常显示
0139 857773          212                     MOV     73H,77H       ;
013C 857874          213                     MOV     74H,78H       ;
013F 857975          214                     MOV     75H,79H       ;
0142 D0D0            215     INTT1OUT:       POP     PSW           ;恢复现场
0144 D0E0            216                     POP     ACC           ;
0146 32              217                     RETI                  ;中断退出
0147 20010E          218     FLASH1:         JB      01H,FLASH2    ;01H位为1时,转小时熄灭控制
014A 857A72          219                     MOV     72H,7AH       ;01H位为0时,"熄灭符"数据放入分
014D 857A73          220                     MOV     73H,7AH       ;显示单元(72H-73H),将不显示分数据
0150 857874          221                     MOV     74H,78H       ;
0153 857975          222                     MOV     75H,79H       ;
0156 2142            223                     AJMP    INTT1OUT      ;转中断退出
0158 857672          224     FLASH2:         MOV     72H,76H       ;01H位为1时,"熄灭符"数据放入小时
015B 857773          225                     MOV     73H,77H       ;显示单元(74H-75H),小时数据将不显示
015E 857A74          226                     MOV     74H,7AH       ;
0161 857A75          227                     MOV     75H,7AH       ;
0164 2142            228                     AJMP    INTT1OUT      ;转中断退出
                     229     ;
                     230     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     231     ;;          p3.5 小时加1调整程序              ;;
                     232     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     233     ;当调小时时p3.5按键按下时进入此程序
0166 C2A9            234                SET_hh: CLR          ET0            ;关定时器T0中断
0168 C28C            235                        CLR          TR0            ;关闭定时器T0
016A 7A06            236                        MOV          R2,#06H        ;进入调时间的状态,赋闪烁定时初值
016C D2AB            237                        SETB         ET1            ;允许T1中断
016E D28E            238                        SETB         TR1            ;开启定时器T1
0170 30B538          239               SETHH1:  JNB          P3.5,SET5      ;等待键释放
0173 C200            240                        CLR          00H            ;清调分标志
0175 D201            241                        SETB         01H            ;小时调整标志置1
0177 20B536          242                 SET6:  JB           P3.5,SET7      ;等待按键按下
017A 12011B          243                        LCALL        DL05S          ;有键按下延时0.5秒
017D 30B511          244                        JNB          P3.5,SETOUT    ;按下时间大于0.5秒退出时间调整
0180 7879            245                        MOV           R0,#79H       ;按下时间小于0.5秒加1小时操作
0182 1200AF          246                        LCALL         ADD1            ;调加1子程序
0185 EB              247                        MOV           A,R3            ;取调整单元数据
0186 C3              248                        CLR          C                ;清进位标志
0187 B42400          249                        CJNE         A,#24H,HOUU      ;计时单元数据与24比较
018A 40EB            250                 HOUU:  JC           SET6             ;小于24转SET6循环
018C 1200C1          251                        LCALL        CLR0             ;大于或等于24时清0操作
018F 2177            252                        AJMP         SET6             ;跳转到SET6循环
0191 30B721          253                SETOUT: JNB          P3.7,SETOUT1     ;调时退出程序。等待键释放
0194 1200C6          254                        LCALL        DISPLAY          ;延时削抖
A51 MACRO ASSEMBLER  5电子钟P1P2                                                          04/14/2005 16:27:46 PAGE     5

⌨️ 快捷键说明

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