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

📄 ds12c887.lst

📁 PIC16F877A 与 DS12C887 时钟蕊片的驱动
💻 LST
📖 第 1 页 / 共 3 页
字号:
MPASM  5.06.4                      DS12C887.ASM   2-2-2009  21:27:27         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;-------------------------------------------------------------------------------
                      00002 ;DS12C877+LCD1602
                      00003 ;MCU PIC16F877A
                      00004 ;PORT RA0-RA3 TO CONNECT DS12C887 
                      00005 ;INTEL BUS
                      00006 ;-------------------------------------------------------------------------------
                      00007 ;DS12C887 
                      00008 ;RA0--CS;RA1--AS(ALE);RA2--R/W(WR);RA3--DS(RD)
                      00009 ;RC0~RC7 TO CONNECT DS12887'S AD0~AD7
                      00010 ;-------------------------------------------------------------------------------
                      00011 ;LCD 1602
                      00012 ;RB1--RS,RB2--RW,RB3--E
                      00013 ;D0~D7 CONNECT MCU RD0~RD7
                      00014 ;--------------------------------------------------------------------------------
Warning[205]: Found directive in column 1. (LIST)
                      00015 LIST    P=16F877A
Warning[205]: Found directive in column 1. (INCLUDE)
                      00016 INCLUDE"P16F877A.INC"
                      00001         LIST
                      00002 ; P16F877A.INC  Standard Header File, Version 1.00    Microchip Technology, Inc.
                      00400         LIST
                      00017 
                      00018 #DEFINE L_E     PORTB,3                 ;LCD片选信号脚定义在RB.3脚
                      00019 #DEFINE L_RW    PORTB,2                 ;LCD读/写信号脚定义在RB.2脚
                      00020 #DEFINE L_RS    PORTB,1                         ;LCD寄存器选择信号脚定义在RB.1脚
                      00021 #DEFINE T_CS    PORTA,0
                      00022 #DEFINE T_AS    PORTA,1
                      00023 #DEFINE T_RW    PORTA,2
                      00024 #DEFINE T_DS    PORTA,3
                      00025 #DEFINE DAT     PORTD
  00000022            00026 T_ADDR  EQU     22H
  00000023            00027 T_DATA  EQU     23H
  00000024            00028 COUNT   EQU     24H
  00000025            00029 TEMP    EQU     25H
  00000026            00030 TEMP1   EQU     26H
  00000027            00031 TEMP2   EQU     27H
  00000028            00032 SOUH    EQU     28H
  00000029            00033 SOUL    EQU     29H     
  0000002A            00034 SOU     EQU     2AH
  00000030            00035 SEN_H   EQU     30H
  00000031            00036 SEN_L   EQU     31H
  00000032            00037 MIN_H   EQU     32H
  00000033            00038 MIN_L   EQU     33H
  00000034            00039 HOUR_H  EQU     34H
  00000035            00040 HOUR_L  EQU     35H
  00000036            00041 WEEK_H  EQU     36H
  00000037            00042 WEEK_L  EQU     37H
  00000038            00043 DAY_H   EQU     38H
  00000039            00044 DAY_L   EQU     39H
  0000003A            00045 MON_H   EQU     3AH
  0000003B            00046 MON_L   EQU     3BH
  0000003C            00047 YEAR_H  EQU     3CH
  0000003D            00048 YEAR_L  EQU     3DH
MPASM  5.06.4                      DS12C887.ASM   2-2-2009  21:27:27         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00049 
                      00050 
                      00051 ;------------------------------------------------------------------------------------------
0000                  00052          ORG 0000H
0000   0000           00053          NOP            ;放置一条ICD必需的空操作指令
0001   2804           00054          GOTO MAIN
                      00055 
0004                  00056         ORG     00004H
0004   2009           00057 MAIN    CALL    INIT_LCD
0005   20A3           00058         CALL    RTC_INIT
                      00059         
0006   20BD           00060 GONO    CALL    READRTC
0007   2022           00061         CALL    DISPLAY         
0008   2806           00062         GOTO     GONO
                      00063 ;---------------------------------------------------------------------------------------------
                      00064 
