📄 initt0.c
字号:
#include<reg51.h>
sbit DAT = P2^7;
sbit PL = P2^6;
sbit CLK = P2^5;
sbit Voice=P2^4; //蜂鸣器
unsigned char pLED;
unsigned char DispBuf[6]; //缓冲区
unsigned char count;
bit xTim,xKey;
unsigned char KeyVal;
void InitT0(void) //初始化
{
pLED = 0;
xTim = 0;
count = 0;
TMOD = (TMOD & 0xF0) |0x01;
TH0 = 0xF1; // 1/240 s
TL0 = 0x00;
TR0 = 1;
ET0 = 1;
EA = 1;
}
void T0Srv(void) interrupt 1 using 1
{
unsigned char i;
TH0 = 0xF1; // 1/240 s
P2 = 0x18| pLED;
P0 = DispBuf[pLED];
if(++pLED==6) pLED = 0;
count++;
if((count&0x03)==0) // 每4次中断16ms读一次按键
{
CLK = 0;
PL = 0; // Latch Key
PL = 1;
KeyVal = 0;
for(i=0;i<8;i++)
{
KeyVal <<= 1;
if(!DAT) KeyVal |= 0x01; // 低电平检测
CLK = 1;
CLK = 0;
}
KeyVal &= 0x3F;
xKey = 1; // 发信号,表示读了一次按键
}
if(count==240) // 每240次中断发秒更新标志
{
count = 0;
xTim = 1;
} }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -