在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 9403|回复: 11

一个电子密码锁程序,有个语法错误,好奇怪啊求高人指点!

[复制链接]
发表于 2006-8-15 16:41:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一个电子密码锁程序,有个语法错误,好奇怪啊

我找了一个电子密码锁程序,开始有18个错误,我改剩到了一个,说是语法错误,我不知道错在那里!求高人指点一下(网上的电子密码锁程序都有问题,小猫弄好后定将原理图和程序公开!)谢谢了,错误处在void t0(void) interrupt 1 using 0  语法错误??

整个程序如下:#include <AT89X52.H>
#include<intrins.h>
#include<math.h>
unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
                               0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9;
unsigned char templen;
unsigned char digit;
unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char i,j;
P1=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0) //function key
{
   for(i=10;i>0;i--)
   for(j=248;j>0;j--);
if(P3_6==0)
{
   if(hibitflag==0)
   {
     funcount++;
   if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0) //digit key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
else if(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i<pslen;i++)
{
if(ps!=psbuf)
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
goto a;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a:
cmpflag=0;
}
}
void t0(void) interrupt 1 using 0
{TH0=(65536-500)/256;
TL0=(65536-500)%256; 
if((errorflag==1) && (rightflag==0))A
{
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
} 
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
} 
if((errorflag==0) && (rightflag==1))
{
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
}
 楼主| 发表于 2006-8-17 08:03:03 | 显示全部楼层
这里没有高人吗?
发表于 2006-8-24 18:53:32 | 显示全部楼层

给你些建议:养成好的编程习惯,对你的职业生涯会有大帮助

#include <AT89X52.H>
#include<intrins.h>
#include<math.h>
unsigned char code ps[] ={1,2,3,4,5};
unsigned char code dispcode[] =
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9;
unsigned char templen;
unsigned char digit;
unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;

void main(void)
{
        unsigned char i,j;
        P1=dispcode[digitcount];
        TMOD=0x01;
        TH0=(65536-500)/256;
        TL0=(65536-500)%256;
        TR0=1;
        ET0=1;
        EA=1;
        while(1)
        {
                if(cmpflag==0)
                {
                        if(P3_6==0) //function key
                        {
                                for(i=10;i>0;i--)
                                        for(j=248;j>0;j--);
                                        if(P3_6==0)
                                        {
                                                if(hibitflag==0)
                                                {
                                                        funcount++;
                                                        if(funcount==pslen+2)
                                                        {
                                                                funcount=0;
                                                                cmpflag=1;
                                                        }
                                                        P1=dispcode[funcount];
                                                }
                                                else
                                                {
                                                        second3=0;
                                                }
                                                while(P3_6==0);
                                        }
                        }
                        if(P3_7==0) //digit key
                        {
                                for(i=10;i>0;i--)
                                        for(j=248;j>0;j--);
                                        if(P3_7==0)
                                        {
                                                if(hibitflag==0)
                                                {
                                                        digitcount++;
                                                        if(digitcount==10)
                                                        {
                                                                digitcount=0;
                                                        }
                                                        P2=dispcode[digitcount];
                                                        if(funcount==1)
                                                        {
                                                                pslen=digitcount;
                                                                templen=pslen;
                                                        }
                                                        else if(funcount>1)
                                                        {
                                                                psbuf[funcount-2]=digitcount;
                                                        }
                                                }
                                                else
                                                {
                                                        second3=0;
                                                }
                                                while(P3_7==0);
                                        }
                        }
                }
                else
                {
                        cmpflag=0;
                        for(i=0;i<pslen;i++)
                        {
                                if(ps!=psbuf)//指针不等于指针,你的用途?
                                {
                                        hibitflag=1;
                                        i=pslen;
                                        errorflag=1;
                                        rightflag=0;
                                        cmpflag=0;
                                        second3=0;
                                        goto a;
                                }
                        }
                        cc=0;
                        errorflag=0;
                        rightflag=1;
                        hibitflag=0;
a:
                        cmpflag=0;
                }
        }
}//你少了一个大括号了

void t0(void) interrupt 1 using 0
{
        TH0=(65536-500)/256;
        TL0=(65536-500)%256;
        if((errorflag==1) && (rightflag==0))
        {
                bb++;
                if(bb==800)
                {
                        bb=0;
                        alarmflag=~alarmflag;
                }
                if(alarmflag==1)
                {
                        P0_0=~P0_0;
                }
                aa++;
                if(aa==800)
                {
                        aa=0;
                        P0_1=~P0_1;
                }
                second3++;
                if(second3==6400)
                {
                        second3=0;
                        hibitflag=0;
                        errorflag=0;
                        rightflag=0;
                        cmpflag=0;
                        P0_1=1;
                        alarmflag=0;
                        bb=0;
                        aa=0;
                }
        }
        if((errorflag==0) && (rightflag==1))
        {
                P0_1=0;
                cc++;
                if(cc<1000)
                {
                        okflag=1;
                }
                else if(cc<2000)
                {
                        okflag=0;
                }
                else
                {
                        errorflag=0;
                        rightflag=0;
                        hibitflag=0;
                        cmpflag=0;
                        P0_1=1;
                        cc=0;
                        oka=0;
                        okb=0;
                        okflag=0;
                        P0_0=1;
                }
                if(okflag==1)
                {
                        oka++;
                        if(oka==2)
                        {
                                oka=0;
                                P0_0=~P0_0;
                        }
                }
                else
                {
                        okb++;
                        if(okb==3)
                        {
                                okb=0;
                                P0_0=~P0_0;
                        }
                }
        }
}
发表于 2006-9-28 16:40:10 | 显示全部楼层
~~~~~~~~~××              ~……~
发表于 2006-11-3 17:05:49 | 显示全部楼层
晕!这样菜鸟的事都有
发表于 2006-11-14 13:20:22 | 显示全部楼层


原帖由 飞书扬剑 于 2006-8-24 18:53 发表
#include <AT89X52.H>
#include<intrins.h>
#include<math.h>
unsigned char code ps[] ={1,2,3,4,5};
unsigned char code dispcode[] =
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7 ...




高人啊!!!!!建议非常中肯!!!!!!!!!!!!!!
发表于 2006-11-15 17:28:49 | 显示全部楼层
建议是好的
发表于 2006-11-15 23:45:42 | 显示全部楼层
我刚好碰到一个类似问题~~可以借鉴借鉴~~谢谢了
发表于 2006-11-17 16:57:49 | 显示全部楼层
这里面好多高人啊~
发表于 2007-2-12 16:04:58 | 显示全部楼层

回复 #1 licunlong 的帖子

hao a  ding  o  wo  xihun
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 21:35 , Processed in 0.040302 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表