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

📄 cp0test.c

📁 C8051F BTF005實驗板範例程式
💻 C
字号:
//连接CP0+和+2.5V,CP0-和P1.0。
//按下S3键,程序先进入“CPT0_DOWN”后进入“CPT0_UP”,同时观察D4闪烁。
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <c8051f000.h>
#include <stdio.h>
#include <intrins.h>

//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------
void delaynms (unsigned int m);
void SYSCLK_Init (void);
void PORT_Init (void);
void CPT0_Init(void);
//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------
sbit led= P1^4;

unsigned int i;
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main(void){

    WDTCN = 0xde;                       // disable watchdog timer
	WDTCN = 0xad;
    SYSCLK_Init ();
	PORT_Init ();
    CPT0_Init();
    EA=1;
    EIE1|=0x30;
    while (1);
}
//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
void PORT_Init (void)
{   
    XBR2 = 0x40;	// XBAR2: Initial Reset Value
	PRT1CF = 0x10;  // Output configuration for P1 

}
//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
                                           // delaynms counter
    OSCXCN = 0x67;                      // start external oscillator with
    for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
    while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
    OSCICN = 0x88;                      // select external oscillator as SYSCLK                              
}
//-----------------------------------------------------------------------------
// delaynms
//-----------------------------------------------------------------------------
void delaynms (unsigned int m)
{
   unsigned int oo,ll;
   for (oo=0;oo<m;oo++)
   {
    for(ll=0;ll<1140;ll++);
    
   }
}
//-----------------------------------------------------------------------------
// CPT0_Init
//-----------------------------------------------------------------------------
void CPT0_Init(void)
{

	CPT0CN = 0x0F;	// Comparator 0 Control Register
    CPT0CN|= 0x80;  // 使能比较器0
    delaynms(1); // 延时

}
//-----------------------------------------------------------------------------
// CPT0_UP
//-----------------------------------------------------------------------------
void CPT0_UP (void) interrupt 11
{     
     
    CPT0CN &= ~0x20;                       //    CP0RIF  EIE1.5
    EIE1&=~0x30;   
    for (i=0;i<10;i++)
    {
    delaynms(1000);
    led=~led;
    }
     EIE1|=0x30;
     
      

}
//-----------------------------------------------------------------------------
// CPT0_DOWN
//-----------------------------------------------------------------------------
void CPT0_DOWN (void) interrupt 10
{     
                                                
    CPT0CN &= ~0x10;                       //    CP0FIF  EIE1.4
    EIE1&=~0x30;   
    for (i=0;i<10;i++)
    {
    delaynms(100);
    led=~led;
    }
    EIE1|=0x30;
}

⌨️ 快捷键说明

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