/**********************************************************************
**********************************************************************/
//加载头文件
#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)
{
}
}
|