📄 cc6.cod
字号:
208: CCU6_PISEL2 = 0x00; // load CCU6 Port Input Select Register 2
0001C3 F5A4 MOV CCU6_PISEL2,A
209: /// SFR_PAGE(_cc3, SST2); // switch to page 3
210:
211: /// Pin P3.4, P3.5, P3.7
212: PORT_PAGE = 0x02; // switch to page 2
0001C5 75B202 MOV PORT_PAGE,#02H
213: P3_ALTSEL0 |= 0x10; // set AltSel0
0001C8 43B010 ORL P3_ALTSEL0,#010H
214: P3_ALTSEL1 &= ~(ubyte) 0x10; // set AltSel1
0001CB 53B1EF ANL P3_ALTSEL1,#0EFH
215: P3_ALTSEL0 |= 0x20; // set AltSel0
0001CE 43B020 ORL P3_ALTSEL0,#020H
216: P3_ALTSEL1 &= ~(ubyte) 0x20; // set AltSel1
0001D1 53B1DF ANL P3_ALTSEL1,#0DFH
217: P3_ALTSEL0 |= 0x80; // set AltSel0
0001D4 43B080 ORL P3_ALTSEL0,#080H
218: P3_ALTSEL1 &= ~(ubyte) 0x80; // set AltSel1
0001D7 53B17F ANL P3_ALTSEL1,#07FH
219: PORT_PAGE = 0x00; // switch to page 0
0001DA F5B2 MOV PORT_PAGE,A
220: P3_DIR |= 0x10; // set P3.4 OutPut
0001DC 43B110 ORL P3_DIR,#010H
221: P3_DIR |= 0x20; // set P3.5 OutPut
0001DF 43B120 ORL P3_DIR,#020H
222: P3_DIR |= 0x80; // set P3.7 OutPut
0001E2 43B180 ORL P3_DIR,#080H
223:
224:
225: SFR_PAGE(_cc0, noSST); // switch to cc6 page 0 as working page
0001E5 F5A3 MOV CCU6_PAGE,A
226: /// SFR_PAGE(_cc0, SST2); // switch to page 0
227: // T12 shadow transfer & run control
228: CCU6_TCTR4L = 0x42; // enable Timer T12 shadow transfer
0001E7 759C42 MOV CCU6_TCTR4L,#042H
229: // T13 shadow transfer & run control
230: CCU6_TCTR4H = 0x42; // T13 run & enable Timer T13 shadow transfer
0001EA 759D42 MOV CCU6_TCTR4H,#042H
231:
232: // node interrupt enable
233: IEN1 |= 0x10; // load interrupt enable register 2
0001ED 43E810 ORL IEN1,#010H
234:
235: // USER CODE END
236:
237: } // End of function CC6_vInit
0001F0 22 RET
----- FUNCTION CC6_vInit (END) -------
----- FUNCTION CC6_viNodeI0 (BEGIN) -----
FILE: 'CC6.C'
268: void CC6_viNodeI0(void) interrupt CCU6_NodeI0_INT
LX51 LINKER/LOCATER V4.00 BETA 08/31/2005 15:19:27 PAGE 12
0001F1 C0E0 PUSH ACC
0001F3 C0D0 PUSH PSW
0001F5 75D000 MOV PSW,#00H
0001F8 C007 PUSH AR7
269: {
270:
271: // USER CODE BEGIN (NodeI0,2)
272: static ubyte T13count;
273: static uword T12CC2, T13CC3;
274: // USER CODE END
275:
276: SFR_PAGE(_cc3, SST2); // switch to page 3
0001FA 75A3A3 MOV CCU6_PAGE,#0A3H
277:
278: if(CCU6_ISL & 0x80) //if ISL_T12PM
0001FD E59C MOV A,CCU6_ISL
0001FF 30E722 JNB ACC.7,?C0002?CC6
279: {
280: //timer T12 period match detection
281:
282: SFR_PAGE(_cc0, SST3); // switch to page 0
000202 75A3B0 MOV CCU6_PAGE,#0B0H
283:
284: CCU6_ISRL = 0x80; //clear flag ISL_T12PM
000205 75A480 MOV CCU6_ISRL,#080H
285:
286: T12CC2 += 0x0100;
000208 E4 CLR A
000209 250A ADD A,T12CC2+01H
00020B F50A MOV T12CC2+01H,A
00020D 7401 MOV A,#01H
00020F 3509 ADDC A,T12CC2
000211 F509 MOV T12CC2,A
287: SFR_PAGE(_cc0, noSST); // restore the old CCU page
000213 75A300 MOV CCU6_PAGE,#00H
288: CCU6_CC62SRH = (ubyte) (T12CC2 >> 8); // Load Channel Shadow Register CC63
000216 E509 MOV A,T12CC2
000218 F5FF MOV CCU6_CC62SRH,A
289: CCU6_CC62SRL = (ubyte) (T12CC2 & 0x00FF); // Load Channel Shadow Register CC63
00021A E50A MOV A,T12CC2+01H
00021C F5FE MOV CCU6_CC62SRL,A
290: CCU6_TCTR4L |= 0x40; // enable Timer T13 shadow transfer
00021E 439C40 ORL CCU6_TCTR4L,#040H
291:
292: // USER CODE BEGIN (NodeI0,12)
293: P3_DATA ^= 0x40;
000221 63B040 XRL P3_DATA,#040H
294: // USER CODE END
295: }
000224 ?C0002?CC6:
296:
297: SFR_PAGE(_cc3, SST2); // switch to page 3
000224 75A3A3 MOV CCU6_PAGE,#0A3H
298:
299: if(CCU6_ISH & 0x02) //if ISH_T13PM
000227 E59D MOV A,CCU6_ISH
000229 30E12F JNB ACC.1,?C0005?CC6
300: {
301: //timer T13 period match detection
302:
303: SFR_PAGE(_cc0, SST3); // switch to page 0
00022C 75A3B0 MOV CCU6_PAGE,#0B0H
304:
305: CCU6_ISRH = 0x02; //clear flag ISH_T13PM
00022F 75A502 MOV CCU6_ISRH,#02H
LX51 LINKER/LOCATER V4.00 BETA 08/31/2005 15:19:27 PAGE 13
306:
307:
308: // USER CODE BEGIN (NodeI0,12)
309: T13CC3 += 0x0100;
000232 E4 CLR A
000233 250C ADD A,T13CC3+01H
000235 F50C MOV T13CC3+01H,A
000237 7401 MOV A,#01H
000239 350B ADDC A,T13CC3
00023B F50B MOV T13CC3,A
310: SFR_PAGE(_cc0, noSST); // restore the old CCU page
00023D 75A300 MOV CCU6_PAGE,#00H
311: CCU6_CC63SRH = (ubyte) (T13CC3 >> 8); // Load Channel Shadow Register CC63
000240 E50B MOV A,T13CC3
000242 F59B MOV CCU6_CC63SRH,A
312: CCU6_CC63SRL = (ubyte) (T13CC3 & 0x00FF); // Load Channel Shadow Register CC63
000244 E50C MOV A,T13CC3+01H
000246 F59A MOV CCU6_CC63SRL,A
313: CCU6_TCTR4H |= 0x40; // enable Timer T13 shadow transfer
000248 439D40 ORL CCU6_TCTR4H,#040H
314:
315: if (T13count++ > 0x10) {
00024B AF08 MOV R7,T13count
00024D 0508 INC T13count
00024F EF MOV A,R7
000250 D3 SETB C
000251 9410 SUBB A,#010H
000253 4006 JC ?C0005?CC6
316: T13count = 0;
000255 750800 MOV T13count,#00H
317: P3_DATA ^= 0x08;
000258 63B008 XRL P3_DATA,#08H
318: }
319:
320: // USER CODE END
321:
322: }
323:
324:
325: } // End of function CC6_viNodeI0
00025B ?C0005?CC6:
00025B D007 POP AR7
00025D D0D0 POP PSW
00025F D0E0 POP ACC
000261 32 RETI
----- FUNCTION CC6_viNodeI0 (END) -------
----- FUNCTION SSC_vInit (BEGIN) -----
FILE: 'SSC.c'
122: void SSC_vInit(void)
123: {
124: // USER CODE BEGIN (Init,2)
125:
126: // USER CODE END
127:
128: SSC_CONH_P &= ~(ubyte)0x80; // enable access to control bits
000262 53AB7F ANL SSC_CONH_P,#07FH
129:
130: /// -----------------------------------------------------------------------
131: /// Configuration of the SSC Baud Rate Generator:
132: /// -----------------------------------------------------------------------
133: /// - required baud rate = 125333,333 kbaud
134: /// - real baud rate = 125333,333 kbaud
135: /// - deviation = 0,000 %
LX51 LINKER/LOCATER V4.00 BETA 08/31/2005 15:19:27 PAGE 14
136:
137: SSC_BRH = 0x00; // load SSC baud rate time reload register
000265 E4 CLR A
000266 F5AF MOV SSC_BRH,A
138: // high
139: SSC_BRL = 0x00; // load SSC baud rate time reload register
000268 F5AE MOV SSC_BRL,A
140: // low
141:
142: /// -----------------------------------------------------------------------
143: /// Configuration of the SSC Operation Mode:
144: /// -----------------------------------------------------------------------
145: /// - this device is configured as SSC master
146: /// - transfer data width is 2 bit
147: /// - transfer/receive LSB first
148: /// - shift transmit data on the leading clock edge, latch on trailing edge
149: /// - idle clock line is low, leading clock edge is low-to-high transition
150: /// - ignore receive error
151: /// - ignore phase error
152:
153:
154: SSC_CONH_P = 0x40; // load SSC control register
00026A 75AB40 MOV SSC_CONH_P,#040H
155:
156: SSC_CONL_P = 0x81; // load SSC control register
00026D 75AA81 MOV SSC_CONL_P,#081H
157:
158: SSC_CONH_P |= 0x80; // disable access to control bits
000270 43AB80 ORL SSC_CONH_P,#080H
159:
160: /// - Port Selection
161: SSC_PISEL = 0x01; // load SSC Port Input Select Register to
000273 75A901 MOV SSC_PISEL,#01H
162: // Port A
163:
164: /// -----------------------------------------------------------------------
165: /// Configuration of the used SSC Port Pins:
166: /// -----------------------------------------------------------------------
167: /// Pin SCLK (P0.3) is selected for SCLK ouput
168: /// Pin MTSR_1 (P0.4) is selected for Master Transmit Output
169:
170: PORT_PAGE = 0x02; // switch to page 2
000276 75B202 MOV PORT_PAGE,#02H
171: P0_ALTSEL0 |= 0x10; // set AltSel0
000279 438010 ORL P0_ALTSEL0,#010H
172: P0_ALTSEL1 &= ~(ubyte)0x10; // set AltSel1
00027C 5386EF ANL P0_ALTSEL1,#0EFH
173:
174: PORT_PAGE = 0x00; // switch to page 0
00027F F5B2 MOV PORT_PAGE,A
175: P0_DIR |= 0x10; // set P0.4 OutPut
000281 438610 ORL P0_DIR,#010H
176:
177:
178: PORT_PAGE = 0x02; // switch to page 2
000284 75B202 MOV PORT_PAGE,#02H
179: P0_ALTSEL0 |= 0x08; // set AltSel0
000287 438008 ORL P0_ALTSEL0,#08H
180: P0_ALTSEL1 &= ~(ubyte)0x08; // set AltSel1
00028A 5386F7 ANL P0_ALTSEL1,#0F7H
181:
182: PORT_PAGE = 0x00; // switch to page 0
00028D F5B2 MOV PORT_PAGE,A
183: P0_DIR |= 0x08; // set P0.3 OutPut
00028F 438608 ORL P0_DIR,#08H
LX51 LINKER/LOCATER V4.00 BETA 08/31/2005 15:19:27 PAGE 15
184:
185: /// Pin MRST_1 (P0.5) is selected for Master Receive Input
186:
187: /// - SSC interrupt is enabled
188: IEN1 |= 0x02; // Enable SSC interrupt
000292 43E802 ORL IEN1,#02H
189:
190: // USER CODE BEGIN (Init,3)
191:
192: // USER CODE END
193:
194: } // End of function SSC_vInit
000295 22 RET
----- FUNCTION SSC_vInit (END) -------
----- FUNCTION SSC_vIsr (BEGIN) -----
FILE: 'SSC.c'
293: void SSC_vIsr(void) interrupt SSCINT
000296 C0E0 PUSH ACC
294: {
295: SFR_PAGE(_su0, SST2); // switch to page 0
000298 75BFA0 MOV SCU_PAGE,#0A0H
296:
297: if (IRCON1 & 0x01) // if error
00029B E5B5 MOV A,IRCON1
00029D 30E006 JNB ACC.0,?C0004?SSC
298: {
299: IRCON1 &= ~(ubyte)0x01;
0002A0 53B5FE ANL IRCON1,#0FEH
300:
301: SFR_PAGE(_su0, RST2); // restore the old SCU page
0002A3 75BFE0 MOV SCU_PAGE,#0E0H
302:
303: // USER CODE BEGIN (Isr,2)
304:
305: // USER CODE END
306: }
0002A6 ?C0004?SSC:
307:
308: SFR_PAGE(_su0, SST2); // switch to page 0
0002A6 75BFA0 MOV SCU_PAGE,#0A0H
309:
310: if (IRCON1 & 0x02) // if Transmit Interrupt Request
0002A9 E5B5 MOV A,IRCON1
0002AB 30E106 JNB ACC.1,?C0005?SSC
311: {
312: IRCON1 &= ~(ubyte)0x02;
0002AE 53B5FD ANL IRCON1,#0FDH
313:
314: SFR_PAGE(_su0, RST2); // restore the old SCU page
0002B1 75BFE0 MOV SCU_PAGE,#0E0H
315:
316: // USER CODE BEGIN (Isr,3)
317:
318: // USER CODE END
319: }
0002B4 ?C0005?SSC:
320:
321: SFR_PAGE(_su0, SST2); // switch to page 0
0002B4 75BFA0 MOV SCU_PAGE,#0A0H
322:
323: if (IRCON1 & 0x04) // if Receive Interrupt Request
0002B7 E5B5 MOV A,IRCON1
0002B9 30E206 JNB ACC.2,?C0007?SSC
LX51 LINKER/LOCATER V4.00 BETA 08/31/2005 15:19:27 PAGE 16
324: {
325: IRCON1 &= ~(ubyte)0x04;
0002BC 53B5FB ANL IRCON1,#0FBH
326:
327: SFR_PAGE(_su0, RST2); // restore the old SCU page
0002BF 75BFE0 MOV SCU_PAGE,#0E0H
328:
329: // USER CODE BEGIN (Isr,4)
330:
331: // USER CODE END
332: }
333:
334: } // End of function SSC_vIsr
0002C2 ?C0007?SSC:
0002C2 D0E0 POP ACC
0002C4 32 RETI
----- FUNCTION SSC_vIsr (END) -------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -