?? ds12c887.lst
字號:
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 + -