1924|0

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求大神帮我校对一下我写的代码! [复制链接]

如题,我想用430单片机写一个密码锁,奋斗了两个晚上——我只会I/O口和中断,现在代码是这样的,我现在要外出很长一段时间没法对代码进行模拟,所以请大神们看下这个代码有没有构思——已经编译成功了,没有语法错误。感激不尽!!!!
#include
/*
* main.c
*/
int i,sum,s,x=0;
int table={0,0,0,0,0,0,0,0,0,0};
int word={1,9,9,4,1,0,0,1,0,0};
int main(void) {
    WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer
    _enable_interrupts();//总中断开
    P1_Init();
    while(i<11)//通过阻塞CPU的方式等待P1口出现低电平。
     {

     }
        while(i) //比较输入密码与存储密码是否相同
        {
         s=table[i]-word[i];
         sum=sum+s;
         i--;
        }
    if(s==0)   //如果相同,返回1,不同,返回0
            return 1;
            else
                    return 0;
)

}
void P1_Init() //设置P1为输入,P1中断开启并为下降沿触发。
{

        do
        P1DIR&=~P1DIR;
        P1IFG=0;
        P1IE=0xff;
        P1IES|=0xff;
        while(P1IFG=0x00)
}
void password()
{


        unsigned char push;//设置局部变量
    push=P1IN;
    delay(1000)
    if(P1IN!=0xff)//机械键盘消抖
     swich(push)
     {
         case 0xee:table[i]=1; break;
         case 0xed:table[i]=2; break;
         case 0xeb:table[i]=3; break;
         case 0xe7:table[i]=4; break;
         case 0xde:table[i]=5; break;
         case 0xdd:table[i]=6; break;
         case 0xdb:table[i]=7; break;
         case 0xd7:table[i]=8; break;
         case 0xbe:table[i]=9; break;
         case 0xbd:table[i]=0; break;
         case 0xbb:table[]={0,0,0,0,0,0,0,0,0,0};break;
         case 0xb7:i=10;P1IE&=~P1IE;break;
         default:break; //使用的是4X4矩阵键盘,行列接口为P1.0-P1.3接行,P1.4-P1.7接列,平时为高电平,若有按键则为低电平,按下一个键会使行列中各有一个为低电平。其中case 0xb7为确认键,关闭中断,直接令当前数组与密码设置数组比较。case 0xbb为清除键,清除已输入的全部密码。
    }
    i=i+1;
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR()
{
        password();
        P1IFG&=~P1IFG;
        _enable_interrupts();//开启总中断,并将P1中断置0,以等待下一个信号输入(若已输入OK键,则P1口中断关闭,按键无效)
        P1IES|=0xff;

}
void delay(unsigned int m)//阻塞CPU的延时方式。
{
for (x=m;m>0;m--)
}
 
点赞 关注(1)

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表