单片机编程想用矩阵键盘在按下K4~K7的时候分别用串口发送1.2.3.4到计算机上

2019-07-15 15:02发布

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delayms(uint xms);
int keyscan();
void inti();
uchar temp,a,flag;
uint num,num1;

void delayms(uint xms)
{
        uint x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);
}

void inti()
{
        TMOD=0x20;
        TH1=253;
        TL1==253;
        SCON=0x50;
        PCON=0x80;
        ES=1;
        TR1=1;
        EA=1;
}

int keyscan()
{
        P3=0xfd;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
                delayms(5);
                temp=P3;
                temp=temp&0xf0;
                while(temp!=0xf0)
                {
                        temp=P3;
                        switch(temp)
                        {
                                case 0xed:num=1;break;
                                case 0xdd:num=2;break;
                                case 0xbd:num=3;break;
                                case 0x7d:num=4;break;
                        }
                        while(temp!=0xf0)
                        {
                                temp=P3;
                                temp=temp&0xf0;
                        }
                }
        }
        return num;
}

void main()
{
        P3=0xff;//硬件初始化
        inti();
        while(1)
        {
//                P1=keyscan();
                num1=keyscan();
                if(flag==1)
                {
                        ES=0;
                        flag=0;
                        SBUF=num1;
                        while(!TI);
                        TI=0;
                        ES=1;
                }                                 
        }       
}

void ser() interrupt 4
{
        RI=0;
        P1=SBUF;
        a=SBUF;
        flag=1;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。