cpp
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit S1=P3^4; //加
sbit S2=P3^5; //减
sbit SCR=P3^3; //可控硅触发信号
sbit bell=P3^0; //蜂鸣器
void Delay10ms() //10ms软件延时
{
uchar i, j;
i = 117;
j = 184;
do
{
while (--j);
} while (--i);
}
void Delay600us(uint z) //600us软件延时
{
uchar x;
for(x=0;x<z;x++)
{
uchar i, j;
i = 7;
j = 254;
do
{
while (--j);
} while (--i);
}
}
void chufa()///30us软件延时 提供可控硅触发信号
{
uchar k;
SCR=0;
for(k=0;k<30;k++)
{
_nop_(); _nop_();_nop_();
_nop_(); _nop_();_nop_();
}
SCR=1;
}
uint z=12;
void Button () //按键
{
if(S1==0) //加
{
Delay10ms();
if(S1==0)
{
bell=0;
z--;
if(z==0){z=12;}
}
while(!S1);
}
if(S2==0) //减
{
Delay10ms();
if(S2==0)
{
bell=0;
z++;
if(z>=12){z=12;}
}
while(!S2);
}
}
void main()
{
IT0=1; //下降沿触发
EX0=1; //允许外部中断0
EA=1; //打开总中断
while(1)
{
bell=1;
Button ();
}}
void Int0(void) interrupt 0
{
Delay600us(z); //延时
chufa(); //触发可控硅
}
完整资料下载原理图和代码: 可控硅.zip: https://url83.ctfile.com/f/45573183-1344480743-e70a38?p=7526 (访问密码: 7526)