0009   1683           00065 INIT_LCD        BSF     STATUS,RP0      ;选择体1
000A   30F1           00066         MOVLW   B'11110001'
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
000B   0086           00067         MOVWF   TRISB   ;PORTB的B1-3定义为输出,其余为输入
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
000C   0188           00068         CLRF    TRISD   ;PORTD端口定义为输出
000D   1283           00069         BCF             STATUS,RP0      ;SELECT BANK 0
000E   2110           00070         CALL    DELAY5MS        ;调用延时,刚上电LCD复位不一定有PIC快
000F   2110           00071         CALL    DELAY5MS
0010   2110           00072         CALL    DELAY5MS
                      00073         
0011   3038           00074         MOVLW           38H
0012   2053           00075         CALL            FCOM_WR
0013   3038           00076         MOVLW           38H
0014   2053           00077         CALL            FCOM_WR
0015   3038           00078         MOVLW           38H
0016   2053           00079         CALL            FCOM_WR 
0017   3038           00080         MOVLW           38H
0018   205A           00081         CALL            COMM_WR         ;显示模式设置:16*2显示,5*7点阵,8位数码接口
0019   3008           00082         MOVLW   08H
001A   205A           00083         CALL            COMM_WR         ;显示关闭,不显示光标
001B   3001           00084         MOVLW           01H
001C   205A           00085         CALL            COMM_WR         ;显示清屏
001D   3006           00086         MOVLW           06H
001E   205A           00087         CALL            COMM_WR         ;显示光标移动设置(右移),整屏显示不移动
001F   300C           00088         MOVLW           0CH
0020   205A           00089         CALL            COMM_WR ;显示开及光标设置,不显示光标
                      00090         
0021   0008           00091         RETURN
                      00092 ;***************************LCD显示子程序************************
                      00093 ;LCD模块初始化,由厂家提供的资料显示,其初始化过程为:
                      00094         
0022   30CA           00095 DISPLAY MOVLW           0CAH
0023   205A           00096         CALL    COMM_WR 
0024   0830           00097         MOVFW           SEN_H                   ;显示秒十位     
0025   2062           00098         CALL    DATA_WR
                      00099                 
MPASM  5.06.4                      DS12C887.ASM   2-2-2009  21:27:27         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0026   30CB           00100         MOVLW   0CBH    
0027   205A           00101         CALL    COMM_WR
0028   0831           00102                 MOVFW   SEN_L   ;显示秒个位
0029   2062           00103         CALL    DATA_WR
                      00104         
002A   30C7           00105         MOVLW           0C7H
002B   205A           00106         CALL    COMM_WR 
002C   0832           00107                 MOVFW           MIN_H                   ;显示分十位             
002D   2062           00108         CALL    DATA_WR 
                      00109         
002E   30C8           00110         MOVLW   0C8H
002F   205A           00111         CALL    COMM_WR
0030   0833           00112                 MOVFW   MIN_L   ;显示分个位
0031   2062           00113         CALL    DATA_WR
                      00114         
0032   30C4           00115         MOVLW           0C4H
0033   205A           00116         CALL    COMM_WR 
0034   0834           00117                 MOVFW           HOUR_H           ;显示时十位                    
0035   2062           00118         CALL    DATA_WR 
                      00119         
0036   30C5           00120         MOVLW   0C5H
0037   205A           00121         CALL    COMM_WR
0038   0835           00122                 MOVFW   HOUR_L  ;显示时个位
0039   2062           00123         CALL    DATA_WR 
                      00124         
003A   308A           00125         MOVLW           8AH
003B   205A           00126         CALL    COMM_WR 
003C   0838           00127         MOVFW           DAY_H                   ;显示秒十位     
003D   2062           00128         CALL    DATA_WR
                      00129                 
003E   308B           00130         MOVLW   8BH     
003F   205A           00131         CALL    COMM_WR
0040   0839           00132                 MOVFW   DAY_L   ;显示秒个位
0041   2062           00133         CALL    DATA_WR
                      00134         
0042   3087           00135         MOVLW           87H
0043   205A           00136         CALL    COMM_WR 
0044   083A           00137                 MOVFW           MON_H                   ;显示分十位             
0045   2062           00138         CALL    DATA_WR 
                      00139         
0046   3088           00140         MOVLW   88H
0047   205A           00141         CALL    COMM_WR
0048   083B           00142                 MOVFW   MON_L   ;显示分个位
0049   2062           00143         CALL    DATA_WR
                      00144         
004A   3084           00145         MOVLW           84H
004B   205A           00146         CALL    COMM_WR 
004C   083C           00147                 MOVFW           YEAR_H           ;显示时十位                    
004D   2062           00148         CALL    DATA_WR 
                      00149         
004E   3085           00150         MOVLW   85H
004F   205A           00151         CALL    COMM_WR
0050   083D           00152                 MOVFW   YEAR_L  ;显示时个位
MPASM  5.06.4                      DS12C887.ASM   2-2-2009  21:27:27         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0051   2062           00153         CALL    DATA_WR 
0052   0008           00154         RETURN
                      00155 
                      00156 ;*****************************写命令子程序***********************
0053   0088           00157 FCOM_WR MOVWF           DAT                     ;把命令字送数据口
0054   1086           00158         BCF     L_RS
0055   1106           00159         BCF     L_RW
0056   1186           00160         BCF             L_E
0057   0000           00161         NOP
0058   1586           00162         BSF             L_E              
0059   0008           00163         RETURN
                      00164 
005A   0088           00165 COMM_WR         MOVWF           DAT                     ;把命令字送数据口
005B   1086           00166         BCF     L_RS
005C   1106           00167         BCF     L_RW
005D   1186           00168         BCF             L_E
005E   0000           00169         NOP
005F   1586           00170         BSF             L_E  
0060   206A           00171         CALL    LCDBUSY           
0061   0008           00172         RETURN
                      00173 ;*************************写数据子程序***************************
0062   0088           00174 DATA_WR MOVWF           DAT
0063   1486           00175         BSF     L_RS
0064   1106           00176         BCF     L_RW
0065   1186           00177         BCF             L_E
0066   0000           00178         NOP
0067   1586           00179         BSF             L_E
0068   206A           00180         CALL    LCDBUSY
0069   0008           00181         RETURN
                      00182 
                      00183 ;**************************判总线忙子程序************************
006A   1683           00184 LCDBUSY         BSF     STATUS,RP0
006B   3080           00185         MOVLW           080H
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
006C   0088           00186         MOVWF           TRISD   ;数据口最高位置为输入口
006D   1283           00187         BCF     STATUS,RP0
006E   1086           00188         BCF     L_RS
006F   1506           00189         BSF     L_RW
0070   1586           00190         BSF     L_E
0071   0000           00191         NOP
0072   1586           00192         BSF     L_E
0073   1B88           00193         BTFSC           DAT,7   ;是否忙
0074   286A           00194         GOTO            LCDBUSY ;是,继续判断
0075   1683           00195         BSF     STATUS,RP0
0076   3000           00196         MOVLW   00H
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0077   0088           00197         MOVWF   TRISD   ;否,数据最高位恢复为输出状态
0078   1283           00198         BCF     STATUS,RP0
0079   0008           00199         RETURN
                      00200     
                      00201 ;---------------------------------
                      00202 ;     实时时钟芯片
                      00203 ;       DS12C887
MPASM  5.06.4                      DS12C887.ASM   2-2-2009  21:27:27         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00204 ;      通信子程序
                      00205 ;---------------------------------
007A   0187           00206 T_WRITE CLRF    PORTC
007B   1585           00207         BSF     T_DS    
007C   1505           00208         BSF     T_RW
007D   1485           00209         BSF     T_AS
007E   1005           00210         BCF     T_CS
007F   0822           00211         MOVF    T_ADDR,0
0080   0087           00212         MOVWF   PORTC
0081   1085           00213         BCF     T_AS
0082   1105           00214         BCF     T_RW
0083   0823           00215         MOVF    T_DATA,0
0084   0087           00216         MOVWF   PORTC
0085   1505           00217         BSF     T_RW
0086   1405           00218         BSF     T_CS
0087   1485           00219         BSF     T_AS
0088   0008           00220         RETURN
                      00221 ;------------------------------
0089   0187           00222 T_READ  CLRF    PORTC
008A   1585           00223         BSF     T_DS
008B   1505           00224         BSF     T_RW
008C   1485           00225         BSF     T_AS
008D   1005           00226         BCF     T_CS
008E   0822           00227         MOVF    T_ADDR,W
008F   0087           00228         MOVWF   PORTC
0090   1085           00229         BCF     T_AS
0091   1185           00230         BCF     T_DS
0092   0187           00231         CLRF    PORTC
0093   206A           00232         CALL    LCDBUSY            
0094   1683           00233         BSF     STATUS,RP0
0095   30FF           00234         MOVLW   B'11111111'

⌨️ 快捷键说明

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