当前位置: 代码迷 >> 单片机 >> 求指教程序有个异常实在找不出啊来
  详细解决方案

求指教程序有个异常实在找不出啊来

热度:65   发布时间:2016-04-28 15:11:06.0
求指教程序有个错误实在找不出啊来
#include<reg51.h>
#include<ABSACC.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define unit unsigned int
sbit P3_6=P2^1;
sbit LcdRs=P3^2;
sbit LcdRw=P3^1;
sbit LcdEn=P3^0;
sbit P2_0=P2^0;
unit key_val=16;
unit m=0,count=0,count2=0;
unit pass=0,pass0=0,pass1=0,pass2=0,o=0,n=0;
unit co[6]={0,0,0,0,0,0};
unit cp[1]={0};
unit cq[7]={ 0,0,0,0,0,0 ,0};
uchar sk[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
uchar password[16];
void DelayMs(unsigned int n){
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<120;j++);}
void Check_key(void){
unsigned int row,col,tmp1,tmp2;
tmp1=0x10;
for(row=0;row<4;row++){
P1=0x0f;
P1=~tmp1;
tmp1*=2;
if((P1&0x0f)<0x0f)
{DelayMs(30);
 if((P1&0x0f)<0x0f)
{ tmp2=0x01; 
 for (col=0;col<4;col++){
 if((P1&tmp2)==0x00){
 key_val=row*4+col;
 while ((P1&tmp2)==0x00);
return ;}
tmp2*=2;}
while((P1&tmp2)==0x00);}}} }
void rec_key(void)
{
if(key_val!=16){
if(m>6)
m=0;
if(count2==1)
{if (key_val==0){
sk[0]=1;
count++;
pass=0;
password[m]=0;
m++;
DelayMs(10);
P3_6=0;
DelayMs(100);
 
P3_6=1;
key_val=16;}
if(key_val==1){
sk[1]=1;
count++;
pass=1;
password[m]=1;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==2 ){
sk[2]=1;
count++;
pass=2;
password[m]=2;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16; }
 if(key_val==3){
 sk[3]=1;
 count++;pass=3;password[m]=3;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;
 }
 if(key_val==4){
 sk[4]=1;
 count++;
 pass=4;
 password[m]=4;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==5){
 sk[5]=1;
 count++;
 pass=5;
 password[m]=5;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==6){
 sk[6]=1;
 count++;
 pass=6;
 password[m]=6;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==7){
 sk[7]=1;
 count++;
 pass=7;
 password[m]=7;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==8){
 sk[8]=1;
 count++;
 pass=8;
 password[m]=4;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==9){
 sk[9]=1;
 count++;
 pass=9;
 password[m]=9;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==10){
 sk[10]=1;
 count++;
 pass=10;
 password[m]=10;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==11){
 sk[11]=1;
 count++;
 pass=11;
 password[m]=11;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==12){
 sk[12]=1;
 count++;
 pass=12;
 password[m]=12;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==13){
 sk[13]=1;
 count++;
 pass=13;
 password[m]=16;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==14){
 sk[14]=1;
 count++;
 pass=14;
 password[m]=14;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(key_val==15){
 sk[15]=1;
 count++;
 pass=15;
 password[m]=15;
 m++;
 DelayMs(10);P3_6=0;
 DelayMs(100);P3_6=1;
 key_val=16;}
 if(m>10)
 m=0; }
 unsigned char LCD_Wait(void){//这行附近有个语法错误

 LcdEn=0;LcdRs=0;
 LcdRw=1;_nop_();
 LcdEn=1;_nop_();
 LcdEn=0;_nop_();
 while(DBPort&0x80)
 if(DBPort&0x80==0x80)
 return DBPort;}
#define LCD_COMMAND  0
#define LCD_DATA  1
#define LCD_CLEAR_SCREEN 0x01
#define LCD_HOMING  0x02
void LCD_Write(bit style,unsigned char input){
LCD_Wait();
LcdEn=0;
LcdRs=style;
LcdRw=0;_nop();
DBPort=input; _nop();
LcdEn=1;_nop();
LcdEn=0; _nop();
}
#define LCD_SHOW 0x04
#define LCD_HIDE 0x00
#define LCD_CURSOR 0x02
#define LCD_NO_CURSOR 0x00
#define LCD_FLASH 0x01
#define LCD_NO_FLASH 0x00
 void LCD_SetDisplay(unsigned char DisplayMode){
  LCD_Write(LCD_COMMAND,0x08|DisplayMode);}
  #define LCD_AC_Up  0x02
  #define LCD_AC_DOWN  0x00
  相关解决方案