比较准确的方法是利用定时器
以c51为键慎知例:
/*********定时器方稿消波************/
/*********16位定时器************/
/************机器周期1us********/孝滚
/*********占空比50%*************/
/*********方波周期1s*************/
int a // 定义全局整形变量
void int() interrupt 1
{
设置定时器初值为500;
a++
if(a == 1000)
{
"输出取反"
}
}
附上代码,讲解在后历带面肢渗芦:public class Program
{
static void Main(string[] args)
{
List<喊仔Point>range = new List<Point>(5 * 5)
for (int i = 0i <5i++)
{
for (int j = 0j <5j++)
{
range.Add(new Point { X = j, Y = i })
}
}
//移动方向的顺序
MoveDirection[] md = new[]
这是两毫 秒 产生的方烂锋波 我仿信闷真过了 好使#include<reg51.h>
sbit P10=P1^0
void main()
{ EA=1ET1=1TR0=1
TMOD=01
TH0=65536-2000/256
TL0=65536-2000%256
while(1)
{
P10=~P10
}
}
void NT1() interrupt 3
{
TH0=65536-2000/256
TL0=65536-2000%256
}
以下程序是0832产生的三种波形 三角波 锯齿饥坦晌波 方波
#include <AT89X51.H>
#include<absacc.h>
#define PP XBYTE[0x7fff]
#define uint unsigned int
uint i,j,k
void delay(uint z)
void main()
{
while(1)
{
if(P1_0==0)
{ delay(10)
if(P1_0==0)
{ while(P1_2!=0&&P1_1!=0)
{ P1_3=0
for(i=255i>=0i--)
}
while(P1_0!=1)
} }
if(P1_1==0)
{ delay(10)
if(P1_1==0)
{ P1_4=0
while(P1_0!=0&&P1_2!=0)
{ for(j=0j<=254j++)
for(j=255j>=0j--)
}
while(P1_1!=1)}}
if(P1_2==0)
{ delay(10)
if(P1_2==0)
{ while(P1_0!=0&&P1_1!=0)
{P1_5=0
PP=255
delay(10)
PP=0
delay(10)} } }
} }
void delay(uint z)
{ uint x,y
for(x=zx>0x--)
for(y=120y>0y--)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)