📄 lm032l8.lst
字号:
006B 2073 0378 CALL BUSY_CHECK ; Wait for LCD to be ready
006C 0836 0379 MOVF CHAR, w
006D 0088 0380 MOVWF LCD_DATA ; Send data to LCD
006E 1105 0381 BCF LCD_CNTL, R_W ; Set LCD in read mode
006F 1085 0382 BCF LCD_CNTL, RS ; Set LCD in command mode
0070 1585 0383 BSF LCD_CNTL, E ; toggle E for LCD
0071 1185 0384 BCF LCD_CNTL, E
0072 0008 0385 RETURN
0386 ;
0387 endif
0388 ;
MPASM 00.00.68 Intermediate LM032L.ASM 6-8-1994 0:53:47 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
0436 BSF STATUS, RP0 ; Bank 1
0437 MOVLW 0xFF ; Set PortB for input
0438 MOVWF LCD_DATA_TRIS
0439 BCF STATUS, RP0 ; Bank 0
0440 BCF LCD_CNTL, RS ; Set LCD for Command mode
0441 BSF LCD_CNTL, R_W ; Setup to read busy flag
0442 BSF LCD_CNTL, E ; Set E high
MPASM 00.00.68 Intermediate LM032L.ASM 6-8-1994 0:53:47 PAGE 12
LOC OBJECT CODE LINE SOURCE TEXT
0443 BCF LCD_CNTL, E ; Set E low
0444 SWAPF LCD_DATA, W ; Read upper nibble busy flag, DDRam address
0445 ANDLW 0xF0 ; Mask out lower nibble
0446 MOVWF TEMP ;
0447 BSF LCD_CNTL, E ; Toggle E to get lower nibble
0448 BCF LCD_CNTL, E
0449 MOVF LCD_DATA, W ; Read lower nibble busy flag, DDRam address
0450 ANDLW 0x0F ; Mask out upper nibble
0451 IORWF TEMP, F ; Combine nibbles
0452 BTFSC TEMP, 7 ; Check busy flag, high = busy
0453 GOTO BUSY_CHECK ; If busy, check again
0454 BCF LCD_CNTL, R_W
0455 BSF STATUS, RP0 ; Bank 1
0456 MOVLW 0xF0 ;
0457 MOVWF LCD_DATA_TRIS ; RB7 - 4 = inputs, RB3 - 0 = output
0458 BCF STATUS, RP0 ; Bank 0
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
0073 1683 0471 BSF STATUS,RP0 ; Select Register page 1
0074 30FF 0472 MOVLW 0xFF ; Set port_D for input
Warning: Argument out of range LCD_DATA_TRIS (0088). Least significant bits used.
0075 0088 0473 MOVWF LCD_DATA_TRIS
0076 1283 0474 BCF STATUS, RP0 ; Select Register page 0
0077 1085 0475 BCF LCD_CNTL, RS ; Set LCD for command mode
0078 1505 0476 BSF LCD_CNTL, R_W ; Setup to read busy flag
0079 1585 0477 BSF LCD_CNTL, E ; Set E high
007A 1185 0478 BCF LCD_CNTL, E ; Set E low
007B 0808 0479 MOVF LCD_DATA, w ; Read busy flag, DDram address
007C 00B5 0480 MOVWF TEMP
007D 1BB5 0481 BTFSC TEMP, 7 ; Check busy flag, high=busy
007E 2873 0482 GOTO BUSY_CHECK
007F 1105 0483 BCF LCD_CNTL, R_W
0080 1683 0484 BSF STATUS, RP0 ; Select Register page 1
0081 3000 0485 MOVLW 0x00
Warning: Argument out of range LCD_DATA_TRIS (0088). Least significant bits used.
0082 0088 0486 MOVWF LCD_DATA_TRIS ; Set port_D for output
0083 1283 0487 BCF STATUS, RP0 ; Select Register page 0
0084 0008 0488 RETURN
0489 ;
0490 endif
MPASM 00.00.68 Intermediate LM032L.ASM 6-8-1994 0:53:47 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
0492 ;
0493 Table
0085 0782 0494 addwf PCL ;Jump to char pointed to in W reg
0086 344D 0495 retlw 'M'
0087 3469 0496 retlw 'i'
0088 3463 0497 retlw 'c'
0089 3472 0498 retlw 'r'
008A 346F 0499 retlw 'o'
008B 3463 0500 retlw 'c'
008C 3468 0501 retlw 'h'
008D 3469 0502 retlw 'i'
008E 3470 0503 retlw 'p'
008F 3420 0504 retlw ' '
0090 3454 0505 retlw 'T'
0091 3465 0506 retlw 'e'
0092 3463 0507 retlw 'c'
0093 3468 0508 retlw 'h'
0094 346E 0509 retlw 'n'
0095 346F 0510 retlw 'o'
0096 346C 0511 retlw 'l'
0097 346F 0512 retlw 'o'
0098 3467 0513 retlw 'g'
0099 3479 0514 retlw 'y'
0515 Table_End
009A 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 0:53:47 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 0073
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 + -