微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CD纹机控制器单片机程序

CD纹机控制器单片机程序

时间:12-01 来源:互联网 点击:

//主函数////////////////////////////////////////////////////////////////////////
void main()
{
watchdog_init();//看门狗

port_init(); //初始化io
initmax7219(); //初始化max7219
Mega8_ad(0X40); //启动一次通道0的AD转换 此值舍去
Mega8_ad(0X41); //启动一次通道1的AD转换 此值舍去
Mega8_ad(0X43); //启动一次通道3的AD转换 此值舍去
adc_max7219(); //启动一次通道0123的AD转换 送显示
init_timer1(); //初始化定时器1
SREG|=BIT(7); //打开总中断
while(1) //循环//这里面主要检测按键
{
WDR();
///////////////////////////////////////////////////////////////////////////////
if(!(PIND&BIT(2)))//停止按钮
{
delay_ms(5);
if(!(PIND&BIT(2)))
{
q=1;
Y1_H;
Y2_H;
Y3_H;
g1=0;g2=0;g3=0;
tt1=0;tt2=0;tt3=0;
adc_max7219(); //只有按住停止按钮才能设置定时值
if(!(PIND&BIT(1)))//按住停止按钮 再按启动按钮
{
delay_ms(5);
if(!(PIND&BIT(1)))
{
Y3_L;
while(!(PIND&BIT(1)))WDR();
}
}
}
delay_ms(50);
}

if(!(PIND&BIT(1))&&(PIND&BIT(2))&&q)//启动按钮
{
delay_ms(10);
if(!(PIND&BIT(1))&&(PIND&BIT(2)))//启动按钮
{
while(!(PIND&BIT(1)))WDR();//等待启动按钮松开
Y3_L;Y1_L;g1=1;
}
}
//工作模式判断/////////////////////////////////////////////////////////////////
if(t1{
if(!(PIND&BIT(3))&&(PIND&BIT(0))) //高光模式(必须关掉走刀开关)
{
delay_ms(5);
if(!(PIND&BIT(3))&&(PIND&BIT(0)))
{
g1=0;
tt1=0;
Y1_H;
Y3_H;
}
}
else if(!(PIND&BIT(0))&&(PIND&BIT(3))) //否则为CD纹模式
{ //(判断走刀按钮,必须关掉走刀按钮)
delay_ms(5);
if(!(PIND&BIT(0))&&(PIND&BIT(3))) //再次判断
{
Y2_L;
if((PIND&BIT(1))&&(!(PIND&BIT(4)))) //行程开关(启动按钮必须松开)
{
delay_ms(5);
if((PIND&BIT(1))&&(!(PIND&BIT(4))))
{
g2=1;
if(t2{
Y1_H;Y3_H;g3=1;q=0;
if(t3{
g1=0; g2=0; g3=0;
tt1=0;tt2=0;tt3=0;
Y2_H;q=1;
}
}
} }
}
}
}

///////////////////////////////////////////////////////////////////////////////

}
}

//定时器1的中断程序///给继电器定时用////////////////////////////////////////////
#pragma interrupt_handler timer1:9
void timer1(void)
{
TCNT1H=TEMERH;
TCNT1L=TEMERL;
if(g1)tt1++;
if(g2)tt2++;
if(g3)tt3++;

//系统闪烁灯
i++;
if(i>5) Y6_L;
if(i>10)
{
Y6_H;
i=0;
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top