📄 sysinit.c
字号:
//************************************************************************
//文件名:sysInit.c
//
//创建人:章玉刚
//
//时间 :2003.6.26
//
//描述 :本程序是通过对基础时钟模块,9033,IIC口,电台,管脚初始化来初始化
// 系统
//
//************************************************************************//
#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); //设定时间,初始化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(); //定时器TA初始化
Initpin(); //管脚
chk9033();
//初始化9033,UART0;eda9033.|9033.c\chk9033();
//disptime(); //调试用,显示时间的函数用来初始化液晶|display.c\disptime();
for(i=0;i<0xff;i++);
}
void Initpin(void) //管脚初始化,因为PnDIR寄存器初始状态为0,作输入的可以不设置
{
P1DIR &=~(BIT0+BIT1+BIT2+BIT3);
P1IES |=(BIT0+BIT1+BIT2+BIT3); //P1.0-P1.3为键盘输入,上升沿中断触发
P1IE |=(BIT0+BIT1+BIT2+BIT3); //P1.0-P1.3中断允许,注意每次中断程序结束要清中断标志
//P1.4在9033初始化里面设置
//P1IES |=BIT5; //P1.5为手持台通讯检测输入中断,上升沿中断触发
//P1IE |=BIT5; //中断允许
//P1IES |=(BIT6+BIT7); //P1.6,P1.7两路无源开关输入中断,初始化值为高电平
//因此设置为下降沿产生中断
//P1IE |=(BIT6+BIT7); //中断允许
//P2.0,P2.1为电台切换控制,在UART1的初始化中设定(不是中断)
//P2IES |=BIT0+BIT3; //P2.0/P2.2为时间模块中断,上升沿中断触发?
//P2IE |=BIT0+BIT3; //中断允许
//P2.3,P2.4不知道怎么设置,是不是作为捕获比较用的?
//P2.5-P3.3未用
//P3.4-P3.7分别为UART0和UART1使用,由它们各自的初始化去设定
//P4DIR |=(BIT0+BIT1); //P4.0,P4.1为输出,是I2C口的输入,具体的输出值在
//I2C口初始化时候设定
//P4DIR &=~(BIT2+BIT3); //P4.2,P4.3为输入,程序中根据P4IN中对应的值来处理
//P4.4-P4.7未用
//P5DIR =0xFF; //P5.0-P5.7为8个继电器输出
//P5OUT =0x80; //初始化的输出值应都为0,(或者都为1)
//震荡器1,震荡器2,仿真口和其他不是输入输出的引脚不由软件设置
//P6DIR &=~(BIT0+BIT1); //P6.0,P6.1为ADC的输入
//P6.3不知道怎么设,不能设置成中断
}
void TBinit(void)
{
TBCTL=TBSSEL0+TBCLR+TBIE; //选ACK作为时钟,清TAR
//TA为增计数
TBCCTL0=CCIE; // CCR0 interrupt enabled CCIE; //CCRO中断允许
TBCCTL1=CCIE;
TBCCTL2=CCIE;
TBCCR0=8192; //设定中断间隔,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();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -