⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p16lcd.lst

📁 详细介绍了PIC16单片机的功能特点以及各个功能模块的使用方法和技巧
💻 LST
📖 第 1 页 / 共 3 页
字号:
MPASM  4.01 Released                               P16LCD.ASM   5-27-2005  10:17:24         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;************************************************************************
                      00002 ;*      Microchip Technology Inc. 2002                                  *
                      00003 ;*      Assembler version: 2.0000                                       *
                      00004 ;*      Filename:                                                       *
                      00005 ;*              lcd16.asm                                               *
                      00006 ;************************************************************************
                      00007 
                      00008         list            p=16F877a
                      00009         #include        P16F877a.inc
                      00001         LIST
                      00002 ; P16F877A.INC  Standard Header File, Version 1.00    Microchip Technology, Inc.
                      00398         LIST
                      00010 
                      00011 
                      00012 #define LCD_D4          PORTD, 0        ; LCD data bits
                      00013 #define LCD_D5          PORTD, 1
                      00014 #define LCD_D6          PORTD, 2
                      00015 #define LCD_D7          PORTD, 3
                      00016 
                      00017 #define LCD_D4_DIR      TRISD, 0        ; LCD data bits
                      00018 #define LCD_D5_DIR      TRISD, 1
                      00019 #define LCD_D6_DIR      TRISD, 2
                      00020 #define LCD_D7_DIR      TRISD, 3
                      00021 
                      00022 #define LCD_E           PORTA, 1        ; LCD E clock
                      00023 #define LCD_RW          PORTA, 2        ; LCD read/write line
                      00024 #define LCD_RS          PORTA, 3        ; LCD register select line
                      00025 
                      00026 #define LCD_E_DIR       TRISA, 1        
                      00027 #define LCD_RW_DIR      TRISA, 2        
                      00028 #define LCD_RS_DIR      TRISA, 3        
                      00029 
                      00030 #define LCD_INS         0       
                      00031 #define LCD_DATA        1
                      00032 
                      00033 D_LCD_DATA      UDATA 0x20
0020                  00034 COUNTER         res     1
0021                  00035 delay           res     1
0022                  00036 temp_wr         res     1
0023                  00037 temp_rd         res     1
                      00038 
  0000                00039         GLOBAL  temp_wr
                      00040 
                      00041 PROG1   CODE
                      00042 
                      00043 
                      00044 ;***************************************************************************
                      00045         
0000                  00046 LCDLine_1
0000   ???? ????      00047         banksel temp_wr
0002   3080           00048         movlw   0x80
0003   00??           00049         movwf   temp_wr
0004   2???           00050         call    i_write
MPASM  4.01 Released                               P16LCD.ASM   5-27-2005  10:17:24         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0005   0008           00051         return
  0000                00052         GLOBAL  LCDLine_1
                      00053 
0006                  00054 LCDLine_2
0006   ???? ????      00055         banksel temp_wr
0008   30C0           00056         movlw   0xC0
0009   00??           00057         movwf   temp_wr
000A   2???           00058         call    i_write
000B   0008           00059         return
  0000                00060         GLOBAL  LCDLine_2
                      00061         
000C                  00062 d_write                                 ;write data
000C   2???           00063         call    LCDBusy
000D   1403           00064         bsf     STATUS, C       
000E   2???           00065         call    LCDWrite
000F   1283 1303      00066         banksel TXREG                   ;move data into TXREG 
0011   0099           00067         movwf   TXREG
0012   1683 1303      00068         banksel TXSTA
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0014   1C98           00069         btfss   TXSTA,TRMT              ;wait for data TX
0015   2???           00070         goto    $-1
0016   1283 1303      00071         banksel PORTA   
0018   0008           00072         return
  0000                00073         GLOBAL  d_write
                      00074         
0019                  00075 i_write                                 ;write instruction
0019   2???           00076         call    LCDBusy
001A   1003           00077         bcf     STATUS, C
001B   2???           00078         call    LCDWrite
001C   0008           00079         return
  0000                00080         GLOBAL  i_write
                      00081 
                      00082 rlcd    macro   MYREGISTER
                      00083  IF MYREGISTER == 1
                      00084         bsf     STATUS, C
                      00085         call    LCDRead
                      00086  ELSE
                      00087         bcf     STATUS, C
                      00088         call    LCDRead
                      00089  ENDIF
                      00090         endm
                      00091 ;****************************************************************************
                      00092 
                      00093 
                      00094 
                      00095 
                      00096 ; *******************************************************************
001D                  00097 LCDInit
001D   0185           00098         clrf    PORTA
                      00099         
001E   1683 1303      00100         banksel TRISA                   ;configure control lines
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0020   1085           00101         bcf     LCD_E_DIR
MPASM  4.01 Released                               P16LCD.ASM   5-27-2005  10:17:24         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0021   1105           00102         bcf     LCD_RW_DIR
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0022   1185           00103         bcf     LCD_RS_DIR
                      00104         
0023   300E           00105         movlw   b'00001110'
0024   1683 1303      00106         banksel ADCON1
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0026   009F           00107         movwf   ADCON1  
                      00108 
0027   30FF           00109         movlw   0xff                    ; Wait ~15ms @ 20 MHz
0028   ???? ????      00110         banksel COUNTER
002A   00??           00111         movwf   COUNTER
002B   30FF           00112         movlw   0xFF
002C   ???? ????      00113         banksel delay
002E   00??           00114         movwf   delay
002F   2???           00115         call    DelayXCycles
0030   0B??           00116         decfsz  COUNTER, F
0031   2???           00117         goto    $-3
                      00118         
0032   3030           00119         movlw   b'00110000'             ;#1 Send control sequence 
0033   00??           00120         movwf   temp_wr
0034   1003           00121         bcf     STATUS,C
0035   2???           00122         call    LCDWriteNibble
                      00123 
0036   30FF           00124         movlw   0xff                    ;Wait ~4ms @ 20 MHz
0037   00??           00125         movwf   COUNTER
0038   30FF           00126         movlw   0xFF
0039   00??           00127         movwf   delay
003A   2???           00128         call    DelayXCycles
003B   0B??           00129         decfsz  COUNTER, F
003C   2???           00130         goto    $-3
                      00131 
003D   3030           00132         movlw   b'00110000'             ;#2 Send control sequence
003E   00??           00133         movwf   temp_wr
003F   1003           00134         bcf     STATUS,C
0040   2???           00135         call    LCDWriteNibble
                      00136 
0041   30FF           00137         movlw   0xFF                    ;Wait ~100us @ 20 MHz
0042   00??           00138         movwf   delay
0043   2???           00139         call    DelayXCycles
                      00140                                                 
0044   3018           00141         movlw   b'0011000'              ;#3 Send control sequence
0045   00??           00142         movwf   temp_wr
0046   1003           00143         bcf     STATUS,C
0047   2???           00144         call    LCDWriteNibble
                      00145 
                      00146                 ;test delay
0048   30FF           00147         movlw   0xFF                    ;Wait ~100us @ 20 MHz
0049   00??           00148         movwf   delay
004A   2???           00149         call    DelayXCycles
                      00150 
                      00151 
MPASM  4.01 Released                               P16LCD.ASM   5-27-2005  10:17:24         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

004B   3020           00152         movlw   b'00100000'             ;#4 set 4-bit
004C   00??           00153         movwf   temp_wr
004D   1003           00154         bcf     STATUS,C
004E   2???           00155         call    LCDWriteNibble
                      00156 
004F   2???           00157         call    LCDBusy                 ;Busy?
                      00158                                 
0050   3028           00159         movlw   b'00101000'             ;#5   Function set
0051   00??           00160         movwf   temp_wr
0052   2???           00161         call    i_write
                      00162 
0053   300D           00163         movlw   b'00001101'             ;#6  Display = ON
0054   00??           00164         movwf   temp_wr
0055   2???           00165         call    i_write
                      00166                         
0056   3001           00167         movlw   b'00000001'             ;#7   Display Clear
0057   00??           00168         movwf   temp_wr
0058   2???           00169         call    i_write
                      00170 
0059   3006           00171         movlw   b'00000110'             ;#8   Entry Mode
005A   00??           00172         movwf   temp_wr
005B   2???           00173         call    i_write 
                      00174 
005C   3080           00175         movlw   b'10000000'             ;DDRAM addresss 0000
005D   00??           00176         movwf   temp_wr
005E   2???           00177         call    i_write
                      00178 
                      00179 ;       movlw   b'00000010'             ;return home
                      00180 ;       movwf   temp_wr
                      00181 ;       call    i_write
                      00182 
                      00183 
005F   0008           00184         return
                      00185 
  0000                00186         GLOBAL  LCDInit 
                      00187 ; *******************************************************************
                      00188 
                      00189 
                      00190 
                      00191 
                      00192 
                      00193 
                      00194 
                      00195 
                      00196 ;****************************************************************************
                      00197 ;     _    ______________________________
                      00198 ; RS  _>--<______________________________
                      00199 ;     _____
                      00200 ; RW       \_____________________________
                      00201 ;                  __________________
                      00202 ; E   ____________/                  \___
                      00203 ;     _____________                ______
                      00204 ; DB  _____________>--------------<______
MPASM  4.01 Released                               P16LCD.ASM   5-27-2005  10:17:24         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00205 ;
0060                  00206 LCDWriteNibble
0060   1C03           00207         btfss   STATUS, C               ; Set the register select
0061   1185           00208         bcf     LCD_RS
0062   1803           00209         btfsc   STATUS, C       
0063   1585           00210         bsf     LCD_RS
                      00211 
0064   1105           00212         bcf     LCD_RW                  ; Set write mode
                      00213 
0065   1683 1303      00214         banksel TRISD
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0067   1008           00215         bcf     LCD_D4_DIR              ; Set data bits to outputs
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0068   1088           00216         bcf     LCD_D5_DIR
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0069   1108           00217         bcf     LCD_D6_DIR
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
006A   1188           00218         bcf     LCD_D7_DIR
                      00219 
006B   0000           00220         NOP                             ; Small delay
006C   0000           00221         NOP
                      00222 
006D   1283 1303      00223         banksel PORTA
006F   1485           00224         bsf     LCD_E                   ; Setup to clock data
                      00225         
0070   1F80           00226         btfss   temp_wr, 7                      ; Set high nibble

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -