📄 ex_rtc.lst
字号:
MPASM
CCS PCW C Compiler, Version 2.237, 2862
Filename: ex_rtc.LST
ROM used: 755 (74%)
755 (74%) including unused fragments
RAM used: 11 (31%) at main() level
26 (72%) worst case
0000 3000 00001 MOVLW 00
0001 008A 00002 MOVWF 0A
0002 2A54 00003 GOTO 254
0003 0000 00004 NOP
0004 0000 00005 NOP
00F6 0818 00006 MOVF 18,W
00F7 018D 00007 CLRF 0D
00F8 0217 00008 SUBWF 17,W
00F9 1803 00009 BTFSC 03,0
00FA 28FE 00010 GOTO 0FE
00FB 0817 00011 MOVF 17,W
00FC 008C 00012 MOVWF 0C
00FD 290A 00013 GOTO 10A
00FE 018C 00014 CLRF 0C
00FF 3008 00015 MOVLW 08
0100 0099 00016 MOVWF 19
0101 0D97 00017 RLF 17,F
0102 0D8C 00018 RLF 0C,F
0103 0818 00019 MOVF 18,W
0104 020C 00020 SUBWF 0C,W
0105 1803 00021 BTFSC 03,0
0106 008C 00022 MOVWF 0C
0107 0D8D 00023 RLF 0D,F
0108 0B99 00024 DECFSZ 19,F
0109 2901 00025 GOTO 101
010A 2A6A 00026 GOTO 26A
0000 00027 .................... /////////////////////////////////////////////////////////////////////////
0000 00028 .................... //// EX_RTC.C ////
0000 00029 .................... //// ////
0000 00030 .................... //// This program reads and writes to an external Real Time Clock. ////
0000 00031 .................... //// It communicates to the user over the RS-232 interface. ////
0000 00032 .................... //// ////
0000 00033 .................... //// Configure the CCS prototype card as follows: ////
0000 00034 .................... //// Insert jumpers from: 11 to 17 and 12 to 18. ////
0000 00035 .................... //// NJU6355 Protoboard ////
0000 00036 .................... //// 1 50 B3 ////
0000 00037 .................... //// 2 crystal ////
0000 00038 .................... //// 3 crystal ////
0000 00039 .................... //// 4 27 gnd ////
0000 00040 .................... //// 5 49 B2 ////
0000 00041 .................... //// 6 48 B1 ////
0000 00042 .................... //// 7 47 B0 ////
0000 00043 .................... //// 8 28 +5V ////
0000 00044 .................... //// ////
0000 00045 .................... //// For a 40 pin part such as the 16C74 add jumpers from ////
0000 00046 .................... //// 8 to 11, 7 to 12, and change the #USE RS232 to: ////
0000 00047 .................... //// #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) ////
0000 00048 .................... /////////////////////////////////////////////////////////////////////////
0000 00049 ....................
0000 00050 .................... #include <16C84.H>
0000 00051 .................... //////// Standard Header file for the PIC16C84 device ////////
0000 00052 .................... #device PIC16C84
0000 00115 .................... #list
0000 00116 ....................
0000 00117 ....................
0000 00118 .................... #use delay(clock=10000000)
0242 0816 00119 MOVF 16,W
0243 1903 00120 BTFSC 03,2
0244 2A53 00121 GOTO 253
0245 3003 00122 MOVLW 03
0246 008D 00123 MOVWF 0D
0247 018C 00124 CLRF 0C
0248 0B8C 00125 DECFSZ 0C,F
0249 2A48 00126 GOTO 248
024A 0B8D 00127 DECFSZ 0D,F
024B 2A47 00128 GOTO 247
024C 303B 00129 MOVLW 3B
024D 008C 00130 MOVWF 0C
024E 0B8C 00131 DECFSZ 0C,F
024F 2A4E 00132 GOTO 24E
0250 0000 00133 NOP
0251 0B96 00134 DECFSZ 16,F
0252 2A45 00135 GOTO 245
0253 2AF1 00136 GOTO 2F1
0000 00137 .................... #use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)
00B6 3008 00138 MOVLW 08
00B7 008D 00139 MOVWF 0D
00B8 1683 00140 BSF 03,5
00B9 1185 00141 BCF 05,3
00BA 1283 00142 BCF 03,5
00BB 1185 00143 BCF 05,3
00BC 178D 00144 BSF 0D,7
00BD 28CB 00145 GOTO 0CB
00BE 138D 00146 BCF 0D,7
00BF 0C9E 00147 RRF 1E,F
00C0 1803 00148 BTFSC 03,0
00C1 1585 00149 BSF 05,3
00C2 1C03 00150 BTFSS 03,0
00C3 1185 00151 BCF 05,3
00C4 170D 00152 BSF 0D,6
00C5 28CB 00153 GOTO 0CB
00C6 130D 00154 BCF 0D,6
00C7 0B8D 00155 DECFSZ 0D,F
00C8 28BF 00156 GOTO 0BF
00C9 1585 00157 BSF 05,3
00CA 28CB 00158 GOTO 0CB
00CB 3051 00159 MOVLW 51
00CC 009F 00160 MOVWF 1F
00CD 0B9F 00161 DECFSZ 1F,F
00CE 28CD 00162 GOTO 0CD
00CF 1B8D 00163 BTFSC 0D,7
00D0 28BE 00164 GOTO 0BE
00D1 1B0D 00165 BTFSC 0D,6
00D2 28C6 00166 GOTO 0C6
00D3 3400 00167 RETLW 00
00D4 3008 00168 MOVLW 08
00D5 008C 00169 MOVWF 0C
00D6 1683 00170 BSF 03,5
00D7 1505 00171 BSF 05,2
00D8 1283 00172 BCF 03,5
00D9 1905 00173 BTFSC 05,2
00DA 28D9 00174 GOTO 0D9
00DB 018D 00175 CLRF 0D
00DC 178C 00176 BSF 0C,7
00DD 28EA 00177 GOTO 0EA
00DE 138C 00178 BCF 0C,7
00DF 28EA 00179 GOTO 0EA
00E0 1003 00180 BCF 03,0
00E1 0C8D 00181 RRF 0D,F
00E2 1905 00182 BTFSC 05,2
00E3 178D 00183 BSF 0D,7
00E4 170C 00184 BSF 0C,6
00E5 28EA 00185 GOTO 0EA
00E6 130C 00186 BCF 0C,6
00E7 0B8C 00187 DECFSZ 0C,F
00E8 28E0 00188 GOTO 0E0
00E9 28F5 00189 GOTO 0F5
00EA 3051 00190 MOVLW 51
00EB 1B8C 00191 BTFSC 0C,7
00EC 3016 00192 MOVLW 16
00ED 009E 00193 MOVWF 1E
00EE 0B9E 00194 DECFSZ 1E,F
00EF 28EE 00195 GOTO 0EE
00F0 1B8C 00196 BTFSC 0C,7
00F1 28DE 00197 GOTO 0DE
00F2 1B0C 00198 BTFSC 0C,6
00F3 28E6 00199 GOTO 0E6
00F4 28E0 00200 GOTO 0E0
00F5 3400 00201 RETLW 00
0000 00202 ....................
0000 00203 .................... #fuses HS,NOPROTECT,NOWDT
0000 00204 ....................
0000 00205 .................... #include <NJU6355.C>
0000 00206 .................... //////////////////////////////////////////////////////////////////////////
0000 00207 .................... //// NJU6355.C ////
0000 00208 .................... //// Driver for Real Time Clock ////
0000 00209 .................... //// ////
0000 00210 .................... //// rtc_init() Call after power up////
0000 00211 .................... //// ////
0000 00212 .................... //// rtc_set_datetime(day,mth,year,dow,hour,min) Set the date/time ////
0000 00213 .................... //// ////
0000 00214 .................... //// rtc_get_date(day,mth,year,dow) Get the date ////
0000 00215 .................... //// ////
0000 00216 .................... //// rtc_get_time(hr,min,sec) Get the time ////
0000 00217 .................... //// ////
0000 00218 .................... //////////////////////////////////////////////////////////////////////////
0000 00219 ....................
0000 00220 .................... #ifndef RTC_CE
0000 00221 ....................
0000 00222 .................... #define RTC_IO PIN_B3
0000 00223 .................... #define RTC_CE PIN_B2
0000 00224 .................... #define RTC_CLK PIN_B1
0000 00225 .................... #define RTC_DATA PIN_B0
0000 00226 ....................
0000 00227 .................... #endif
0000 00228 ....................
0000 00229 ....................
0000 00230 .................... void rtc_init() {
0000 00231 .................... output_low(RTC_CE);
00AD 1683 00232 BSF 03,5
00AE 1106 00233 BCF 06,2
00AF 1283 00234 BCF 03,5
00B0 1106 00235 BCF 06,2
0000 00236 .................... output_low(RTC_IO);
00B1 1683 00237 BSF 03,5
00B2 1186 00238 BCF 06,3
00B3 1283 00239 BCF 03,5
00B4 1186 00240 BCF 06,3
00B5 2A5A 00241 GOTO 25A
0000 00242 .................... }
0000 00243 ....................
0000 00244 ....................
0000 00245 .................... void write_rtc_byte(byte data_byte, byte number_of_bits) {
0000 00246 .................... byte i;
0000 00247 ....................
0000 00248 .................... for(i=0; i<number_of_bits; ++i) {
0140 01A4 00249 CLRF 24
0141 0823 00250 MOVF 23,W
0142 0224 00251 SUBWF 24,W
0143 1803 00252 BTFSC 03,0
0144 295F 00253 GOTO 15F
0000 00254 .................... if((data_byte & 1)==0)
0145 0822 00255 MOVF 22,W
0146 3901 00256 ANDLW 01
0147 3800 00257 IORLW 00
0148 1D03 00258 BTFSS 03,2
0149 294F 00259 GOTO 14F
0000 00260 .................... output_low(RTC_DATA);
014A 1683 00261 BSF 03,5
014B 1006 00262 BCF 06,0
014C 1283 00263 BCF 03,5
014D 1006 00264 BCF 06,0
0000 00265 .................... else
014E 2953 00266 GOTO 153
0000 00267 .................... output_high(RTC_DATA);
014F 1683 00268 BSF 03,5
0150 1006 00269 BCF 06,0
0151 1283 00270 BCF 03,5
0152 1406 00271 BSF 06,0
0000 00272 .................... data_byte=data_byte>>1;
0153 1003 00273 BCF 03,0
0154 0CA2 00274 RRF 22,F
0000 00275 .................... output_high(RTC_CLK);
0155 1683 00276 BSF 03,5
0156 1086 00277 BCF 06,1
0157 1283 00278 BCF 03,5
0158 1486 00279 BSF 06,1
0000 00280 .................... output_low(RTC_CLK);
0159 1683 00281 BSF 03,5
015A 1086 00282 BCF 06,1
015B 1283 00283 BCF 03,5
015C 1086 00284 BCF 06,1
0000 00285 .................... }
015D 0AA4 00286 INCF 24,F
015E 2941 00287 GOTO 141
015F 3400 00288 RETLW 00
0000 00289 .................... }
0000 00290 ....................
0000 00291 ....................
0000 00292 .................... byte read_rtc_byte(byte number_of_bits) {
0000 00293 .................... byte i,data;
0000 00294 ....................
0000 00295 .................... for(i=0;i<number_of_bits;++i) {
0200 019C 00296 CLRF 1C
0201 081B 00297 MOVF 1B,W
0202 021C 00298 SUBWF 1C,W
0203 1803 00299 BTFSC 03,0
0204 2A18 00300 GOTO 218
0000 00301 .................... output_high(RTC_CLK);
0205 1683 00302 BSF 03,5
0206 1086 00303 BCF 06,1
0207 1283 00304 BCF 03,5
0208 1486 00305 BSF 06,1
0000 00306 .................... shift_right(&data,1,input(RTC_DATA));
0209 1683 00307 BSF 03,5
020A 1406 00308 BSF 06,0
020B 1283 00309 BCF 03,5
020C 1806 00310 BTFSC 06,0
020D 2A10 00311 GOTO 210
020E 1003 00312 BCF 03,0
020F 2A11 00313 GOTO 211
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -