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

📄 2.lst

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
                                                                    页     1
                                                                    01-29-03
                                                                    01:08:17
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;           AT89C2051时钟程序         ;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            
            ;
            ;  定时器T0、T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁用,
            ;   P3.7为调整按钮,P1口 为字符输出口,采用共阳显示管。
            ;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;           中断入口程序              ;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;
                          ORG 0000H        ;程序执行开始地址
0000 020024               LJMP      START  ;跳到标号START执行
                          ORG 0003H        ;外中断0中断程序入口
0003 32                   RETI             ;外中断0中断返回
                          ORG 000BH        ;定时器T0中断程序入口
000B 020055 	      LJMP      INTT0  ;跳至INTTO执行
                          ORG 0013H        ;外中断1中断程序入口
0013 32     	      RETI             ;外中断1中断返回
            	      ORG 001BH        ;定时器T1中断程序入口
001B 0200A9 	      LJMP      INTT1  ;跳至INTT1执行
            	      ORG 0023H        ;串行中断程序入口地址
0023 32                   RETI             ;串行中断程序返回
            ;
             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
             ;;           主 程 序                 ;;
             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;
0024 7870               START: MOV   R0,#70H      	;清70H-7AH共11个内存单元
0026 7F0B                      MOV   R7,#0BH      	;
0028 7600          CLEARDISP:  MOV   @R0,#00H      	;
002A 08                        INC   R0             ;
002B DFFB                      DJNZ  R7,CLEARDISP   ;
002D 752000                    MOV   20H,#00H     	;清20H(标志用)
0030 757A0A                    MOV   7AH,#0AH       ;放入"熄灭符"数据
0033 758911                    MOV 	 TMOD,#11H      ;设T0、T1为16位定时器
0036 758AB0                    MOV   TL0,#0B0H   	;50MS定时初值(T0计时用)
0039 758C3C                    MOV   TH0,#3CH   	;50MS定时初值
003C 758BB0                    MOV   TL1,#0B0H   	;50MS定时初值(T1闪烁定时用)
003F 758D3C                    MOV   TH1,#3CH    	;50MS定时初值
0042 D2AF                      SETB  EA             ;总中断开放
0044 D2A9                      SETB  ET0            ;允许T0中断
0046 D28C                      SETB  TR0            ;开启T0定时器
0048 7C14                      MOV   R4,#14H        ;1秒定时用初值(50MS×20)
004A 12019A            START1: LCALL DISPLAY        ;调用显示子程序
004D 30B702                    JNB 	 P3.7,SETMM1    ;P3.7口为0时转时间调整程序
0050 80F8                      SJMP  START1         ;P3.7口为1时跳回START1


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例2\2.ASM      
 
                                                                    页     2
                                                                    01-29-03
                                                                    01:08:17
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0052 020103             SETMM1:      LJMP SETMM     ;转到时间调整程序SETMM
            ;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;           1秒计时程序              ;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;T0中断服务程序
0055 C0E0               INTT0: PUSH  ACC           ;累加器入栈保护
0057 C0D0                      PUSH  PSW           ;状态字入栈保护
0059 C2A9                      CLR   ET0           ;关T0中断允许
005B C28C                      CLR   TR0           ;关闭定时器T0
005D 74B7                      MOV   A,#0B7H       ;中断响应时间同步修正
005F 258A                      ADD   A,TL0         ;低8位初值修正
0061 F58A                      MOV   TL0,A         ;重装初值(低8位修正值)
0063 743C                      MOV   A,#3CH        ;高8位初值修正
0065 358C                      ADDC  A,TH0         ;
0067 F58C                      MOV   TH0,A         ;重装初值(高8位修正值)
0069 D28C                      SETB  TR0           ;开启定时器T0
006B DC29                      DJNZ  R4, OUTT0         ;20次中断未到中断退出
006D 7C14              ADDSS:  MOV	 R4,#14H           ;20次中断到(1秒)重赋初值
006F 7871                      MOV 	 R0,#71H           ;指向秒计时单元(71H-72H)
0071 11EC                      ACALL ADD1              ;调用加1程序(加1秒操作)
0073 EB                        MOV   A,R3              ;秒数据放入A(R3为2位十进制数组合)
0074 C3                        CLR	 C                 ;清进位标志
0075 B46000                    CJNE  A,#60H,ADDMM      ;
0078 401C              ADDMM:  JC  	 OUTT0             ;小于60秒时中断退出
007A 11FE                      ACALL CLR0              ;大于或等于60秒时对秒计时单元清0
007C 7877                      MOV	 R0,#77H           ;指向分计时单元(76H-77H)
007E 11EC                      ACALL ADD1              ;分计时单元加1分钟
0080 EB                        MOV 	 A,R3              ;分数据放入A
0081 C3                        CLR   C                 ;清进位标志
0082 B46000                    CJNE  A,#60H,ADDHH      ;
0085 400F               ADDHH: JC	 OUTT0             ;小于60分时中断退出
0087 11FE                      ACALL CLR0              ;大于或等于60分时分计时单元清0
0089 7879                      MOV	 R0,#79H           ;指向小时计时单元(78H-79H)
008B 11EC                      ACALL ADD1              ;小时计时单元加1小时
008D EB                        MOV   A,R3              ;时数据放入A
008E C3                        CLR   C                 ;清进位标志
008F B42400                    CJNE  A,#24H,HOUR       ;
0092 4002                HOUR: JC    OUTT0             ;小于24小时中断退出
0094 11FE                      ACALL CLR0              ;大于或等于24小时小时计时单元清0
0096 857672             OUTT0: MOV   72H,76H           ;中断退出时将分、时计时单元数据移
0099 857773                    MOV   73H,77H           ;入对应显示单元
009C 857874                    MOV   74H,78H           ;
009F 857975                    MOV   75H,79H           ;
00A2 D0D0                      POP 	 PSW               ;恢复状态字(出栈)
00A4 D0E0                      POP   ACC               ;恢复累加器
00A6 D2A9                      SETB  ET0               ;开放T0中断
00A8 32                        RETI                    ;中断返回


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例2\2.ASM      
 
                                                                    页     3
                                                                    01-29-03
                                                                    01:08:17
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;           闪动调时 程 序            ;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;T1中断服务程序,用作时间调整时调整单元闪烁指示
00A9 C0E0   INTT1:          PUSH    ACC                ;中断现场保护
00AB C0D0                   PUSH    PSW                ;
00AD 758BB0                 MOV     TL1,   #0B0H       ;装定时器T1定时初值
00B0 758D3C                 MOV     TH1,   #3CH   		;
00B3 DA13                   DJNZ    R2,INTT1OUT   		;0.3秒未到退出中断(50MS中断6次)
00B5 7A06                   MOV     R2,#06H       		;重装0.3秒定时用初值
00B7 B202                   CPL     02H           		;0.3秒定时到对闪烁标志取反
00B9 200211                 JB      02H,FLASH1    		;02H位为1时显示单元"熄灭"
00BC 857672                 MOV     72H,76H       ;02H位为0时正常显示
00BF 857773                 MOV     73H,77H       ;
00C2 857874                 MOV     74H,78H       ;
00C5 857975                 MOV     75H,79H       ;
00C8 D0D0   INTT1OUT:       POP     PSW   	      ;恢复现场
00CA D0E0                   POP     ACC           ;
00CC 32                     RETI                  ;中断退出
00CD 20010E FLASH1:         JB      01H,FLASH2    ;01H位为1时,转小时熄灭控制
00D0 857A72                 MOV     72H,7AH       ;01H位为0时,"熄灭符"数据放入分
00D3 857A73                 MOV     73H,7AH       ;显示单元(72H-73H),将不显示分数据
00D6 857874                 MOV     74H,78H       ;
00D9 857975                 MOV     75H,79H       ;
00DC 01C8                   AJMP    INTT1OUT      ;转中断退出
00DE 857672 FLASH2:         MOV     72H,76H       ;01H位为1时,"熄灭符"数据放入小时
00E1 857773                 MOV     73H,77H       ;显示单元(74H-75H),小时数据将不显示
00E4 857A74                 MOV     74H,7AH       ;
00E7 857A75                 MOV     75H,7AH       ;
00EA 01C8                   AJMP    INTT1OUT      ;转中断退出
            ;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;           加1子 程 序              ;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;
00EC E6                  ADD1: MOV	 A,@R0       ;取当前计时单元数据到A
00ED 18                        DEC	 R0          ;指向前一地址
00EE C4                        SWAP  A           ;A中数据高四位与低四位交换
00EF 46                        ORL 	 A,@R0       ;前一地址中数据放入A中低四位
00F0 2401                      ADD	 A,#01H      ;A加1操作
00F2 D4                        DA 	 A           ;十进制调整
00F3 FB                        MOV   R3,A        ;移入R3寄存器
00F4 540F                      ANL 	 A,#0FH      ;高四位变0
00F6 F6                        MOV 	 @R0,A       ;放回前一地址单元
00F7 EB                        MOV	 A,R3        ;取回R3中暂存数据
00F8 08                        INC	 R0          ;指向当前地址单元
00F9 C4                        SWAP	 A           ;A中数据高四位与低四位交换


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例2\2.ASM      
 
                                                                    页     4
                                                                    01-29-03
                                                                    01:08:17
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

00FA 540F                      ANL 	 A,#0FH      ;高四位变0
00FC F6                        MOV	 @R0,A       ;数据放入当削地址单元中
00FD 22                        RET                  ;子程序返回
               ;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;           清零程序                  ;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;对计时单元复零用
00FE E4                  CLR0: CLR 		A           ;清累加器
00FF F6                        MOV 		@R0,A       ;清当前地址单元
0100 18                        DEC 		R0          ;指向前一地址
0101 F6                        MOV 		@R0,A       ;前一地址单元清0
0102 22                        RET                      ;子程序返回
            ;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;;           时钟调整程序              ;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;当调时按键按下时进入此程序
0103 C2A9              SETMM:  cLR  	ET0            ;关定时器T0中断
0105 C28C                      CLR  	TR0            ;关闭定时器T0
0107 1201D5                    LCALL  	DL1S           ;调用1秒延时程序
010A 20B726                    JB  		P3.7,CLOSEDIS  ;键按下时间小于1秒,关闭显示(省电)
010D 7A06                      MOV  	R2,#06H        ;进入调时状态,赋闪烁定时初值
010F D2AB                      SETB 	ET1            ;允许T1中断
0111 D28E                      SETB 	TR1            ;开启定时器T1
0113 30B76B             SET2:  JNB 		P3.7,SET1      ;P3.7口为0(键未释放),等待
0116 D200                      SETB  	00H            ;键释放,分调整闪烁标志置1
0118 20B76B             SET4:  JB  		P3.7,SET3      ;等待键按下
011B 1201DC                    LCALL   	DL05S          ;有键按下,延时0.5秒
011E 30B725                    JNB    	P3.7,SETHH     ;按下时间大于0.5秒转调小时状态
0121 7877                      MOV 		R0,#77H        ;按下时间小于0.5秒加1分钟操作
0123 1200EC                    LCALL 	ADD1           ;调用加1子程序
0126 EB                        MOV 		A,R3           ;取调整单元数据
0127 C3                        CLR 		C              ;清进位标志
0128 B46000                    CJNE 	A,#60H,HHH     ;调整单元数据与60比较
012B 40EB                 HHH: JC 		SET4           ;调整单元数据小于60转SET4循环
012D 1200FE                    LCALL 	CLR0           ;调整单元数据大于或等于60时清0
0130 C3                        CLR 		C              ;清进位标志
0131 2118                      AJMP  	SET4           ;跳转到SET4循环
0133 D2A9           CLOSEDIS:  SETB 	 ET0           ;省电(LED不显示)状态。开T0中断
0135 D28C                      SETB 	 TR0           ;开启T0定时器(开时钟)
0137 20B7FD         CLOSE:     JB   	 P3.7,CLOSE    ;无按键按下,等待。
013A 12019A                    LCALL	 DISPLAY       ;有键按下,调显示子程序延时削抖
013D 20B7F7                    JB    	P3.7,CLOSE     ;是干扰返回CLOSE等待
0140 30B7FD         WAITH:     JNB   	P3.7,WAITH     ;等待键释放
0143 02004A                    LJMP  	START1         ;返回主程序(LED数据显示亮)
0146 C200              SETHH:  CLR  	 00H           ;分闪烁标志清除(进入调小时状态)
0148 30B740           SETHH1:  JNB 		P3.7,SET5      ;等待键释放


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例2\2.ASM      
 
                                                                    页     5
                                                                    01-29-03
                                                                    01:08:17
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

014B D201                      SETB         01H            ;小时调整标志置1
014D 20B740             SET6:  JB  		P3.7,SET7      ;等待按键按下
0150 1201DC                    LCALL   	DL05S          ;有键按下延时0.5秒
0153 30B711                    JNB    	P3.7,SETOUT    ;按下时间大于0.5秒退出时间调整
0156 7879                      MOV		 R0,#79H       ;按下时间小于0.5秒加1小时操作
0158 1200EC                    LCALL 	 ADD1            ;调加1子程序
015B EB                        MOV		 A,R3            ;
015C C3                        CLR 		C                ;
015D B42400                    CJNE 	A,#24H,HOUU      ;计时单元数据与24比较
0160 40EB               HOUU:  JC 		SET6             ;小于24转SET6循环
0162 1200FE                    LCALL 	CLR0             ;大于或等于24时清0操作
0165 214D                      AJMP  	SET6             ;跳转到SET6循环
0167 30B72B            SETOUT: JNB   	P3.7,SETOUT1     ;调时退出程序。等待键释放
016A 12019A                    LCALL 	DISPLAY          ;延时削抖
016D 30B7F7                    JNB   	P3.7,SETOUT      ;是抖动,返回SETOUT再等待
0170 C201                      CLR   	01H              ;清调小时标志
0172 C200                      CLR   	00H              ;清调分标志
0174 C202                      CLR   	02H              ;清闪烁标志
0176 C28E                      CLR   	TR1              ;关闭定时器T1
0178 C2AB                      CLR   	ET1              ;关定时器T1中断
017A D28C                      SETB  	TR0              ;开启定时器T0
017C D2A9                      SETB  	ET0              ;开定时器T0中断(计时开始)
017E 02004A                    LJMP 	START1           ;跳回主程序

⌨️ 快捷键说明

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