?? 新建 文本文檔 (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 + -