导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→哪位朋友帮帮忙?谢谢。改日请喝茶。[月如镜]

 *第16013篇: 哪位朋友帮帮忙?谢谢。改日请喝茶。

  
楼 主:月如镜 2003年9月3日22:59
 哪位朋友帮帮忙?谢谢。改日请喝茶。
#include   <reg51.h>  
sbit PinScanKey1=P1^2;
sbit PinScanKey2=P1^4;
sbit PinScanKey3=P1^5;
sbit PinScanKey4=P0^4;
sbit PinScanKey5=P0^3;
#define TRUE 1
#define FALSE 0
#define DELAY_value 5
unsigned char a[8];
unsigned char bdata count;
sbit count0=count^0;
sbit count1=count^1;
sbit count2=count^2;
sbit p2_4=P2^4;
sbit p0_6=P0^6;
sbit p0_5=P0^5;
code unsigned char tb[31]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x2e,0x1c,0x72,0x2a,0x3a,0xce,0x7c,0x00,0x10,0x80,0x02,0x82,0x1e,0x12,0x92};
/* ?0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,h,l,j,n,o,p,u,dark,low-,high-,mid-,high=,t,low=,三?``
*/


unsigned char bdata keyword;
unsigned char bdata keyboard;
sbit keyword0=keyword^0;
sbit keyword1=keyword^1;
sbit keyword2=keyword^2;
sbit keyword3=keyword^3;
sbit keyword4=keyword^4;

 void coms() interrupt 1
 { TH0=0xf8;
   TL0=30;
   SBUF=tb[a[count]];
   p2_4=count0;
   p0_6=count1;
   p0_5=count2;
   while(TI) {
   TI=0; }
   if(count  <7)count++;
   else count=0;
  }

 void sinit(void)
 {SCON=0;
 TMOD=1;
 TH0=0x80;
 TL0=0x20;
 TR0=1;
 EA=1;
 ET0=1;
 TI=0;
 }

 void keyinit(void)
 {PinScanKey1=1;
  PinScanKey2=1;
  PinScanKey3=1;
  PinScanKey4=1;
  PinScanKey5=1;
 }

void delay(short i)
{
   int k=0;
   k=i*DELAY_value;
   while(k--);
 }

unsigned char test(unsigned char bdata keyword,unsigned char data j)
{ keyword0=PinScanKey1;
  keyword1=PinScanKey2;
  keyword2=PinScanKey3;
  keyword3=PinScanKey4;
  keyword4=PinScanKey5;
  keyboard=~keyword;
  keyboard=keyboard&0x1f;
if(keyboard==j)
     {delay(DELAY_value);
         keyboard=~keyword;
            keyboard=keyboard&0x1f;
                if(keyboard==j)
                    {delay(DELAY_value);
                         keyboard=~keyword;
                            keyboard=keyboard&0x1f;
                                if(keyboard==j)
                                     return(j);
                     }
     }
}
unsigned char keyscan(unsigned char bdata keyword)
 {
  if(test(keyword,0x00)==0x00)
      return 0;
  if(test(keyword,0x01)==0x01)
      return 1;
  if(test(keyword,0x02)==0x02)
      return 2;
  if(test(keyword,0x04)==0x04)
      return 3;
  if(test(keyword,0x08)==0x08)
      return 4;
  if(test(keyword,0x10)==0x10)
      return 5;
  if(test(keyword,0x03)==0x03)
      return 6;
  if(test(keyword,0x05)==0x05)
      return 7;
  }

void main(void)
{
   sinit();
    do
   {keyinit();
   a[7]=keyscan();
   }while(1);
}
该程序是按键,并在数码管显示出来,共有7种情况,1,2,3,4,5,1与2同时,1与3同时按下,分别要求返回1,2,3,4,5,6,7。
编译时出现以下问题,请问是何原因,如何修改。
 warning c258 in line 72 of 该文件 :'keyword':mspace on parameter ignored
  error c185 in line 72 of 该文件 :'j':different memory space
急,希望能够得到答复。


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[讨论]Altera MAX7000 CPLD ?

[下一篇主题]:大侠帮我解释一下while和if的区别,看这个例子。