?? main.c
字號:
//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include <c8051f020.h> // SFR declarations
//------------------------------------------------------------------------------------
// Global CONSTANTS
//------------------------------------------------------------------------------------
#define SYSCLK 2000000 // approximate SYSCLK frequency in Hz
sbit LED1 = P1^6; // green LED: '1' = ON; '0' = OFF
sbit LED2 = P3^5;
sbit LED3 = P3^6;
//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORT_Init (void);
void SYSCLK_Init ()
{
int i; // 延時計數(shù)器
OSCXCN = 0x67; // 開啟外部振蕩器24.000000MHz晶體
for (i=0; i < 256; i++) ; // 等待振蕩器啟振
while (!(OSCXCN & 0x80)); // 等待晶體振蕩器穩(wěn)定
OSCICN = 0x88; // 選擇外部振蕩器為系統(tǒng)時鐘源并允許丟失
}
void PORT_Init (void)
{
//XBR2 = 0x40; // Enable crossbar and weak pull-ups
// XBR0 = 0x07;
// XBR1 = 0x80;
XBR2 = 0x40;
//P1MDOUT |= 0x40; // enable P1.6 (LED) as push-pull output
}
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
// disable watchdog timer
WDTCN = 0xde;
WDTCN = 0xad;
SYSCLK_Init ();
PORT_Init ();
//EX7 中斷配置
P3IF|=0x80;
EIE2|=0x20;
//Timer2 mode0 config
CKCON&=~0x20;
T2CON=0x09;
TL2=0;
TH2=0;
ET2=1;
//enable interrupt
EA=1;
while(1);
}
//上升沿中斷處理程序
void ex7_ISR(void)interrupt 19 using 1
{
P3IF&=~0x80;
//開啟定時器
TR2=1;
}
//捕捉中斷服務(wù)程序
void cap_ISR(void) interrupt 5 using 2
{
unsigned char temp;
EXF2=0;
TR2=0;
TL2=0;
TH2=0;
//RCAP2H RCAP2L
//1 1 0 0, 0 0 0 0, 0 0 0 0, 0 0 0 0
temp=RCAP2H;
if(temp&0x80==0x80)
LED1=0;
else
LED1=1;
if(temp&0x40==0x40)
LED2=0;
else
LED2=1;
if(temp&0x20==0x20)
LED3=0;
else
LED3=1;
//計算脈沖寬度
//根據(jù)結(jié)果顯示
}
//step 1 用上升,開啟定時器
//step 2 下降沿捕捉
//step 3 計算脈沖寬度,根據(jù)一定規(guī)則輸出到LED
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -