?? c8051f33xhighspeed.c
字號:
//-----------------------------------------------------------------------------
//
// 文件名:highspeed.c
//
// 編寫人:寧太陽
//
// 編寫時間:2005/01/06
//
// 目標器件: C8051F33x
//
// 編譯工具: Silicon Laboratories IDE
//
//------------------------------------------------------------------------------------
//
//程序描述
//-----------------------------------------------------------------------------
// 這個程序可以實現PCA的高速輸出功能,P0.0為系統時鐘輸出,用示波器可以在P0.1
//引腳上觀察到“高速輸出”的波形。
//
//-----------------------------------------------------------------------------
//頭文件包含
//-----------------------------------------------------------------------------
#include <c8051f330.h>
//
//-----------------------------------------------------------------------------
// 定義定時器2的16位特殊功能寄存器
//-----------------------------------------------------------------------------
//
sfr16 TMR2RL = 0xca;
sfr16 TMR2 = 0xcc;
//
//-----------------------------------------------------------------------------
// 常量定義
//-----------------------------------------------------------------------------
#define SYSCLK 24500000 / 8 // 系統工作頻率
//
//-----------------------------------------------------------------------------
// 位定義
//-----------------------------------------------------------------------------
sbit LED = P1^3; // LED所接的引腳
//
//-----------------------------------------------------------------------------
// 定義函數
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);
void PCA_Init(void);
void PCA0_ISR(void);
//
//-----------------------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------------------
void main (void) {
PCA0MD &= ~0x40; //禁止看門狗定時器
SYSCLK_Init (); //系統時鐘初始化
PORT_Init (); //交叉開關和通用I/O口初始化
PCA_Init(); //PCA初始化
EA = 1; // 總中斷使能
while (1)
{
}
}
//-----------------------------------------------------------------------------
// 系統時鐘初始化
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
OSCICN = 0x80; // 系統時鐘初始化為片內的 24.5MHz / 8
RSTSRC = 0x04; // 使能時鐘丟失檢測器
}
//-----------------------------------------------------------------------------
// I/O口及交叉開關初始化
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
XBR0 = 0x08; //系統時鐘輸出
XBR1 = 0x43; //交叉開關使能,PCA的CEX0、CEX1、CEX2分配到引腳上
P0MDIN = 0xFF;
P0MDOUT = 0x03; //P0.0、P0.1設為推挽方式
}
//-------------------------------------------------------------------------------
// PCA 初始化
//---------------------------------------------------------------------------
void PCA_Init(void)
{
PCA0CN = 0x40; //使能PCA計數/定時器
PCA0MD = 0x02; //選擇PCA的時鐘源,0x00、0x02、0x08分別為系統時鐘的12、4、及
PCA0CPM0 =0x6d;//8f; //不分頻
PCA0L =0x00; //PCA計數/定時寄存器低字節
PCA0H = 0x00; //PCA計數/定時寄存器高字節
PCA0CPL0 = 0x50; //PCA捕捉比較寄存器低字節
PCA0CPH0 = 0x20; //PCA捕捉比較寄存器高字節
EIE1 |= 0x10; // 使能PCA中斷
}
//----------------------------------------------------------------
//PCA 中斷處理
//----------------------------------------------------------------
void PCA0_ISR(void) interrupt 11
{
CCF0 =0; //PCA模塊0捕捉/比較標志位清0
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -