//-------------------------------------------------------------------------*
//文件名: Includes.h                                                       *
//说  明: 总头文件,本文件包含:                                             *
//        主函数(main)文件中用到的头文件、外部函数声明及有关常量命名       *
//-------------------------------------------------------------------------*
#ifndef _INCLUDES_H
#define _INCLUDES_H

  /* 通用头文件 */
  #include "MC9S08AW60.h"                                  //映像寄存器地址头文件
  #include "Type.h"                                        //类型别名定义
  #include "GeneralFun.h"                                  //通用函数头文件
  
  
  /* 模块头文件 */ 
  #include "Light.h"            
  #include "LED.h"
  #include "PWM.h"
  #include "SCI.h"
  #include "Timer.h"
  #include "AD.h"
  #include "Flash.h"
  #include "GPIO.h"
  #include "IRQ.h"
  #include "Keyboard.h"
  #include "LCD.h"
  #include "TPMCh.h"

  /* 宏操作函数 */
  #define EnableInterrupt()                   asm("CLI")   //开放总中断
  #define DisableInterrupt()                  asm("SEI")   //禁止总中断
  
  /* 宏参数 */
  #define SYSTEM_CLOCK                        20           //系统总线频率(MHz) 
  #define TIMER2_CHANNEL_BZ_NUM               0            //定时器2的用于输入捕捉的通道号。主要实现拨码开关捕捉开始软件演示
  #define TIMER2_CHANNEL_PWM_NUM              1            //定时器2用于PWM波形输出的通道。实现对小灯的控制。
  #define NUM_FOR_LED_COUNT                   9876         //用于LED计数的上限设定
  
  #define Light_Run_PORT                      PORT_F       //运行指示灯使用的端口
  #define Light_Run                           7            //运行指示灯使用的引脚
  
  #define SCI_BAULD_RATE                      38400        //波特率的值
  #define SCI_NUM                             1            //串行通讯通道号   

  
  /* 普通操作码 */
  
                                                           //操作码宏定义，提出，可修改，不写死
  #define CODE_LIGHT_CONTROL                  0x20
  #define CODE_LIGHT_OPEN                     0x21         //打开小灯
  #define CODE_LIGHT_SHUTDOWN                 0x22         //关闭小灯
  #define CODE_LIGHT_CHANGE                   0x23         //小灯闪烁

  #define CODE_LCD_CONTROL                    0x25
  #define CODE_LCD_SHOW_STR                   0x26         //在LCD上显示从pc机发送过来的数据
  #define CODE_LCD_CLEAR                      0x27         //LCD清屏操作，重新初始化显示屏幕

  #define CODE_LED_CONTROL                    0x30
  #define CODE_LED_COUNT_TO_NUM               0x31         //在LED上从0000计数到NUM

  #define CODE_PWM_CONTROL                    0x35
  #define CODE_PWM_CONTROL_LIGHT              0x36         //通过PWM占空比的变化，控制小灯亮暗
  #define CODE_PWM_CONTROL_LIGHT_INIT         0x37         //pwm控制小灯，之小灯初始化
  #define CODE_PWM_CONTROL_LIGHT_CLOSE        0x38         //pwm控制小灯，之关闭小灯

  #define CODE_TIMER_CONTROL                  0x40
  #define CODE_TIMER_COUNT                    0x41         //定时器计数开始
  #define CODE_TIMER_COUNT_CLOSE              0x42         //定时器计数关闭
  #define CODE_TIMER__                        0x43         //用于标识，说明是一个数，产生的一个计数，属于状态码 *** ***

  #define CODE_AD_CONTROL                     0x45
  #define CODE_AD_MCU_TEMPERATURE             0x46         //获取内置温度传感器的温度

  #define CODE_FLASH_CONTROL                  0x50
  #define CODE_FLASH_PIC_SAVE                 0x51         //向flash中保存图片
  #define CODE_FLASH_PIC_READ                 0x52         //从flash中读出图片

  #define CODE_KEYBOARD_CONTROL               0x55
  #define CODE_KEYBOARD_RECOGNIZE             0x56         //打开键盘中断
  #define CODE_KEYBOARD_RECOGNIZE_CLOSE       0x57         //关闭键盘中断,即不进行键盘的识别操作

  #define CODE_IRQ_CONTROL                    0x60
  
  
  /* 特别操作码 */
  #define CODE_STOP                           0xFE         //停止码
  #define CODE_FAILED                         0xFF         //失败码
  #define CODE_SUCCESSED                      0x00         //成功码
  
  #define CODE_START_PC_SHOW                  0x01         //向高端PC机发送的演示启动命令
  #define CODE_STOP_PC_SHOW                   0x02         //向高端PC机发送的演示停止命令，暂时保留未用
  

  /* 函数声明 */
  void MCUInit(void);                                      //AW60芯片初始化
  

#endif