?? c8051f33xcp.c
字號(hào):
///-----------------------------------------------------------------------------
// 版權(quán)歸新華龍電子公司所有
//-----------------------------------------------------------------------------
//
// 文件名:CP.c
//
// 編寫人:寧太陽(yáng)
//
// 編寫時(shí)間:2004/12/29
//
// 目標(biāo)器件: C8051F33x
//
// 編譯工具: Silicon Laboratories IDE
//-------------------------------------------------------------------------------------
//程序功能
//------------------------------------------------------------------------------------
//比較器,P0.0,P0.1被配制為比較信號(hào)輸入,發(fā)生比較后進(jìn)中斷, 發(fā)光二極管狀態(tài)改變,
//P0.0為CP+,P0.1為CP-,CP+ < CP-時(shí)程序時(shí)入中斷.
//------------------------------------------------------------------------------------
//頭文件定義
//------------------------------------------------------------------------------------
#include <c8051f330.h>
//-----------------------------------------------------------------------------
//位定義
//-----------------------------------------------------------------------------
sbit LED = P1^3;
//-----------------------------------------------------------------------------
// 定義函數(shù)
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);
void CP0_Init(void);
void CP0_ISR(void);
//-----------------------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------------------
void main (void) {
PCA0MD &= ~0x40; //禁止看門狗定時(shí)器
SYSCLK_Init (); // 系統(tǒng)時(shí)鐘初始化
PORT_Init (); // 交叉開關(guān)和通用I/O口初始化
CP0_Init (); // 比較器初始化
EA = 1; // 總中斷使能
while (1) {
}
}
//-----------------------------------------------------------------------------
// 系統(tǒng)時(shí)鐘初始化
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
OSCICN = 0x80; // 系統(tǒng)時(shí)鐘初始化為片內(nèi)的 24.5MHz / 8
RSTSRC = 0x04; // 使能時(shí)鐘丟失檢測(cè)器
}
//-----------------------------------------------------------------------------
// 端口初始化
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
XBR0 = 0x00;
//XBR0 = 0x20; //比較器輸出允許
XBR1 = 0x40;
P0SKIP = 0x03; //使用交叉開關(guān)跳過P0.0,P0.1口
P0MDIN = 0x00; //設(shè)置P0.0,P0.1為模擬輸入端口
P1MDOUT |= 0x08; // P1.3設(shè)為推挽方式
}
//-----------------------------------------------------------------------------
// 比較器初始化
//-----------------------------------------------------------------------------
void CP0_Init (void)
{
CPT0MX = 0x00; //P0.0為正輸入,P0.1為負(fù)輸入,如果選擇別的引腳作為輸入,
//要修改相應(yīng)的端口為模擬輸入,并用交叉開關(guān)跳過
CPT0MD = 0x13; //允許比較器0的上升沿中斷
//此處也可修改為只允許上升沿或者下降沿
EIE1 =0x20; //比較器中斷允許
CPT0CN = 0x80; //比較器允許
}
//-----------------------------------------------------------------------------
// 比較器中斷
//-----------------------------------------------------------------------------
void CP0_ISR (void) interrupt 12
{
CPT0CN &=~0x7f; //清比較器中斷標(biāo)志位
LED =~LED;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -