?? lpc935init.c
字號:
#include"reg935.h"
#include"UserDef.h"
/****************************************/
/* CPU 初始化子程序 */
/****************************************/
void Lpc935Init(void)
{
AUXR1 = 0x00;
//時鐘的設置
TRIM |= 0x3F;
DIVM = 0x00; //CCLK = Fosc
//端口設置
P0M1=0xDF; //P0.5 設置為推挽輸出狀態,其余為輸入狀態
P0M2=0x20;
P1M1=0xBC; //P1.0/P1.1 設置為準雙向狀態,P1.2/P1.3/P1.6 設置為開漏輸出,
P1M2=0x4C; //其余為輸入狀態
P2M1=0xFF; //P2.0 設置為開漏輸出,其余為輸入狀態
P2M2=0x01;
//------------------------
// ADINS=0xF7; //1111 0111, 選擇除AD03 外所有channel
ADMODA=0x01; //0000 0001, 選擇轉換工作模式,單次轉換模式
ADMODB=0x60; //500Khz < ADC CLK < 3.3Mh,二分頻,6M/2 =3M, 0010 0000 = 0x20 12M/4 = 3M 0110 0000 = 0x60
ADCON0=0x00; //選擇轉換觸發模式,立即啟動,不中斷,0000 0101
ADCON1=0x00;
EADEE=0; //ADC/EEPROM中斷不使能
// RTC 設置
IEN0 = 0xC0; //使能RTC中斷,使能EA中斷 *為什么在IEN0中已經將EWDRT = 1,下面還要重復什么意思?*
EWDRT = 1; //允許看門狗/時鐘中斷 (WDT用作看門狗定時器,作用?為何又沒有WDL) 因為看門狗中斷和RTC共用一個中斷向量,
//所以要將看門狗定時功能開啟,但不需要看門狗功能,將看們狗停止運行。
WDCON = 0xE0; //關閉看門狗中斷
RTCH = RTC_RELOAD_H;
RTCL = RTC_RELOAD_L; //CCLK=6MHz , 1s 中斷1次時,RTC的定時值
RTCCON = 0x63; //開啟RTC模塊
//------------------------
PCONA = 0x25; // 將不用的模塊內部始終禁止
//------------------------
TMOD = 0x11; //設定T0為方式1,T1為方式1,定時器狀態,由TR0和TR1起停
TH0 = TIME_10ms_H; //設定定時時間為10ms
TL0 = TIME_10ms_L;
//UART 設置
//TH1 = 0xf3;
//TL1 = 0xf3; //波特率為4800
//PCON = 0x80; //波特率倍增
SSTAT = 0x00; //雙緩沖器禁止
SCON = 0x40; //串行口方式1
BRGCON = 0x00; //還是BRGCON = 0X02???難道是為了下面BRGR可以寫時間常數?因為當BRGEN=1是,不可以寫時間常數。
BRGR1 = 0x13; //波特率為2400, 6MHz/2400 = x + 16 --> x = 0x09B4 12MHz/2400-16 = 0x1378
BRGR0 = 0x78;
BRGCON = 0x03; //啟動波特率發生器
REN = 1; //啟動接收
//IT0 = 0; //外部中斷0為電平觸發
IT1 = 1; //外部中斷1為下降沿觸發
//ES = 1;
EX1 = 1;
ET0 = 1; //T0中斷使能
TR0 = 1;
EA=1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -