[hr]
#include <reg52.h>
#include <intrins.h>
void delay(unsigned int i); //声明延时函数
void delayms1(unsigned int ns)
sbit P1_0 = P1 ^ 0; //初始化引脚
sbit P1_1 = P1 ^ 1;
sbit P1_2 = P1 ^ 2;
sbit P3_0 = P3 ^ 0;
void delayms(unsigned int ms)
{
unsigned int i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void delayms1(unsigned int ns)
{
while(ms--)
{
}
}
main()
{
EA = 1;
EX0 = 1; //开启外部中断
while(1)
{
P3_0 = 0x00; //初始化P3_0 引脚为高电平,确保单片机待机时不会触发MOS
P1 = 0xff; //初始化P1引脚为高电平,确保单片机待机时不会触发MOS
}
}
void exter() interrupt 0
{
//给mic4417的VS供电(按钮按下)
P3_0 = 0x00;
delayms(550);
P3_0 = 0xff;
delayms(10);
//第一级开关时间控制
P1_0 = 0x00; //给mic4417的CTL输入低电压,使MOS导通
delayms1(92);
P1_0 = 0xff; //给mic4417的CTL输入高电压,使MOS阻断
//第二级开关时间控制
P1_1 = 0x00;
delayms1(82);
P1_1 = 0xff;
//第三级开关时间控制
P1_2 = 0x00;
delayms1(68);
P1_2 = 0xff;
//断开给mic4417的VS供电(按钮抬起)
P3_0 = 0x00;
}[hr]以上是程序,主要问题是如何让P30控制VS的供电,也就图中红色箭头所指的位置,之前做过两个电路都失败了。烧了两个线圈,每个线圈都是楼主花了一个小时以及半瓶502绕成的。再这么任性的试下去楼主就算不被绕线圈累屎也快被线圈烧掉时产生的有害气体毒死了。所以请经验丰富的朋友帮帮忙,看看问题该怎么解决。