#include
#include
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar pinlv=100;
uint a,b;
uchar code sanjiao[64]={
0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
}; //三角波取码
void initclock() //定时器初始化函数
{
TMOD=0x01; //定时器的工作方式
TH0=a;
TL0=b; //定时器赋初值
EA=1; //打开中断总开关
ET0=1; //打开定时器允许中断开关
TR0=1; //打开定时器定时开关
}
void main() //主函数
{
m=65536-(15000/pinlv); //定时器初值
a=m/256;
b=m%256;
initclock(); //定时器初始化
while(1)
{
P1=sanjiao[u]; //三角波
}
}
void T0_time()interrupt 1 //定时器
{
TH0=a;
TL0=b;
u++; //变量加
if(u>=64) //一个周期采样64个点, 所以加到64就清零
u=0; //u清零
//根据不同的初值,定时器定时时间不同,达到不同频率的目的
}