//-------------------------------------------------------------------------*
//工 程 名: timer                                                          *
//硬件连接:(1)PTD.0接指示灯                                                *
//         (2)MCU的串口与PC方的串口相连                                    *
//程序描述:                                                                *
//         (1)打开程序目录中的timer1.exe,用串口发生给MCU表示时间的3字节数据*
//         (2)利用定时器溢出中断修改时间,并发送新时间                      *
//目    的: 学习定时器基本功能                                             *
//说    明: 无                                                             *
//----------------苏州大学飞思卡尔嵌入式系统研发中心2011年-----------------*

//总头文件
#include "Includes.h"

void main(void)
{   
    //1 主程序使用的变量定义
    uint8 remember;                 //记录当前秒数的变量
    uint32 mRuncount=0;             //运行计数器
    //2 关总中断
    DisableInterrupt();             //禁止总中断
    
    //3 芯片初始化
    MCUInit();
    
    //4 模块初始化
    Light_Init(Light_Run_PORT,Light_Run,Light_OFF); //指示灯初始化
    TPMinit(TPM_NUM_1);                       //定时器1初始化 
    SCIInit(SCI_NUM_1,SYSTEM_CLOCK,9600);     //串行口初始化 
      
    //5 内存初始化
    g_time[0] = 0;                  //"时分秒"缓存初始化(00:00:00)
    g_time[1] = 0;
    g_time[2] = 0;
    remember = g_time[2];           //临时变量remember初始化
    
    //6 开放中断
    EnableSCIReInt();               //开放串口接受中断
    EnabletimerInt(TPM_NUM_1);      //开放定时器1溢出中断
    EnableInterrupt();              //开放总中断
    
    //7 主循环                                                                                                              
    while (1)               
    {     
       //1 主循环计数到一定的值，使小灯的亮、暗状态切换
       mRuncount++;
       if (mRuncount>=50000) 
       {
         mRuncount=0;
         Light_Change(Light_Run_PORT,Light_Run);//指示灯的亮、暗状态切换
       }
       //2 主循环执行的任务
       if (g_time[2] != remember)
        {
            SCISendN(SCI_NUM_1, 3, g_time);    //发送当前"时分秒"
            remember = g_time[2];              //remember中存放当前秒值
        }
    }
}
