|
#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延時函數(shù)
{
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可控硅觸發(fā)電路就不能仿真了,不知道是和原因。
|
-
-
-
仿真.zip
2025-1-18 18:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
46.71 KB, 下載次數(shù): 0, 下載積分: 黑幣 -5
評分
-
查看全部評分
|