- /**********************************************************************
- **********************************************************************/
- //加载头文件
- #include "STC8G.h" //加载MCU头文件
- #include "intrins.h" //加载nop指令头文件
- //宏定义
- #define uchar unsigned char
- #define uint unsigned int
- #define ushort unsigned short
- #define ulong unsigned long
- //引脚定义
- sbit DO = P3^3; //定义信号输出DO
- //全局标志位
- //全局变量
- /******* 系统时钟切换操作 *******/
- /***********************************************************
- 函数名: Clk_Init()
- 功 能: 时钟初始化
- 参 数: 无
- 返回值: 无
- /**********************************************************/
- void Clk_Init(void)
- {
- CLKDIV = 0x01; //配置主时钟分频系数为1
- }
- /********* 端口初始化操作 **********/
- /***********************************************************
- 函数名: Port_Init()
- 功 能: 端口初始化配置
- 参 数: 无
- 返回值: 无
- /**********************************************************/
- void Port_Init(void)
- {
- //SPI信号输出(P3.3)
- P3M1 &= (~0x08); //配置P3.3端口为输出方式
- P3M0 |= 0x08; //配置端口推挽输出
- }
- /***********************************************************
- 函数名: T0_Init()
- 功 能: 定时器0初始化,用于测量红外脉冲宽度
- 参 数: 无
- 返回值: 无
- /**********************************************************/
- void T0_Init(void)
- {
- AUXR &= (~0x80); //T0选择12T模式(系统时钟12分频),时钟频率为:12MHz/12=1MHz
- TMOD &= (~0x03); //T0选择模式0(自动重装载模式)
- TL0 = 0x17;
- TH0 = 0xFC; //从0开始计时,计数一次耗时:(65535-64535=1000)*1us=1ms
- TR0 = 1; //开启定时器0
- ET0 = 1; //使能定时器0溢出中断
- EA = 1; //使能全局中断
- }
- void TM0_Isr(void) interrupt 1
- {
- DO = ~DO;
- }
- /******************** 主函数 **************************/
- void main(void)
- {
- // Clk_Init(); //时钟初始化
- Port_Init(); //端口初始化
- T0_Init(); //T0定时器初始化
- while(1)
- {
-
- }
- }
|