📄 5电子钟p1p2.lst
字号:
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 + -