📄 inttrup.c
字号:
#include <AT89X52.H>
#include "head.h"
extern uchar keyn,Chose,TMing1,VFport;
extern uchar xdata LEDbuf[8];
extern uint tming3;
uint xdata TMing2=0;
uchar count,kcout,jitter,jiasu,KEYbuf[4],Refreshtime=settime,countt=1;
uchar vfmark=0;
uchar VFnowt=0;
uchar tt=0;
uchar xj=xjian;
extern float xdata PV[road];
void VFtime()
{
VFnowt--;
if(vfmark==0)
{
if(VFnowt==VFGETT)
{
TMOD=0x53;
TH0=0;TL0=0;
TH1=0;TL1=0;TR1=1;
}
if(VFnowt==0)
{
TMOD=0x73;
vfmark=1;
}
}
}
void LEDtime()
{ uchar txdat;
Refreshtime--; //时间定为2MS刷新一次显示数据(当系统晶振为6MHZ)
if(Refreshtime==0)
{ xj--;
if(xj==0)
{
tming3++;
xj=xjian;
}
Refreshtime=settime; //重装刷新时间
if(count<Screen) //判断是否扫描一遍LED
count++;
else
count=1;
txdat=count-1;
if(txdat==0) //当点亮的LED是第一个时,DISDATA为1,其余的为0
DISDATA=1;
else
DISDATA=0;
displaydata=LEDbuf[txdat];
LEDclk; // 输出一脉冲供给74HC164做时钟
if(KEYin==1)
{ TMing2=0;
tt=0;
switch(count-1) //扫描哪个键盘被按下
{
case 0x04: KEYbuf[kcout]=ADDdata;
break;
case 0x05: KEYbuf[kcout]=SET;
break;
case 0x06: KEYbuf[kcout]=AM;
break;
case 0x07: KEYbuf[kcout]=SUBdata;
break;
default:;
}
kcout++;
if(kcout>1)
kcout=0;
if(KEYbuf[0]==KEYbuf[1]) //扫描延时
{ jitter++; //判断键盘是否有没按下
jiasu++;
}
else
{
jiasu=0;
jitter=0; //无键盘按下
}
if(jitter==30) //给键盘赋值
{
keyn=KEYbuf[1];
jitter=0;
}
if(jiasu>=200) //当条件成立时,键盘加速
{
if((KEYbuf[0]==ADDdata)|(KEYbuf[0]==SUBdata)) //是加、减键时加速
{
if((Chose!=syscsdisplay)&&(Chose!=fundisplay)&&(Chose!=teshucsdisplay))
keyn=KEYbuf[1];
}
jiasu=195;
}
}
else
{
TMing2++;
tt++;
if(tt>=8)
{
jiasu=0;
tt=0;
}
}
}
}
void Time0(void)interrupt 1 //T0中断处理
{
VFtime(); //采样中断处理
LEDtime(); // LED中断处理
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -