微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 我的普中的单片机怎么用不了这个程序?

我的普中的单片机怎么用不了这个程序?

时间:10-02 整理:3721RD 点击:
按键程序#include<reg52.h>
sbit AA=P2^2; sbit BB=P2^3; sbit CC=P2^4;
sbit key_in_1=P1^0;            sbit key_in_2=P1^1;  
sbit key_in_3=P1^2;            sbit key_in_4=P1^3;  
sbit key_out_1=P1^4;           sbit key_out_2=P1^5;
sbit key_out_3=P1^6;           sbit key_out_4=P1^7;
unsigned char keysta[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};
unsigned char code led[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                            0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
unsigned char i,j;
unsigned char keybackup[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};
EA=1;
AA=0;BB=0;CC=0;
TMOD=0X01;
TH0=0XFC;
TL0=0X67;
ET0=1;
TR0=1;
P0=led[0];
while(1)
{   
     for(i=0;i<4;i++)
     {
            for(j=0;j<4;j++)
                   {
                           if(keysta[i][j]!=keybackup[i][j])
                           {
                                   if(keybackup[i][j]!=0)
                                   {
                                      P0=led[i*4+j];
                                   }
                           }
                           keybackup[i][j]=keysta[i][j];
                    }
      }
     }
}
void InterruptTimer0() interrupt 1
{         
       
     static unsigned char keyout=0;
         static unsigned char keybuf[4][4]={{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},
                                            {0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff}};
     unsigned char i;
     TH0=0XFC;
     TL0=0X67;
         keybuf[keyout][0]=(keybuf[keyout][0]<<1)|key_in_1;
         keybuf[keyout][1]=(keybuf[keyout][1]<<1)|key_in_2;
         keybuf[keyout][2]=(keybuf[keyout][2]<<1)|key_in_3;
         keybuf[keyout][3]=(keybuf[keyout][3]<<1)|key_in_4;
         for(i=0;i<4;i++)
           {
                   if(keybuf[keyout][i]&0x0f==0X0F)
                        {
                           keysta[keyout][i]=1;
                        }
                   else if(keybuf[keyout][i]&0x0f==0X00)
                   {
                           keysta[keyout][i]=0;
                   }   
           }
          keyout++;
          keyout=keyout&0x30;
          switch(keyout)
          {
                case 0:key_out_4=0;key_out_1=1;break;
                case 1:key_out_3=0;key_out_4=1;break;
                case 2:key_out_2=0;key_out_3=1;break;
                case 3:key_out_1=0;key_out_2=1;break;
                default:break;
          }
}

错误提示呢?

这是kst开发板教程里的一个矩阵按键程序

#include 后面要跟着文件名,你的程序没有

头文件没有

51都是兼容的,你头文件没引用,也没有自定义寄存器地址。编译都通不过。
另,引脚连接和程序要对应。

都不知道他编译成功了没有

程序没错误。就是在这实现不了功能,原程序也没得头文件,就这样的

include<reg51.h>
or
include<reg52.h>

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top