微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助,代码运行不了,自己查不出,求指点

求助,代码运行不了,自己查不出,求指点

时间:10-02 整理:3721RD 点击:
自己在自学51单片机,写了个时钟程序,郭天祥开发板,不能开始计时,查了很久,查不出程序哪里错了,求指点!

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
uchar code table[]=" 2013-02-20 Tue";
uchar code table1[]="    00:00:00";
uchar num,count;
char shi,fen,miao;
void delay(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}
void write_com(uchar com)
{
        lcdrs=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void write_data(uchar date)
{
        lcdrs=1;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void init()
{
        dula=0;
        wela=0;
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
       
        write_com(0x80);
        for(num=0;num<15;num++)
        {
                write_data(table[num]);
                delay(3);
        }
        write_com(0x80+0x40);
        for(num=0;num<12;num++)
        {
                write_data(table1[num]);
                delay(3);
        }
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR1=1;
}
void write_sfm(uchar add,uchar date)
{
        uchar shi,ge;
        shi=date/10;
        ge=date%10;
        write_com(0x80+0x40+add);
        write_data(0x30+shi);
        write_data(0x30+ge);
}
void main()
{
        init();
        while(1);
        {
                if(count==20)
                {
                        count=0;
                        miao++;
                        if(miao==60)
                        {
                                miao=0;
                                fen++;
                                if(fen==60);
                                {
                                        fen=0;
                                        shi++;
                                        if(shi==24)
                                        {
                                                shi=0;
                                        }
                                        write_sfm(5,shi);
                                }
                                write_sfm(8,fen);
                        }
                        write_sfm(11,miao);       
                }       
        }
       
}
void timer0() interrupt 3
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        count++;
}

没有主函数的while(1),液晶显示的时候就一闪一闪的,有while(1) 就不闪了,也不计时了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top