📄 新建 文本文档 (3).txt
字号:
5.3.3 星三角降压启动程序代码设计
/********************************************************************功能说明:①按下SB1,KMY吸合,延迟0.2s,KM1也吸合,电动机星形启动。5s后启动过程结束,KM1先释放,延迟1s,KMY也释放,电动机惯性运行。KMY释放0.2s后,KM△吸合,再延迟0.2s,KM1吸合,至此,电动机启动完成,进入全压运行阶段。②如果由于某种原因,无法完成星形启动,则系统发出控制信号,一方面关闭OUT1、2、3输出,严禁电动机直接进入三角形全压运行;另一方面,经过50s延迟后,从OUT4输出1Hz报警信号,HL4闪烁报警。③如发生过载、缺相等现象,则关闭OUT1、2、3输出,使电动机停止运行,而且从OUT4输出2.5Hz报警信号,HL4闪烁报警。④按下SB2,电动机停止运行。
********************************************************************/
#include<iom8v.h>
#include<macros.h>
char SB1,SB2,RF,KMY,M0=0,M1=0,M2=0,count=0,count1=0;
void delay(void)
{int i,j;for(i=0;i<200;i++)
for(j=0;j<1000;j++);}
void twinkle(void)
{PORTC=0X08;delay();PORTC=0X00;delay();}
void timer0_init(void)
{TCCR0=0X00;TCNT0=0X3C;TCCR0=0X05;TIMSK=0X01;SEI();}
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{if(count1>=20) PORTC=0X00;
if(count1>=40){PORTC |=0X08;count1=0;}
count1++;TCNT0=0x3C;}
void timer1_init(void)
{TCCR1B=0X00;TCNT1H=0XF9;
TCNT1L=0XE5;TCCR1B=0X05;TIMSK=0X04;SEI();}
#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{PORTC |=0X02;KMY=(PIND&0X04);
if(!KMY) M1 |=1; else M1 &=~1;
if(M1) {if(count>=1) PORTC |=0X01;
if(count>=26) PORTC &=~0X01;
if(count>=32) {PORTC |=0X04;M2 |=1;}}
else {if((count>=250)&(!M2))
{TCCR1B=0X00;count=250;timer0_init();}}
if(count>=31) PORTC &=~0X02;
if(M2&(count>=33))
{PORTC |=0X01;TCCR1B=0X00;count=33;}
count++;TCNT1H=0XF9;TCNT1L=0XE5;}
void port_init()
{DDRC=0X0F;PORTC=0X00;DDRD=0X00;PORTD=0X0F;}
void main()
{port_init();delay();PORTC=0X00;
while(1){SB1=!(PIND&0X01);SB2=!(PIND&0X02);
RF=!(PIND&0X08);M0=M0&1;
if(!RF) {PORTC &=~0X07;count=0,count1=0,M0=0, M1=0,M2=0;
TCCR0=0X00;TCCR1B=0X00;twinkle();}
else {if((SB1|M0)&(!SB2)) M0 |=1;else M0 &=~1;
if(!M0) timer1_init();}
if(SB2){PORTC &=~0X0F;count=0,count1=0,M0=0, M1=0,M2=0;
TCCR0=0X00;TCCR1B=0X00;}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -