initt0.c

来自「set(key6) left(key5) right(key4) up(k」· C语言 代码 · 共 58 行

C
58
字号
#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 + =
减小字号Ctrl + -
显示快捷键?