75 lines
No EOL
1.2 KiB
C
75 lines
No EOL
1.2 KiB
C
#include "main.h"
|
||
|
||
#define RELOAD (65535-9216) //定时器填充值(1ms)
|
||
unsigned char TH, TL;
|
||
|
||
extern Menu *NOW; //菜单指针
|
||
extern enum OPR opr; //按键状态
|
||
|
||
|
||
void int0() interrupt 0 //外部中断:检测左右旋钮
|
||
{
|
||
|
||
unsigned char LS, CS, flag = 0;
|
||
LS = PIN_3;
|
||
while(!PIN_1)
|
||
{
|
||
CS = PIN_3;
|
||
flag = 1;
|
||
}
|
||
if(flag == 1)
|
||
{
|
||
if((LS == 0) && (CS == 1))
|
||
opr = right;
|
||
if((LS == 1) && (CS == 0))
|
||
opr = left;
|
||
}
|
||
|
||
}
|
||
|
||
void time() interrupt 1 //定时中断:检测确认按键
|
||
{
|
||
EA = 0;
|
||
TH0 = TH;
|
||
TL0 = TL0 + TL;
|
||
TL0 = TL0 + 23;
|
||
|
||
if(PIN_4 == 0)
|
||
{
|
||
delayms(15);
|
||
if(PIN_4 == 0)
|
||
opr = confirm;
|
||
}
|
||
EA = 1;
|
||
}
|
||
|
||
int main()
|
||
{
|
||
TH = RELOAD / 256; //填充值预计算
|
||
TL = RELOAD - (RELOAD / 256) * 256;
|
||
TH0 = TH;
|
||
TL0 = TL;
|
||
|
||
TMOD = 0x01; //使用定时器T0,高4位全为0,低4位GATE=0,C/T=0,采用工作方式1,M1=0,M1=1
|
||
|
||
TR0 = 1; //启动定时器0
|
||
EA = 1; //打开中断总开关
|
||
ET0 = 1; //打开定时器0中断开关
|
||
|
||
|
||
IT0 = 1; //中断触发方式为下边沿触发
|
||
EX0 = 1; //打开外部中断0
|
||
|
||
EA = 1; //打开中断总开关
|
||
|
||
displayInit(); //屏幕初始化
|
||
clear();
|
||
menuInit(); //菜单及其他初始化
|
||
|
||
while(1)
|
||
{
|
||
|
||
NOW->f(NOW);
|
||
|
||
}
|
||
} |