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

📄 tlcd.lst

📁 1
💻 LST
📖 第 1 页 / 共 3 页
字号:
MPASM  5.06.4                          TLCD.ASM   7-27-2007  17:04:54         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 
                      00002 ;* 本程序包含控制外部液晶面板的4-BIT控制模式子程序。
                      00003 ;*这些程序是专门为演示板设计的。但它也可作为其他类
                      00004 ;*型的使用 KS0066U控制器的液晶面板的控制程序。  
                      00005 ;* 占用I/O     RB1-RB5,RA5                      
                      00006 ;* 使用RAM     2个字节                        
                      00007 ;* 程序包括:                                   
                      00008 ;*   - InitLCD 初始化液晶面板函数          
                      00009 ;*   - putcLCD 将字符写入 LCD的函数           
                      00010 ;*   - SendCmd 将命令写入 LCD的函数        
                      00011 ;*   - clrLCD  清 LCD显示函数  
                      00012 ;* 入口参数   WREG             
                      00013 ;* 出口参数   无
                      00014 ;*LCD显示RAM地址:第一行0x80~8F;第二行0xC0~CF
                      00015 ;************************************************
                      00016 #INCLUDE P16F877A.INC      ;定义所用单片机的头文件
                      00001         LIST
                      00002 ; P16F877A.INC  Standard Header File, Version 1.00    Microchip Technology, Inc.
                      00400         LIST
                      00017 
  00000020            00018 COUNT     EQU   0X20
  00000020            00019 COUNT     EQU   0X20;   
  00000021            00020 COUNT1    EQU   0X21
  00000021            00021 COUNT1    EQU   0X21;
  00000022            00022 COUNT2    EQU   0X22
  00000022            00023 COUNT2    EQU   0X22;
                      00024 
  00000023            00025 LCD_TEMP  EQU   0X23
  00000024            00026 BYTE      EQU   0X24
  00000024            00027 BYTE      EQU   0X24
  00000025            00028 LCD_DATA1 EQU   0X25
  00000026            00029 BYTESH    EQU   0X26 
                      00030 
                      00031 
                      00032 ;* 定义 LCD数据& 控制I/O口   ;可以用任意的6个普通的I/O管脚定义;实际连线依据该部分定义
                      00033 ;*******************************************************************************
                      00034 #DEFINE LCD_DB7         PORTB,5  ;占用的I/O口定义   
                      00035 #DEFINE LCD_DB6         PORTB,4  ;该行硬件连接:LCD的DB6与RB4连接,其它类推
                      00036 #DEFINE LCD_DB5         PORTB,3  ;
                      00037 #DEFINE LCD_DB4         PORTB,2  ;
                      00038 #DEFINE LCD_E           PORTA,5  ;
                      00039 #DEFINE LCD_RS          PORTB,1  ;
                      00040 #DEFINE LCD_DB7_DIR     TRISB,5   ;对应的方向寄存器定义
                      00041 #DEFINE LCD_DB6_DIR     TRISB,4   ;
                      00042 #DEFINE LCD_DB5_DIR     TRISB,3   ;
                      00043 #DEFINE LCD_DB4_DIR     TRISB,2   ;
                      00044 #DEFINE LCD_E_DIR       TRISA,5   ;
                      00045 #DEFINE LCD_RS_DIR      TRISB,1   ; 
                      00046 ;******************************************************************************
                      00047 ; LCD 模块命令
                      00048 #DEFINE DISP_ON         0X00C   ; 开显示
                      00049 #DEFINE DISP_ON_C       0X00E   ; 开显示, 开指针
                      00050 #DEFINE DISP_ON_B       0X00F   ; 开显示, 开指针,开闪烁
MPASM  5.06.4                          TLCD.ASM   7-27-2007  17:04:54         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00051 #DEFINE DISP_OFF        0X008   ; 关显示
                      00052 #DEFINE CLR_DISP        0X001   ; 清显示的操作数
                      00053 #DEFINE ENTRY_INC       0X006   ; 操作数
                      00054 #DEFINE ENTRY_INC_S     0X007   ; 操作数
                      00055 #DEFINE ENTRY_DEC       0X004   ; 操作数
                      00056 #DEFINE ENTRY_DEC_S     0X005   ; 操作数
                      00057 #DEFINE DD_RAM_ADDR     0X080   ; 初始化第一行显示的操作数
                      00058 #DEFINE DD_RAM_UL       0X0C0   ; 初始化第二行显示的操作数
                      00059 
                      00060 
Warning[205]: Found directive in column 1. (ORG)
0000                  00061 ORG 0X0;
0000   0000           00062  NOP;
0001   0000           00063  NOP;
0002   0000           00064  NOP;
0003   018B           00065  CLRF   INTCON
0004   2025           00066  CALL   INITLCD
0005   2025           00067  CALL   INITLCD
0006   2025           00068  CALL   INITLCD
0007   204E           00069  CALL   CLRLCD
0008   204E           00070  CALL   CLRLCD
0009   204E           00071  CALL   CLRLCD
                      00072 
000A   3048           00073  MOVLW  'H';
000B   2040           00074  CALL   PUTCLCD;
000C   3041           00075  MOVLW  'A'; 
000D   2040           00076  CALL   PUTCLCD;
000E   3050           00077  MOVLW  'P';
000F   2040           00078  CALL   PUTCLCD;
0010   3050           00079  MOVLW  'P';
0011   2040           00080  CALL   PUTCLCD;
0012   3059           00081  MOVLW  'Y';
0013   2040           00082  CALL   PUTCLCD;
                      00083 
0014   3045           00084  MOVLW  'E';
0015   2040           00085  CALL   PUTCLCD;
0016   3056           00086   MOVLW  'V';
0017   2040           00087  CALL   PUTCLCD; 
0018   3045           00088  MOVLW  'E';
0019   2040           00089  CALL   PUTCLCD;
001A   3052           00090   MOVLW  'R';
001B   2040           00091  CALL   PUTCLCD;
001C   3059           00092  MOVLW  'Y';
001D   2040           00093  CALL   PUTCLCD;
001E   3044           00094   MOVLW  'D';
001F   2040           00095  CALL   PUTCLCD;
0020   3041           00096   MOVLW  'A';
0021   2040           00097  CALL   PUTCLCD;
0022   3059           00098  MOVLW  'Y';
0023   2040           00099  CALL   PUTCLCD;
                      00100  
0024   2824           00101  GOTO   $;;
                      00102 
MPASM  5.06.4                          TLCD.ASM   7-27-2007  17:04:54         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00103 ;InitLCD 初始化LCD模块                                        
                      00104 
0025                  00105 INITLCD 
                      00106 
0025   1683           00107     BSF     STATUS,RP0                      ;Bank 1
0026   1303           00108     BCF     STATUS,RP1              ;初始化相关I/O引脚
0027   30C1           00109     MOVLW   B'11000001';
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0028   0586           00110     ANDWF   TRISB,F;
                      00111     ;bcf     LCD_DB7_DIR
                      00112     ;bcf     LCD_DB6_DIR
                      00113     ;bcf     LCD_DB5_DIR
                      00114     ;bcf     LCD_DB4_DIR
                      00115     ;bcf     LCD_RS_DIR    
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0029   1285           00116     BCF     LCD_E_DIR
002A   3007           00117     MOVLW   0X07
002B   009C           00118     MOVWF   0X1C;CMCON=7
                      00119    
002C   1283           00120     BCF     STATUS,RP0             ;Bank 0
002D   30C1           00121     MOVLW   B'11000001';
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
002E   0586           00122     ANDWF   TRISB,F;
                      00123     ;bcf     LCD_DB7
                      00124     ;bcf     LCD_DB6
                      00125     ;bcf     LCD_DB5
                      00126     ;bcf     LCD_DB4
                      00127     ;bcf     LCD_RS    
002F   1285           00128     BCF     LCD_E    
                      00129     
0030   1685           00130         BSF     LCD_E                  ;清数据线
0031   1285           00131         BCF     LCD_E
                      00132         
0032   1586           00133         BSF     LCD_DB5                ;设置LCD工作方式
0033   1685           00134         BSF     LCD_E
0034   1285           00135         BCF     LCD_E
0035   2066           00136         CALL    LONGDELAY
                      00137         
0036   3028           00138         MOVLW   0X28                   ;再次设置工作方式
0037   2047           00139         CALL    SENDCMD                ;四位数据总线,两行显示,5X7点阵字符
0038   300C           00140         MOVLW   DISP_ON                ;开显示
0039   2047           00141         CALL    SENDCMD              
003A   3006           00142         MOVLW   ENTRY_INC              ;设置指针移动方式
003B   2047           00143         CALL    SENDCMD
003C   3080           00144         MOVLW   DD_RAM_ADDR            ;设置起始地址
003D   2047           00145         CALL    SENDCMD
003E   204E           00146         CALL    CLRLCD                 ;清屏
003F   0008           00147         RETURN
                      00148 
                      00149 ;*putcLCD  将字符数据送入 LCD                                      *
                      00150 ;*            本程序将字符数据分成了高半字节和低半字节分别输入     *
                      00151 ;*            先送入的是高半字节                                   *   
                      00152 
MPASM  5.06.4                          TLCD.ASM   7-27-2007  17:04:54         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0040                  00153 PUTCLCD
                      00154 
0040   1486           00155     BSF     LCD_RS        ;设置为送数据模式
0041   00A4           00156     MOVWF   BYTE          ;存 WREG 到 Byte 寄存器
0042   2051           00157     CALL    WRITE         ;写入高半字节
0043   0EA4           00158     SWAPF   BYTE,F        ;送入数据的低字节
0044   2051           00159     CALL    WRITE         ;接着送低半字节
0045   2062           00160     CALL    DELAY
0046   0008           00161         RETURN
                      00162 ;*******************************************************************
                      00163 ;* SendCmd - 送命令到 LCD                                          *
                      00164 ;*           本程序将命令数据分成了高半字节和低半字节分别输入      * 
                      00165 ;*           先送入的是高半字节                                    *
                      00166 ;*******************************************************************
0047                  00167 SENDCMD 
                      00168 
0047   1086           00169         BCF     LCD_RS        ;设置为送命令模式,与PUTCLCD仅相差此行
0048   00A4           00170         MOVWF   BYTE          ;存 WREG 到 Byte 寄存器
0049   2051           00171         CALL    WRITE         ;送入命令的高字节
004A   0EA4           00172         SWAPF   BYTE,F        ;送入命令的低字节
004B   2051           00173         CALL    WRITE
004C   2062           00174         CALL    DELAY
004D   0008           00175         RETURN
                      00176 ;*******************************************************************
                      00177 ;* clrLCD - 清除 LCD 显示                                          *
                      00178 ;*******************************************************************
004E                  00179 CLRLCD
004E   3001           00180         MOVLW   CLR_DISP        ; 
004F   2047           00181         CALL    SENDCMD
0050   0008           00182         RETURN
                      00183 ;*******************************************************************
                      00184 ;*write - 送半个字节数据
                      00185 ;******************************************************************
0051                  00186 WRITE

⌨️ 快捷键说明

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