📄 amend1.0.c
字号:
//ICC-AVR application builder : 2008-11-29
// Target : M16
// Crystal: 1.0000Mhz
/***************************Copyright(c)****************************
*****************************File Info******************************
** File name: amend1.0.c
** Created by: 邵峰sshaofeng@163.com
** Descriptions: 电磁炉智能控制(PD7:加热;PD6:报警)
** Date: 2008-12-04
*******************************************************************/
#include <iom16v.h>
#include <macros.h>
#include "amend1.0.h"
/********************************************************************
** 函数名称 :beep()
** 函数功能 :状态改变声音提示程序
** 入口参数 :无
** 出口参数 :无
********************************************************************/
void beep(void)
{
PORTD|=0X40;
}
/********************************************************************
** 函数名称 :KEY_Input()
** 函数功能 :输入按键判断子程序(此函数多层使用了switch)
** 入口参数 :无
** 出口参数 :无
********************************************************************/
void KEY_Input(void)
{
Key_New=PINC;
switch(Key_Pro)
{
case 0: //判断是否有键按下
if(Key_New!=0xC3) //由于实验板损害,不按键时即为11000011
{
Key_val = Key_New;
Key_Pro = 1;
Key_time = 0;
}
break;
case 1: //确认按键被按下(确认有效按键)
if(Key_New == Key_val)
{
Key_Pro = 2;
Key_time=0;
switch(Key_val)
{
case 0xFE: //在这加入短击处理程序
break;
case 0xC2: //调节键
TCCR1B = 0x00;
TCNT1H = 0xC2; //setup
TCNT1L = 0xF7;
i++;
PORTD=0;
k=0;
if(i>99) i=0;
break;
case 0xC1: //启动键
state_bit();
break;
case 0xFB: break;
case 0xF7: break;
case 0xEF: break;
case 0xDF: break;
case 0x83:
LED1=0;
LED=0X40; break;
case 0x43:
LED1=0;
LED=0X80; break;
}
Setup_time = 0;
TCCR0 = 0x05; //start timer
}
else Key_Pro = 0;
break;
case 2:
if(Key_New == Key_val)
{
if(Key_time>=4)
{//2秒后就。。。。。。
m=1;
Key_time=0;
switch(Key_val)
{
case 0xC2: //调节键
TCCR0 = 0x05; //start timer
break;
case 0xC1: //启动键
LED=0X00;
LED1=0X02; break;
case 0x83:
LED=0X00;
LED1=0X40; break;
case 0x43:
LED=0X00;
LED1=0X80; break;
//......
}
}
}
else
{
Key_Pro = 0;//按键松开后就返回
TCCR0 = 0x00; //▲default:stop timer0
Key_time=0;
m=0;
}
break;
}
return;
}
void main()
{
init_devices();
//insert your functional code here...
while(1)
{
KEY_Input();
display(i);
if((k)&(f))
{
PORTD&=~0X80;
f=0;
k=0;
}
if(k) PORTD|=0X80;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -