oyueyueniao 发表于 2014-4-4 20:07
第一段程序有个while(1);程序岂不是一直在这里死循环?
哦,谢谢,但是我改了还是不行,刚刚一直在想,发现是BCD码转换没有注意到。。。uchar BcdToBin(uchar val)
{
val = (val >> 4) *10+(val &0x0f); ///将BCD码转换为10进制数
return val; ///返回10进制数
}
但是改了以后还是不行,这次不显示全是5了,液晶上显示3 1 7 。。。数字还是不对,完全不对。而且数字中间有空格,而我的程序里没有加空格。。。
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define delayms(x) _delay_ms(x)
#define delayus(x) _delay_us(x)
#define rsddr DDRD
#define rsport PORTD
#define rspin PIND
#define rwddr DDRD
#define rwport PORTD
#define rwpin PIND
#define enddr DDRD
#define enport PORTD
#define enpin PIND
#define DS1302_SECOND_WRITE 0x80
#define DS1302_MINUTE_WRITE 0x82
#define DS1302_HOUR_WRITE 0x84
#define DS1302_DAY_WRITE 0x86
#define DS1302_MONTH_WRITE 0x88
#define DS1302_WEEK_WRITE 0x8a
#define DS1302_YEAR_WRITE 0x8c
#define DS1302_YEAR_READ 0x8d
#define DS1302_MONTH_READ 0x89
#define DS1302_DAY_READ 0x87
#define DS1302_HOUR_READ 0x85
#define DS1302_MINUTE_READ 0x83
#define DS1302_SECOND_READ 0x81
#define RST PORTB
#define SCLK PORTB
#define SDA PORTC
uchar c,shi,ge;
uchar year1=0x88;
uchar year0=0x88;
uchar month1=0x88;
uchar month0=0x88;
uchar date1=0x88;
uchar date0=0x88;
uchar day1=0x88;
uchar day0=0x88;
uchar hour1=0x88;
uchar hour0=0x88;
uchar minute1=0x88;
uchar minute0=0x88;
uchar second1=0x88;
uchar second0=0x88;
uchar table[]={'0','1','2','3','4','5','6','7','8','9','0'};
void DS1302WriteByte(uchar dat)
{
uchar i;
SCLK &=~(1