?? 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 + -