?? sysinit.c
字號(hào):
//************************************************************************
//文件名:sysInit.c
//
//創(chuàng)建人:章玉剛
//
//時(shí)間 :2003.6.26
//
//描述 :本程序是通過(guò)對(duì)基礎(chǔ)時(shí)鐘模塊,9033,IIC口,電臺(tái),管腳初始化來(lái)初始化
// 系統(tǒng)
//
//************************************************************************//
#include "display.c"
void sysinit(void);
void Initpin(void);
void TBinit(void);
void debug9033(void);
#define uchar unsigned char
void sysinit(void)
{
int i;
uchar systime[7]={0,58,23,6,0,7,3}; //2003.6.29.22:40:00,星期日
Inituart0(); //初始化UART0
Read8563(systime);
if((systime[0]>59)||(systime[1]>59)||(systime[2]>23)||(systime[3]>31)||(systime[4]>6)||(systime[5]>12))
{
systime[0]=DefSec;
systime[1]=DefMin;
systime[2]=DefHour;
systime[3]=DefDay;
systime[4]=DefWeek;
systime[5]=DefMonth;
systime[6]=DefYear;
Settime8563(systime); //設(shè)定時(shí)間,初始化IIC口;|IICtimelcd.c\Settime();
}
Time.h=systime[2];
Time.m=systime[1];
STime.year=systime[6];
STime.month=systime[5];
STime.week=systime[4];
STime.day=systime[3];
TBinit(); //定時(shí)器TA初始化
Initpin(); //管腳
chk9033();
//初始化9033,UART0;eda9033.|9033.c\chk9033();
//disptime(); //調(diào)試用,顯示時(shí)間的函數(shù)用來(lái)初始化液晶|display.c\disptime();
for(i=0;i<0xff;i++);
}
void Initpin(void) //管腳初始化,因?yàn)镻nDIR寄存器初始狀態(tài)為0,作輸入的可以不設(shè)置
{
P1DIR &=~(BIT0+BIT1+BIT2+BIT3);
P1IES |=(BIT0+BIT1+BIT2+BIT3); //P1.0-P1.3為鍵盤(pán)輸入,上升沿中斷觸發(fā)
P1IE |=(BIT0+BIT1+BIT2+BIT3); //P1.0-P1.3中斷允許,注意每次中斷程序結(jié)束要清中斷標(biāo)志
//P1.4在9033初始化里面設(shè)置
//P1IES |=BIT5; //P1.5為手持臺(tái)通訊檢測(cè)輸入中斷,上升沿中斷觸發(fā)
//P1IE |=BIT5; //中斷允許
//P1IES |=(BIT6+BIT7); //P1.6,P1.7兩路無(wú)源開(kāi)關(guān)輸入中斷,初始化值為高電平
//因此設(shè)置為下降沿產(chǎn)生中斷
//P1IE |=(BIT6+BIT7); //中斷允許
//P2.0,P2.1為電臺(tái)切換控制,在UART1的初始化中設(shè)定(不是中斷)
//P2IES |=BIT0+BIT3; //P2.0/P2.2為時(shí)間模塊中斷,上升沿中斷觸發(fā)?
//P2IE |=BIT0+BIT3; //中斷允許
//P2.3,P2.4不知道怎么設(shè)置,是不是作為捕獲比較用的?
//P2.5-P3.3未用
//P3.4-P3.7分別為UART0和UART1使用,由它們各自的初始化去設(shè)定
//P4DIR |=(BIT0+BIT1); //P4.0,P4.1為輸出,是I2C口的輸入,具體的輸出值在
//I2C口初始化時(shí)候設(shè)定
//P4DIR &=~(BIT2+BIT3); //P4.2,P4.3為輸入,程序中根據(jù)P4IN中對(duì)應(yīng)的值來(lái)處理
//P4.4-P4.7未用
//P5DIR =0xFF; //P5.0-P5.7為8個(gè)繼電器輸出
//P5OUT =0x80; //初始化的輸出值應(yīng)都為0,(或者都為1)
//震蕩器1,震蕩器2,仿真口和其他不是輸入輸出的引腳不由軟件設(shè)置
//P6DIR &=~(BIT0+BIT1); //P6.0,P6.1為ADC的輸入
//P6.3不知道怎么設(shè),不能設(shè)置成中斷
}
void TBinit(void)
{
TBCTL=TBSSEL0+TBCLR+TBIE; //選ACK作為時(shí)鐘,清TAR
//TA為增計(jì)數(shù)
TBCCTL0=CCIE; // CCR0 interrupt enabled CCIE; //CCRO中斷允許
TBCCTL1=CCIE;
TBCCTL2=CCIE;
TBCCR0=8192; //設(shè)定中斷間隔,32kHz為0.125s
TBCCR1=16384;
TBCCR2=32768;
TBCTL|=MC1;
_EINT();
}
void debug9033(void)
{
uint i;
uchar debug1[18],debug2[6],debug3[4];
float D9033[14];
read9033(D9033,debug1,debug2,debug3);
//dispfunc(1,D9033);
for(i=0;i<0xffff;i++);
dispfunc(2,D9033);
for(i=0;i<0xffff;i++);
dispfunc(3,D9033);
for(i=0;i<0xffff;i++);
dispfunc(4,D9033);
for(i=0;i<0xffff;i++);
dispfunc(5,D9033);
for(i=0;i<0xffff;i++);
dispfunc(6,D9033);
for(i=0;i<0xffff;i++);
dispfunc(7,D9033);
for(i=0;i<0xffff;i++);
dispfunc(8,D9033);
for(i=0;i<0xffff;i++);
dispfunc(9,D9033);
for(i=0;i<0xffff;i++);
dispfunc(10,D9033);
for(i=0;i<0xffff;i++);
dispfunc(11,D9033);
for(i=0;i<0xffff;i++);
Cls();
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -