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

📄 c8051f33xcp.c

📁 一些C8051f330的C程序
💻 C
字号:
///-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
// 文件名:CP.c
//
// 编写人:宁太阳 
//
// 编写时间:2004/12/29
//
// 目标器件: C8051F33x
//
// 编译工具: Silicon Laboratories IDE

//-------------------------------------------------------------------------------------
//程序功能
//------------------------------------------------------------------------------------
//比较器,P0.0,P0.1被配制为比较信号输入,发生比较后进中断, 发光二极管状态改变,
//P0.0为CP+,P0.1为CP-,CP+ < CP-时程序时入中断.
//------------------------------------------------------------------------------------
//头文件定义
//------------------------------------------------------------------------------------
#include <c8051f330.h>                    
//-----------------------------------------------------------------------------
//位定义
//-----------------------------------------------------------------------------
sbit LED = P1^3;                    
//-----------------------------------------------------------------------------
// 定义函数
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);  
void CP0_Init(void);
void CP0_ISR(void);
//-----------------------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------------------
void main (void) {

   PCA0MD &= ~0x40;                    //禁止看门狗定时器            
                                 

   SYSCLK_Init ();                    // 系统时钟初始化       
                                     
   PORT_Init ();                      // 交叉开关和通用I/O口初始化          
   CP0_Init ();                       // 比较器初始化                   
                                        

   EA = 1;	                          // 总中断使能
						     
                                 
   while (1) {                        
   }
}

//-----------------------------------------------------------------------------
// 系统时钟初始化
//-----------------------------------------------------------------------------

void SYSCLK_Init (void)
{

   OSCICN = 0x80;                        // 系统时钟初始化为片内的 24.5MHz / 8                   
                                       
   RSTSRC = 0x04;                        // 使能时钟丢失检测器                  
}

//-----------------------------------------------------------------------------
// 端口初始化
//-----------------------------------------------------------------------------
void PORT_Init (void)
{

   XBR0     = 0x00;                       
   //XBR0     = 0x20;                      //比较器输出允许     
   XBR1     = 0x40;                    
   P0SKIP   = 0x03;                       //使用交叉开关跳过P0.0,P0.1口
   P0MDIN  = 0x00;                        //设置P0.0,P0.1为模拟输入端口
   P1MDOUT |= 0x08;                       // P1.3设为推挽方式              
}

//-----------------------------------------------------------------------------
// 比较器初始化
//-----------------------------------------------------------------------------

void CP0_Init (void)
{
   CPT0MX = 0x00;      //P0.0为正输入,P0.1为负输入,如果选择别的引脚作为输入,
                       //要修改相应的端口为模拟输入,并用交叉开关跳过
   CPT0MD = 0x13;     //允许比较器0的上升沿中断
                      //此处也可修改为只允许上升沿或者下降沿
   EIE1   =0x20;      //比较器中断允许  
   CPT0CN = 0x80;     //比较器允许
}
//-----------------------------------------------------------------------------
// 比较器中断
//-----------------------------------------------------------------------------

void CP0_ISR (void) interrupt 12
{
     
	 CPT0CN &=~0x7f;        //清比较器中断标志位
	 LED =~LED;                            

}

⌨️ 快捷键说明

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