|
#include<reg51.h>
unsigned char num=10;
bit bz=0;
sbit jia=P1^0;
sbit jian=P1^1;
sbit pwmout=P1^2;
void del_ms(unsigned int n)//ms延时函数
{
unsigned char j;
while(n--)
{for(j=0;j<125;j++);}
}
void Timer0_Init(void)
{
TMOD = 0x01;
TL0 = 0xCE; //50微秒@12.000MHz
TH0 = 0xFF;
TF0 = 0;
ET0 = 1;
TR0=1;
}
void Timer0_Isr(void) interrupt 1
{
static unsigned char count=0;
static unsigned char num_d=0;
TL0 = 0xCE;
TH0 = 0xFF;
TF0 = 0;
if(bz==1)
{
count++;
num_d=160-num;
if(count>=num_d)
{
pwmout=0;
}
if(count>=160)//160*50us=8ms
{
count=0;
bz=0;
}
}
}
void exint0() interrupt 0
{
pwmout=1;
bz=1;
}
void main()
{
Timer0_Init();
IT0 = 1;
EX0 = 1;
EA = 1;
while (1)
{
if(jia==0)
{
del_ms(20);
if(jia==0)
{
while(jia==0)
{
num=num+10;
if(num>=140)
{
num=140;
}
}
}
}
if(jian==0)
{
del_ms(20);
if(jian==0)
{
while(jian==0)
{
num=num-10;
if(num<=10)
{
num=10;
}
}
}
}
}
}
仿真虚拟示波器显示波形宽度随按键没有同步变化,要么一下加到最大,要么一下减到最小,不知是代码有误还是proteus出错。
把D3去掉接入U2可控硅触发电路就不能仿真了,不知道是和原因。
|
-
1.jpeg
(226.32 KB, 下载次数: 0)
-
-
仿真.zip
46.71 KB, 下载次数: 0, 下载积分: 黑币 -5
评分
-
查看全部评分
|