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

📄 cc6.cod

📁 keil c51 UV3 最新版编译器的例子程序4。
💻 COD
📖 第 1 页 / 共 3 页
字号:
  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 + -