⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysinit.c

📁 MSP430F147软件配合液晶(IIC接口)显示
💻 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 + -