📄 t.lst
字号:
0133 194 CONV: ; MOV A,T_G
0133 753F06 195 MOV LCD_X,#6 ;设置位置
196 ; CALL SHOW_DIG2
0136 E538 197 MOV A,T_H
198 ;INC LCD_X ;加载小时数据
0138 3147 199 CALL SHOW_DIG2 ;显示数据
013A E537 200 MOV A,T_M ;加载分钟数据
013C 053F 201 INC LCD_X ;设置位置
013E 3147 202 CALL SHOW_DIG2 ;显示数据
0140 E536 203 MOV A,T_S ;加载秒数数据
0142 053F 204 INC LCD_X ;设置位置
0144 3147 205 CALL SHOW_DIG2 ;显示数据
0146 22 206 RET
207 ;----------------------------------------------------
0147 208 SHOW_DIG2:
0147 75F010 209 MOV B,#16
014A 84 210 DIV AB
014B 2430 211 ADD A,#30H
014D C0F0 212 PUSH B
014F 853FF0 213 MOV B,LCD_X
0152 3126 214 CALL LCDP2
0154 D0F0 215 POP B
0156 E5F0 216 MOV A,B
0158 2430 217 ADD A,#30H
015A 053F 218 INC LCD_X
015C 853FF0 219 MOV B,LCD_X
015F 3126 220 CALL LCDP2
0161 22 221 RET
222 ;-----------------------------------------------------
0162 223 DELAY1: ;延时3MS
0162 7E0F 224 MOV R6,#15
0164 7F64 225 D2: MOV R7,#100
0166 DFFE 226 DJNZ R7,$
0168 DEFA 227 DJNZ R6,D2
016A 22 228 RET
229 ; ----------------- 定时器设置 ------------------------
230 ;设置定时器0工作在定时方式1,定时器1工作在计数方式1
231 ;---------------------------------------------------------
016B 7589D1 232 TIM_T0: MOV TMOD,#0D1H
016E 85308C 233 MOV TH0,TIMER_H ;设置定时初值高位
0171 85318A 234 MOV TL0,TIMER_L ;设置定时初值低位
0174 758D00 235 MOV TH1,#00H ;清T1计数器
0177 758B00 236 MOV TL1,#00H
017A 75A88A 237 MOV IE,#8AH ;开中断总允许,允许T0溢出中断
017D D2BB 238 SETB PT1
017F D28E 239 SETB TR1
0181 D28C 240 SETB TR0 ;定时器开始工作
0183 22 241 RET
242 ;--------------------------------------------------------
243 ;定时器0中断服务程序
244 ;--------------------------------------------------------
0184 245 TIMER_INT:
0184 C28C 246 CLR TR0 ;关闭定时器
0186 85318A 247 MOV TL0,TIMER_L ;重新赋初值
0189 85308C 248 MOV TH0,TIMER_H ;
A51 MACRO ASSEMBLER T 04/20/2008 22:58:08 PAGE 5
018C 0532 249 INC TIMCOUNT ;定时1S,时间单位
018E E532 250 MOV A,TIMCOUNT ;查看数量值
0190 B294 251 CPL P1.4 ;产生自测信号
0192 B40119 252 CJNE A,#1,T_END ;如果没有到1S返回
253
0195 C28E 254 CLR TR1 ;关闭计数器T1
0197 753200 255 MOV TIMCOUNT,#00H ;到1S则清零
019A 858B33 256 MOV INT_L,TL1 ;取出计数值低位
019D 858D34 257 MOV INT_H,TH1 ;取出计数值高位
01A0 852A35 258 MOV INT_G,2AH ;取出溢出计数值位
01A3 758D00 259 MOV TH1,#00H
01A6 758B00 260 MOV TL1,#00H
01A9 752A00 261 MOV 2AH,#00H
01AC D28E 262 SETB TR1
01AE D28C 263 T_END: SETB TR0 ;重新开始定时操作
01B0 32 264 RETI
265 ;---------------------------------------------------------------
266 ;三字节二进制整数转换成四字节BCD码子程序
267 ;二进制数从低位到高位分别存放在INT_L、INT_H、INT_G单元中
268 ;BCD码从低位到高位分别存放在T_S、T_M、T_H、T_G 单元中
269 ;---------------------------------------------------------------
01B1 270 SBIN_SBCD:
01B1 C0D0 271 PUSH PSW
01B3 D2D3 272 SETB PSW.3 ;设置当前寄存器
01B5 C2D4 273 CLR PSW.4
274
01B7 E4 275 CLR A ;清累加器
01B8 F539 276 MOV T_G,A
01BA F538 277 MOV T_H,A ;清除出口单元,准备转换
01BC F537 278 MOV T_M,A
01BE F536 279 MOV T_S,A
280
01C0 AD35 281 MOV R5,INT_G
01C2 AF33 282 MOV R7,INT_L ;设置二进制数起始地址
01C4 AE34 283 MOV R6,INT_H
01C6 7A18 284 MOV R2,#24
01C8 C3 285 CLR C
01C9 286 HH1:
01C9 EF 287 MOV A,R7
01CA 33 288 RLC A
01CB FF 289 MOV R7,A
290
01CC EE 291 MOV A,R6
01CD 33 292 RLC A
01CE FE 293 MOV R6,A
294
01CF ED 295 MOV A,R5
01D0 33 296 RLC A
01D1 FD 297 MOV R5,A
298
01D2 E536 299 MOV A,T_S ;得到低位数据
01D4 3536 300 ADDC A,T_S ;累加
01D6 D4 301 DA A ;十进制调整
01D7 F536 302 MOV T_S,A ;保存数据
303
01D9 E537 304 MOV A,T_M ;得到第二位数据
01DB 3537 305 ADDC A,T_M ;累加
01DD D4 306 DA A ;十进制调整
01DE F537 307 MOV T_M,A ;保存结果
308
01E0 E538 309 MOV A,T_H ;得到第三位
01E2 3538 310 ADDC A,T_H ;累加
01E4 D4 311 DA A
01E5 F538 312 MOV T_H,A ;保存
313
01E7 E539 314 MOV A,T_G ;得到第四位
A51 MACRO ASSEMBLER T 04/20/2008 22:58:08 PAGE 6
01E9 3539 315 ADDC A,T_G ;累加
316 ;DA A
01EB F539 317 MOV T_G,A
318
01ED DADA 319 DJNZ R2,HH1 ;
01EF D0D0 320 POP PSW
01F1 22 321 RET
322 ;----------------------------------------------------------------
323 END ;告诉编译器本程序到此结束。
;-----------------------------------------------------------------
A51 MACRO ASSEMBLER T 04/20/2008 22:58:08 PAGE 7
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
BEEP . . . . . . . B ADDR 00B0H.7 A
CL1. . . . . . . . C ADDR 00FAH A
CLR_LINE . . . . . C ADDR 00F8H A
CONV . . . . . . . C ADDR 0133H A
D2 . . . . . . . . C ADDR 0164H A
DELAY0 . . . . . . C ADDR 0117H A
DELAY1 . . . . . . C ADDR 0162H A
ENABLE . . . . . . C ADDR 0101H A
ENABLE1. . . . . . C ADDR 010CH A
FILL . . . . . . . C ADDR 00ECH A
HH1. . . . . . . . C ADDR 01C9H A
IE . . . . . . . . D ADDR 00A8H A
INFO1. . . . . . . C ADDR 0092H A
INFO2. . . . . . . C ADDR 00A3H A
INIT_LCD . . . . . C ADDR 00B4H A
INT_G. . . . . . . N NUMB 0035H A
INT_H. . . . . . . N NUMB 0034H A
INT_L. . . . . . . N NUMB 0033H A
LC1. . . . . . . . C ADDR 00F2H A
LCDP2. . . . . . . C ADDR 0126H A
LCD_EN . . . . . . B ADDR 00A0H.2 A
LCD_RS . . . . . . B ADDR 00A0H.0 A
LCD_RW . . . . . . B ADDR 00A0H.1 A
LCD_SHOW . . . . . C ADDR 00D3H A
LCD_X. . . . . . . N NUMB 003FH A
LINE1. . . . . . . C ADDR 00D6H A
LINE2. . . . . . . C ADDR 00E2H A
MAIN . . . . . . . C ADDR 0030H A
MAIN1. . . . . . . C ADDR 003BH A
MAIN2. . . . . . . C ADDR 003DH A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
PRO_SET. . . . . . C ADDR 004AH A
PSW. . . . . . . . D ADDR 00D0H A
PT1. . . . . . . . B ADDR 00B8H.3 A
SBIN_SBCD. . . . . C ADDR 01B1H A
SET_LCD. . . . . . C ADDR 007DH A
SHOW_DIG2. . . . . C ADDR 0147H A
SP . . . . . . . . D ADDR 0081H A
TH0. . . . . . . . D ADDR 008CH A
TH1. . . . . . . . D ADDR 008DH A
TIMCOUNT . . . . . N NUMB 0032H A
TIMER1 . . . . . . C ADDR 0047H A
TIMER_H. . . . . . N NUMB 0030H A
TIMER_INT. . . . . C ADDR 0184H A
TIMER_L. . . . . . N NUMB 0031H A
TIM_T0 . . . . . . C ADDR 016BH A
TL0. . . . . . . . D ADDR 008AH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
TR1. . . . . . . . B ADDR 0088H.6 A
T_END. . . . . . . C ADDR 01AEH A
T_G. . . . . . . . N NUMB 0039H A
T_H. . . . . . . . N NUMB 0038H A
T_M. . . . . . . . N NUMB 0037H A
A51 MACRO ASSEMBLER T 04/20/2008 22:58:08 PAGE 8
T_S. . . . . . . . N NUMB 0036H A
WCOM . . . . . . . C ADDR 011CH A
WDATA. . . . . . . C ADDR 0121H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -