打印

keil编译问题

[复制链接]
1499|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hufa123|  楼主 | 2010-5-8 12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dulianling| | 2010-5-8 12:59 | 只看该作者
贴出来看看

使用特权

评论回复
板凳
hufa123|  楼主 | 2010-5-8 13:05 | 只看该作者
声明: 程序很乱 高人有什么看法尽情的泼洒
#include"reg51.h"
#include"8563.h"
#include"24c01.h"
#include"malfunction.h"
#include"display.h"
#include"key.h"
uchar keyb;
uchar gu_xian=0;
uchar gu_cha[6];
void init()
{
        TMOD=0x11;
        TR0=1;
        ET0=1;
        TR1=1;
        ET1=1;
        TH1=53266/256;
        TL1=53266%256;
        TH0=63266/256;
        TL0=63266%256;
        EA=1;
        EX0=1;
        IT0=1;
        dula=0;
        wela=0;

}
void dis_control()//显示模式的选择
{
        switch(disnum)
                {
                        case 0:{shuxian[0]=time.s;shuxian[1]=time.m;shuxian[2]=time.h;};break;
                        case 1:{shuxian[0]=time.d;shuxian[1]=time.mouth;shuxian[2]=time.y;};break;
                        case 2:
                                        {
                                                if(key_num==1){shuxian[0]=0xaa;shuxian[1]=0xff;shuxian[2]=tobcd(a_num);};
                                                if(key_num==2){shuxian[0]=0xbb;shuxian[1]=0xff;shuxian[2]=tobcd(b_num);};
                                                if(key_num==3){shuxian[0]=0xcc;shuxian[1]=0xff;shuxian[2]=tobcd(c_num);};
                                                if(key_num==4){shuxian[0]=0xab;shuxian[1]=0xff;shuxian[2]=tobcd(ab_num);};
                                                if(key_num==5){shuxian[0]=0xbc;shuxian[1]=0xff;shuxian[2]=tobcd(bc_num);};
                                                if(key_num==6){shuxian[0]=0xac;shuxian[1]=0xff;shuxian[2]=tobcd(ac_num);};
                                                /*if(key_num>6)
                                                        {
                                                                if(key_num==36)key_num=1;
                                                                r_24c01(0x04+3*key_num,3,shuxian);};*/
                                                       
                                        };       
                                        break;
                        case 3:{shuxian[0]=0xff;shuxian[1]=time.m;shuxian[2]=0xff;};break;
                        case 4:{shuxian[0]=0xff;shuxian[1]=0xff;shuxian[2]=time.h;};break;
                        case 5:{shuxian[0]=time.d;shuxian[1]=0xff;shuxian[2]=0xff;};break;
                        case 6:{shuxian[0]=0xff;shuxian[1]=time.mouth;shuxian[2]=0xff;};break;
                        case 7:{shuxian[0]=0xff;shuxian[1]=0xff;shuxian[2]=time.y;};break;
                        case 8:;break;
                }
}
void r_24c01(uchar address,uchar z,uchar *databuf)
{
        uchar i;
        Start();
        writebyte(0xa0);       

        writebyte(address);

        Start();
        writebyte(0xa1);

        for(i=0;i<z;i++)
        {
                databuf[i]=Readbyte();
                        if(i<z-1) WriteACK(0);
               
        }
        WriteACK(1);
        Stop();
}
void main()
{
r_24c01(0x01,6,gu_cha);
        init();
//       
        a_num=gu_cha[0];
        b_num=gu_cha[1];
        c_num=gu_cha[2];
        ab_num=gu_cha[3];
        bc_num=gu_cha[4];
        ac_num=gu_cha[5];
       
       
        for(;;)
        {
                dis_control();
                key();
               
        }
}
void timesr_1() interrupt 1
{

        display();
         if(gu_xian)
                {
                        gu_xian++;
                        if(gu_xian>220)
                                {
                                        gu_xian=0;
                                        EX0=1;
                                }
       
                }


       

}
void time1() interrupt 3
{

        if(disnum<2)
                {
               
                        R_8563();
                }
               
}


void int_0() interrupt 0
{
        uchar gu;
        EX0=0;
        disnum=8;
        gu_xian=1;
        gu=key1|0xf8;

        switch(gu)
                {
                        case 0xfe:A();break;
                        case 0xfd:B1();break;
                        case 0xfb:C();break;
                        case 0xfc:AB();break;
                        case 0xfa:AC1();break;
                        case 0xf9:BC();break;

                        default: break;

                }
       
就在FOR循环前 初始化读取r_24c01()的时候就跳到dis_control()//显示模式的选择里 之后就跳到TH1=53266/256;
        TL1=53266%256;
        TH0=63266/256;
        TL0=63266%256;
        EA=1;
        EX0=1;
        IT0=1;
        dula=0;
        wela=0;
就一直死下去了  就怎么安静的死去了

使用特权

评论回复
地板
dulianling| | 2010-5-8 18:40 | 只看该作者
void main()
{
r_24c01(0x01,6,gu_cha);
        init();

使用特权

评论回复
5
hufa123|  楼主 | 2010-5-8 18:55 | 只看该作者
那个数组怎么了,本人慧根有限,望高手指明

使用特权

评论回复
6
hufa123|  楼主 | 2010-5-8 22:23 | 只看该作者
怎么没人帮我下。 来个神人吧 弄了一下午都没解决啊

使用特权

评论回复
7
原野之狼| | 2010-5-8 22:35 | 只看该作者
既然是全局的数组 为啥还要作为参数传入 直接使用不就得了
另外程序写的太乱 看得眼花
程序得一部分一部分的测试
记得当年俺上学的时候 刚学单片机 用汇编写了一个程序 在白纸上洋洋洒洒写了上千行 颇为得意 后来拿到机器上去测试 连编译都过不了 所以还是慢慢来吧

使用特权

评论回复
8
hufa123|  楼主 | 2010-5-8 22:47 | 只看该作者
谢谢 你的教导,回去再研究下 希望大家尽情的拍我 谢谢

使用特权

评论回复
9
dulianling| | 2010-5-10 08:16 | 只看该作者
void main()
{
r_24c01(0x01,6,gu_cha);
        init();
仔细看下:gu_cha与gu_cha[x]有么区别?

使用特权

评论回复
10
pingfan6163| | 2010-5-10 19:40 | 只看该作者
写程序时要细心呀,写完后再找错误就麻烦了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

186

主题

393

帖子

2

粉丝