📄 lm032l4l.lst
字号:
0378 CALL BUSY_CHECK ; Wait for LCD to be ready
0379 MOVF CHAR, w
0380 MOVWF LCD_DATA ; Send data to LCD
0381 BCF LCD_CNTL, R_W ; Set LCD in read mode
0382 BCF LCD_CNTL, RS ; Set LCD in command mode
0383 BSF LCD_CNTL, E ; toggle E for LCD
0384 BCF LCD_CNTL, E
0385 RETURN
0386 ;
0387 endif
0388 ;
MPASM 00.00.68 Intermediate LM032L.ASM 6-8-1994 5:29:26 PAGE 11
LOC OBJECT CODE LINE SOURCE TEXT
0390 ;
0391 if ( Four_bit ) ; 4-bit Data transfers?
0392 ;
0393 if ( Data_HI ) ; 4-bit transfers on the high nibble of the PORT
0394 ;
0395 ;*******************************************************************
0396 ;* This routine checks the busy flag, returns when not busy *
0397 ;* Affects: *
0398 ;* TEMP - Returned with busy/address *
0399 ;*******************************************************************
0400 ;
0401 BUSY_CHECK
0402 BSF STATUS, RP0 ; Select Register page 1
0403 MOVLW 0xFF ; Set Port_D for input
0404 MOVWF LCD_DATA_TRIS
0405 BCF STATUS, RP0 ; Select Register page 0
0406 BCF LCD_CNTL, RS ; Set LCD for Command mode
0407 BSF LCD_CNTL, R_W ; Setup to read busy flag
0408 BSF LCD_CNTL, E ; Set E high
0409 BCF LCD_CNTL, E ; Set E low
0410 MOVF LCD_DATA, W ; Read upper nibble busy flag, DDRam address
0411 ANDLW 0xF0 ; Mask out lower nibble
0412 MOVWF TEMP
0413 BSF LCD_CNTL, E ; Toggle E to get lower nibble
0414 BCF LCD_CNTL, E
0415 SWAPF LCD_DATA, w ; Read lower nibble busy flag, DDRam address
0416 ANDLW 0x0F ; Mask out upper nibble
0417 IORWF TEMP ; Combine nibbles
0418 BTFSC TEMP, 7 ; Check busy flag, high = busy
0419 GOTO BUSY_CHECK ; If busy, check again
0420 BCF LCD_CNTL, R_W
0421 BSF STATUS, RP0 ; Select Register page 1
0422 MOVLW 0x0F
0423 MOVWF LCD_DATA_TRIS ; Set Port_D for output
0424 BCF STATUS, RP0 ; Select Register page 0
0425 RETURN
0426 ;
0427 else ; 4-bit transfers on the low nibble of the PORT
0428 ;
0429 ;*******************************************************************
0430 ;* This routine checks the busy flag, returns when not busy *
0431 ;* Affects: *
0432 ;* TEMP - Returned with busy/address *
0433 ;*******************************************************************
0434 ;
0435 BUSY_CHECK
0083 1683 0436 BSF STATUS, RP0 ; Bank 1
0084 30FF 0437 MOVLW 0xFF ; Set PortB for input
Warning: Argument out of range LCD_DATA_TRIS (0086). Least significant bits used.
0085 0086 0438 MOVWF LCD_DATA_TRIS
0086 1283 0439 BCF STATUS, RP0 ; Bank 0
0087 1105 0440 BCF LCD_CNTL, RS ; Set LCD for Command mode
0088 1485 0441 BSF LCD_CNTL, R_W ; Setup to read busy flag
MPASM 00.00.68 Intermediate LM032L.ASM 6-8-1994 5:29:26 PAGE 12
LOC OBJECT CODE LINE SOURCE TEXT
0089 1405 0442 BSF LCD_CNTL, E ; Set E high
008A 1005 0443 BCF LCD_CNTL, E ; Set E low
008B 0E06 0444 SWAPF LCD_DATA, W ; Read upper nibble busy flag, DDRam address
008C 39F0 0445 ANDLW 0xF0 ; Mask out lower nibble
008D 00B5 0446 MOVWF TEMP ;
008E 1405 0447 BSF LCD_CNTL, E ; Toggle E to get lower nibble
008F 1005 0448 BCF LCD_CNTL, E
0090 0806 0449 MOVF LCD_DATA, W ; Read lower nibble busy flag, DDRam address
0091 390F 0450 ANDLW 0x0F ; Mask out upper nibble
0092 04B5 0451 IORWF TEMP, F ; Combine nibbles
0093 1BB5 0452 BTFSC TEMP, 7 ; Check busy flag, high = busy
0094 2883 0453 GOTO BUSY_CHECK ; If busy, check again
0095 1085 0454 BCF LCD_CNTL, R_W
0096 1683 0455 BSF STATUS, RP0 ; Bank 1
0097 30F0 0456 MOVLW 0xF0 ;
Warning: Argument out of range LCD_DATA_TRIS (0086). Least significant bits used.
0098 0086 0457 MOVWF LCD_DATA_TRIS ; RB7 - 4 = inputs, RB3 - 0 = output
0099 1283 0458 BCF STATUS, RP0 ; Bank 0
009A 0008 0459 RETURN
0460 ;
0461 endif
0462 else
0463 ;
0464 ;**************************************************************
0465 ;* This routine checks the busy flag, returns when not busy *
0466 ;* Affects: *
0467 ;* TEMP - Returned with busy/address *
0468 ;**************************************************************
0469 ;
0470 BUSY_CHECK
0471 BSF STATUS,RP0 ; Select Register page 1
0472 MOVLW 0xFF ; Set port_D for input
0473 MOVWF LCD_DATA_TRIS
0474 BCF STATUS, RP0 ; Select Register page 0
0475 BCF LCD_CNTL, RS ; Set LCD for command mode
0476 BSF LCD_CNTL, R_W ; Setup to read busy flag
0477 BSF LCD_CNTL, E ; Set E high
0478 BCF LCD_CNTL, E ; Set E low
0479 MOVF LCD_DATA, w ; Read busy flag, DDram address
0480 MOVWF TEMP
0481 BTFSC TEMP, 7 ; Check busy flag, high=busy
0482 GOTO BUSY_CHECK
0483 BCF LCD_CNTL, R_W
0484 BSF STATUS, RP0 ; Select Register page 1
0485 MOVLW 0x00
0486 MOVWF LCD_DATA_TRIS ; Set port_D for output
0487 BCF STATUS, RP0 ; Select Register page 0
0488 RETURN
0489 ;
0490 endif
MPASM 00.00.68 Intermediate LM032L.ASM 6-8-1994 5:29:26 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
0492 ;
0493 Table
009B 0782 0494 addwf PCL ;Jump to char pointed to in W reg
009C 344D 0495 retlw 'M'
009D 3469 0496 retlw 'i'
009E 3463 0497 retlw 'c'
009F 3472 0498 retlw 'r'
00A0 346F 0499 retlw 'o'
00A1 3463 0500 retlw 'c'
00A2 3468 0501 retlw 'h'
00A3 3469 0502 retlw 'i'
00A4 3470 0503 retlw 'p'
00A5 3420 0504 retlw ' '
00A6 3454 0505 retlw 'T'
00A7 3465 0506 retlw 'e'
00A8 3463 0507 retlw 'c'
00A9 3468 0508 retlw 'h'
00AA 346E 0509 retlw 'n'
00AB 346F 0510 retlw 'o'
00AC 346C 0511 retlw 'l'
00AD 346F 0512 retlw 'o'
00AE 3467 0513 retlw 'g'
00AF 3479 0514 retlw 'y'
0515 Table_End
00B0 3400 0516 retlw 0
0517 ;
0518 if ( (Table & 0x0FF) >= (Table_End & 0x0FF) )
0519 MESSG "Warning - User Definded: Table Table crosses page boundry in computed jump"
0520 endif
0521 ;
0522
0523
0524
0525 end
0526
0527
0528
0529
0530
MPASM 00.00.68 Intermediate LM032L.ASM 6-8-1994 5:29:26 PAGE 14
SYMBOL TABLE
LABEL VALUE
ADCON0 001F
ADCON1 009F
ADCS0 0006
ADCS1 0007
ADON 0000
ADRES 001E
AM 0007
BF 0000
BRGH 0002
BUSY_CHECK 0083
C 0000
CCP1CON 0017
CCP1IE 0002
CCP1IF 0002
CCP1M0 0000
CCP1M1 0001
CCP1M2 0002
CCP1M3 0003
CCP1X 0005
CCP1Y 0004
CCP2CON 001D
CCP2M0 0000
CCP2M1 0001
CCP2M2 0002
CCP2M3 0003
CCP2X 0005
CCP2Y 0004
CCPR1H 0016
CCPR1L 0015
CCPR2H 001C
CCPR2L 001B
CHAR 0036
CHS0 0003
CHS1 0004
CHS2 0005
CKP 0004
CLR_DISP 0001
CLR_MIN_SW 0005
CMD_SEQ 002F
CREN 0004
CSRC 0007
DA 0005
DB_HI_BYTE 0002
DC 0001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -