大神们给看看,有什么错误?为什么不能显示啊

[复制链接]
2074|5
 楼主| zyp0322 发表于 2013-7-14 11:25 | 显示全部楼层 |阅读模式
/*
* main.c
*/
#include  <msp430g2553.h>
#include"12864.h"
#include"key.h"
uchar  key0[8],key1[8]={16};   ///key0[]为输入密码,,,key1[]为正确密码
int mark,i=0,t=0,s_mark;      ///mark功能选择,t密码错误几次
/*******************************************
函数名称:panduan
功    能:判断密码是否正确
参    数:无
返回值  :无
********************************************/
void panduan(void)
{

        }

void delay2(uint z)
{
uint tmp;
for(tmp = z;tmp > 0;tmp--);
}
/*******************************************
函数名称:p2_init
功    能:报警函数
参    数:无
返回值  :无
********************************************/
void P2_init()
{
    P2SEL|= BIT5;                                  //TA从P1.2输出
    P2DIR|= BIT5;                                  //TA从P1.2输出
    TACTL|= MC_1+TASSEL_2;                        //时钟源选择ACLK,增计数模式 TA设置
    TACCTL1=OUTMOD_7;                             //模式7 高电平PWM输出        PWM设置
    TACCR0=32-1;                                 //PWM总周期=32个ACLK周期 约等于1000Hz        设置PWM的周期
    TACCR1=30;                                    //TA 占空比        设置占空比
}
/*******************************************
函数名称:panduan
功    能:判断密码是否正确
参    数:无
返回值  :无
********************************************/
void mark_xz(void)
{
        if(key_val==16)
                mark=1;          //确定键        当设定密码时为设定成功键,当为密码输入完成键时为判断键
        else if(key_val==14)
            mark=2;          //密码修改键
        //if(key_val==14)
        //    mark=3;
        else if(key_val==13)
            mark=3;          //密码设定
        else mark=0;
        }

void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
lcdinit();
Init_Keypad();
//P2_init();//控制蜂鸣器-----报警(直接调用就行)
write_string(1,1,"DTC");
for(;;)
{
   mark_xz();
   switch(0)                 //  mark
    {
     default:
     case 0:
     {
             write_string(1,2,"请输入密码:");
             P1IE = 0x70;    // 设置P1.4,P1.5,P1.6 可以中断
         P1IES = 0x70;    // 设置P1.4,P1.5,P1.6 为下降沿中断
         Key_Event();
         if(i>0)
         write_string(i,4,"*");
         else ;
     }
     break;
     case 1:
     {
             if(s_mark==3)
             {
             write_string(1,2,"密码设定成功!");
             delay2(20000);
             mark=0;
             }
             else
             {
             for(i=i-1;i>=0;i--)
             {
            if( key0[i]==key1[i])
                    ;
            else break;
             }
             if(i>=0)
             {
             if(t<2)
             {
                  write_string(1,2,"密码错误!");
                  t++;
                  write_string(1,3,"重新输入");
                  i=0;
             }
             if(t>=2)
             {
                     write_string(1,2,"密码错误!");
                     P2_init();
             }
             }
             else
             {
                     write_string(1,2,"密码正确");

             }
             }
             s_mark=0;
          }
     break;
     case 2:
     {
                  write_string(1,2,"密码修改");
                  write_string(1,3,"输入旧密码:");
          }
     break;
     case 3:
     {
             write_string(1,2,"设定密码:");
             P1IE = 0x70;    // 设置P1.4,P1.5,P1.6 可以中断
             P1IES = 0x70;    // 设置P1.4,P1.5,P1.6 为下降沿中断
             Key_Event();
             write_string(i,4,"*");
             s_mark=mark;
               }
     break;
    }
}

}
#pragma vector=PORT1_VECTOR   //中断服务程序:
__interrupt void p1int(void)
{
  P1OUT ^=BIT4+BIT5+BIT6;
  if(mark==3)
          key1[i]=key_val;
  else
  key0[i]=key_val;
  i++;
  delay1();
  P1IFG=0;
}
wangch_sh 发表于 2013-7-14 18:11 | 显示全部楼层
1.硬件问题
2.时序问题
long870912 发表于 2013-7-14 20:13 | 显示全部楼层
路过!
冥顽的石头 发表于 2013-7-14 21:10 | 显示全部楼层
wangch_sh 发表于 2013-7-15 14:32 | 显示全部楼层
网上例子很多的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部