📄 speedo1.lst
字号:
226 +1 CONVERT
00F2 4430 227 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
SPEEDO1 PAGE 5
00F4 120141 229 LCALL DAT
230
00F7 E525 231 MOV A,TKM
232 +1 CONVERT
00F9 4430 233 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
00FB 120141 235 LCALL DAT
236
00FE E524 237 MOV A,KM
238 +1 CONVERT
0100 4430 239 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
0102 120141 241 LCALL DAT
242
0105 742E 243 MOV A,#'.'
0107 120141 244 LCALL DAT
245
010A E523 246 MOV A,POINT
247 +1 CONVERT
010C 4430 248 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
010E 120141 250 LCALL DAT
251
0111 74CB 252 MOV A,#0CBH ; LINE 2
0113 120150 253 LCALL CMD
254
255
0116 E52A 256 MOV A,VAL1
257 +1 CONVERT
0118 4430 258 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
011A 120141 260 LCALL DAT
261
011D E52B 262 MOV A,VAL2
263 +1 CONVERT
011F 4430 264 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
0121 120141 266 LCALL DAT
267
0124 742E 268 MOV A,#'.'
0126 120141 269 LCALL DAT
270
0129 E52C 271 MOV A,VAL3
272 +1 CONVERT
012B 4430 273 +1 ORL A,#30H ; CONVERT TO ASCII BY ADDING 30H
012D 120141 275 LCALL DAT
276
277
0130 22 278 RET
279
280
281 ;****************************LCD SUBROUTINES****************************************
282
0131 D2B7 283 READY:SETB EN ;H->L PULSE ON E
0133 C2B2 284 CLR RS ;RS=0 CMD
0135 D2B3 285 SETB RW ;RW=1 FOR READ
0137 D297 286 SETB P1.7 ;D7 AS INPUT
0139 2097F5 287 JB P1.7,READY
013C C2B7 288 CLR EN
013E C2B3 289 CLR RW
0140 22 290 RET
291 ;****************************LCD SUBROUTINES****************************************
292
SPEEDO1 PAGE 6
0141 D2B7 293 DAT: SETB EN ;H->L PULSE ON E
0143 D2B2 294 SETB RS ;RS=1 DATA
0145 C2B3 295 CLR RW ;RW=0 FOR WRITE
0147 F590 296 MOV LCD,A ;MOVE ACC.DATA TO PORT
0149 C2B7 297 CLR EN
014B 00 298 NOP
014C 120131 299 LCALL READY
014F 22 300 RET
301 ;****************************LCD SUBROUTINES****************************************
302
0150 D2B7 303 CMD: SETB EN ;H->L PULSE ON E
0152 C2B2 304 CLR RS ;RS=0 FOR COMMAND
0154 C2B3 305 CLR RW ;RW=0 FOR WRITE
0156 F590 306 MOV LCD,A ;MOVE ACC. DATA TO PORT
0158 C2B7 307 CLR EN
015A 00 308 NOP
015B 120131 309 LCALL READY
015E 22 310 RET
311 ;****************************LCD SUBROUTINES****************************************
312
015F 7430 313 INIT: MOV A,#030H ;INITIALIZE LCD BY SENDING 30H THREE TIMES.
0161 120150 314 LCALL CMD
0164 31B3 315 ACALL DDELAY ;INITIAL DELAY 4.1MSEC
0166 7430 316 MOV A,#030H
0168 120150 317 LCALL CMD
016B 31B3 318 ACALL DDELAY
016D 7430 319 MOV A,#030H
016F 120150 320 LCALL CMD
0172 31B3 321 ACALL DDELAY
322
0174 7438 323 MOV A,#038H ; INITIALIZE, 2-LINES, 5X7 MATRIX.
0176 120150 324 LCALL CMD
0179 31B3 325 ACALL DDELAY
326
017B 740C 327 MOV A,#0CH ; INVISIBLE CURSOR ON;
017D 120150 328 LCALL CMD
0180 7401 329 MOV A,#01H ; CLEAR LCD SCREEN
0182 120150 330 LCALL CMD
0185 7406 331 MOV A,#06H ; SHIFT CURSOR RIGHT
0187 120150 332 LCALL CMD
333
018A 7480 334 MOV A,#80H ; LINE 1
018C 120150 335 LCALL CMD
336
018F 900350 337 MOV DPTR,#MSG_1
0192 E4 338 LINE1: CLR A
0193 93 339 MOVC A,@A+DPTR
0194 6005 340 JZ NEXTLINE
0196 3141 341 ACALL DAT
0198 A3 342 INC DPTR
0199 80F7 343 SJMP LINE1
344
019B 74C0 345 NEXTLINE: MOV A,#0C0H ; LINE 2
019D 120150 346 LCALL CMD
347
01A0 900355 348 MOV DPTR,#MSG_2
01A3 E4 349 LINE11: CLR A
01A4 93 350 MOVC A,@A+DPTR
SPEEDO1 PAGE 7
01A5 6005 351 JZ DONE
01A7 3141 352 ACALL DAT
01A9 A3 353 INC DPTR
01AA 80F7 354 SJMP LINE11
355
356
01AC 22 357 DONE: RET
358
359 ;****************************LCD SUBROUTINES****************************************
360
01AD 7401 361 CLEAR: MOV A,#01H
01AF 120150 362 LCALL CMD
01B2 22 363 RET
364
365 ;****************************LCD SUBROUTINES****************************************
366
01B3 7D29 367 DDELAY: MOV R5,#41D ; 4.1 mS DELAY
01B5 7E32 368 QT2: MOV R6,#50D
01B7 DEFE 369 QT1: DJNZ R6,QT1
01B9 DDFA 370 DJNZ R5,QT2
01BB 22 371 RET
372
373 ;***********************************************************************
374 ; I2C - SERIAL EEPROM ROUTINES
375 ;***********************************************************************
376 ;**********************************************************
377 ; THIS SUB READS ONE BYTE OF DATA FROM THE EEPROM
378 ;**********************************************************
379
01BC 380 READ_BYTE:
01BC 752108 381 MOV BITCNT,#08H; SET COUNTER FOR 8-BITS DATA
01BF 7400 382 MOV A,#00H
01C1 D2B1 383 SETB SDA ; SET SDA HIGH TO ENSURE LINE
384 ; FREE
01C3 385 READ_BITS:
386 +1 SCL_HIGH ; TRANSITION SCL LOW-TO-HIGH
01C3 D2B0 387 +1 SETB SCL ; SET SCL HIGH
01C5 30B0FD 388 +1 JNB SCL,$ ; LOOP UNTIL STRONG 1 ON SCL
01C8 A2B1 390 MOV C,SDA ; MOVE DATA BIT INTO CARRY
01CA 33 391 RLC A ; ROTATE CARRY-BIT INTO ACC.0
01CB C2B0 392 CLR SCL ; TRANSITION SCL HIGH-TO-LOW
01CD D521F3 393 DJNZ BITCNT,READ_BITS
394 ; LOOP FOR 8-BITS
01D0 200002 395 JB LASTREAD,ACKN
396 ; CHECK TO SEE IF THIS IS
397 ; THE LAST READ
01D3 C2B1 398 CLR SDA ; IF NOT LAST READ SEND ACK-BIT
399
01D5 400 ACKN:
401 +1 SCL_HIGH ; PULSE SCL TO TRANSMIT ACKNOWLEDGE
01D5 D2B0 402 +1 SETB SCL ; SET SCL HIGH
01D7 30B0FD 403 +1 JNB SCL,$ ; LOOP UNTIL STRONG 1 ON SCL
01DA C2B0 405 CLR SCL ; OR NOT ACKNOWLEDGE BIT
01DC 22 406 RET
407
408 ;**********************************************************
409 ; SUB SENDS START CONDITION
410 ;**********************************************************
SPEEDO1 PAGE 8
411
01DD 412 SEND_START:
01DD D207 413 SETB _2W_BUSY ; INDICATE THAT 2-WIRE
01DF C205 414 CLR ACK ; OPERATION IS IN PROGRESS
01E1 C206 415 CLR BUS_FLT ; CLEAR STATUS FLAGS
01E3 30B011 416 JNB SCL,FAULT
01E6 30B10E 417 JNB SDA,FAULT
01E9 D2B1 418 SETB SDA ; BEGIN START CODITION
419 +1 SCL_HIGH
01EB D2B0 420 +1 SETB SCL ; SET SCL HIGH
01ED 30B0FD 421 +1 JNB SCL,$ ; LOOP UNTIL STRONG 1 ON SCL
01F0 C2B1 423 CLR SDA
01F2 5106 424 ACALL DEELAY
01F4 C2B0 425 CLR SCL
01F6 22 426 RET
01F7 427 FAULT:
01F7 D206 428 SETB BUS_FLT
01F9 22 429 RET
430
431 ;**********************************************************
432 ; SUB SENDS STOP CONDITION
433 ;**********************************************************
01FA 434 SEND_STOP:
01FA C2B1 435 CLR SDA
436 +1 SCL_HIGH
01FC D2B0 437 +1 SETB SCL ; SET SCL HIGH
01FE 30B0FD 438 +1 JNB SCL,$ ; LOOP UNTIL STRONG 1 ON SCL
0201 D2B1 440 SETB SDA
0203 C207 441 CLR _2W_BUSY
0205 22 442 RET
443 ;**********************************************************
444 ; SUB DELAYS THE BUS
445 ;**********************************************************
0206 446 DEELAY:
0206 00 447 NOP ; DELAY FOR BUS TIMING
0207 22 448 RET
449 ; *********************************************************
450 ; THIS SUB SENDS 1 BYTE OF DATA TO THE EEPROM
451 ; *********************************************************
452
0208 453 SEND_BYTE:
0208 752108 454 MOV BITCNT,#08H; SET COUNTER FOR 8-BITS
020B 455 SB_LOOP:
020B 30E705 456 JNB ACC.7,NOTONE ; CHECK TO SEE IF BIT-7 OF
020E D2B1 457 SETB SDA ; ACC IS A 1, AND SET SDA HIGH
0210 020215 458 JMP ONE
0213 459 NOTONE:
0213 C2B1 460 CLR SDA ; CLR SDA LOW
0215 461 ONE:
462 +1 SCL_HIGH ; TRANSITION SCL LOW-TO-HIGH
0215 D2B0 463 +1 SETB SCL ; SET SCL HIGH
0217 30B0FD 464 +1 JNB SCL,$ ; LOOP UNTIL STRONG 1 ON SCL
021A 23 466 RL A ; ROTATE ACC LEFT 1-BIT
021B C2B0 467 CLR SCL ; TRANSITION SCL LOW-TO-HIGH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -