📄 timer_oc.c
字号:
//[Timer_OC.c]输出比较-----------------------------------------------------*
//本文件包含: *
// (1)TimerOCInit:输出比较初始化 *
// (2)TimerOCSET:设置通道产生方波 *
//硬件连接: *
// PT.0~PT.7作为方波的输出引脚,可通过示波器观察如果用万用表测量时, *
// 方波停止时电压为5V,产生方波时电压值应该为2.5V(系统5V电压的一半, *
// 相当于占空比为50%,说明产生的是方波) *
//-------------------------------------------------------------------------*
//头文件
#include "Timer_OC.h" //输出比较头文件
//TimerOCInit:输出比较初始化函数-------------------------------------------*
//功 能:输出比较初始化(初始化方波停止,8个引脚都输出5V) *
//参 数:无 *
//返 回:无 *
//-------------------------------------------------------------------------*
void TimerOCInit(void)
{
TIOS = 0xFF; //通道0~通道7设置为输出比较
TSCR2 = 0x08; //当通道7事件发生使计数器复位
//当输出比较事件发生时通道0~通道7引脚输出高电平
TCTL1 = 0xFF;
TCTL2 = 0xFF;
//对通道7~0设置电平翻转时间8000个计数周期
TC7 = 0x1F40;
TC6 = 0x1F40;
TC5 = 0x1F40;
TC4 = 0x1F40;
TC3 = 0x1F40;
TC2 = 0x1F40;
TC1 = 0x1F40;
TC0 = 0x1F40;
TSCR1 = 0x80; //定时器允许
}
//TimerOCSET:设置通道产生方波函数------------------------------------------*
//功 能: *
// 设置通道是否产生方波对每个通道0~7设置是否启动方波,设置成功回送 *
// 0x56("V"的ASC码),设置不成功回送0x46("F"的ASC码) *
//参 数: *
// channel-通道号('0'~'7')字符型变量 *
// Switch-开关('S'-产生方波,'E'-停止)字符型变量 *
//返 回:无 *
//-------------------------------------------------------------------------*
void TimerOCSET(INT8U channel, INT8U Switch)
{
INT8U int_Flag; //方波设置标志,56-设置成功,46-设置失败
int_Flag = 0x46; //设置标志初始化
switch (channel)
{
case '0':
if(Switch == 'S') //启动0通道方波输出
{
TCTL2 &= 0xFD;
int_Flag = 0x56; //设置成功
}
if(Switch == 'E') //0通道停止
{
TCTL2 |= 0x02;
int_Flag = 0x56; //设置成功
}
break;
case '1':
if(Switch == 'S') //启动1通道方波输出
{
TCTL2 &= 0xF7;
int_Flag = 0x56; //设置成功
}
if(Switch =='E') //1通道停止
{
TCTL2 |= 0x08;
int_Flag = 0x56; //设置成功
}
break;
case '2':
if(Switch == 'S') //启动2通道方波输出
{
TCTL2 &= 0xDF;
int_Flag = 0x56; //设置成功
}
if(Switch == 'E') //2通道停止
{
TCTL2 |= 0x20;
int_Flag = 0x56; //设置成功
}
break;
case '3':
if(Switch == 'S') //启动1通道方波输出
{
TCTL2 &= 0x7F;
int_Flag = 0x56; //设置成功
}
if(Switch == 'E') //1通道停止
{
TCTL2 |= 0x80;
int_Flag = 0x56; //设置成功
}
break;
case '4':
if(Switch == 'S') //启动4通道方波输出
{
TCTL1 &= 0xFD;
int_Flag = 0x56; //设置成功
}
if(Switch == 'E') //4通道停止
{
TCTL1 |= 0x02;
int_Flag = 0x56; //设置成功
}
break;
case '5':
if(Switch == 'S') //启动5通道方波输出
{
TCTL1 &= 0xF7;
int_Flag = 0x56; //设置成功
}
if(Switch == 'E') //5通道停止
{
TCTL1 |= 0x08;
int_Flag = 0x56; //设置成功
}
break;
case '6':
if(Switch == 'S') //启动6通道方波输出
{
TCTL1 &= 0xDF;
int_Flag = 0x56; //设置成功
}
if(Switch == 'E') //6通道停止
{
TCTL1 |= 0x20;
int_Flag = 0x56; //设置成功
}
break;
case '7':
if(Switch == 'S') //启动7通道方波输出
{
TCTL1 &= 0x7F;
int_Flag = 0x56; //设置成功
}
if(Switch == 'E') //7通道停止
{
TCTL1 |= 0x80;
int_Flag = 0x56; //设置成功
}
break;
default:
break;
}
SCISend1(int_Flag); //返回设置标志
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -