前面的读写字节 读写程序的都对 应该是主函数的问题 查了很多资料 对BCD转化还是不懂 是都要转换吗?
#include<reg52.h>
#define uchar unsigned char
uchar key,key1;
sbit CLK=P2^7;
sbit IO=P2^6;
sbit RES=P2^5;
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90}; //0--9代码
void write_byte(uchar byte) //写一个字节
{
uchar i;
RES=1;
CLK=0;
for(i=8;i>0;i--)
{
CLK=0;
IO=byte&0x01;
CLK=1;
byte=byte>>1;
}
}
uchar read_byte() //读一个字节
{
uchar i,dat;
RES=1;
for(i=0;i<8;i++)
{
CLK=1;
CLK=0;
if(IO)
dat=(dat|(0x01<<i));
}
return( dat);
}
void write_1302(uchar add,uchar dat) //写入数据
{
RES=0;
RES=1;
CLK=0;
write_byte(add);
write_byte(dat);
RES=0;
}
read_1302(uchar add) //读出数据
{
RES=0;
RES=1;
CLK=0;
write_byte(add);
key=read_byte();
RES=0;
return (key);
}
void main()
{
P1=0x08; //数码管位选
RES=0;
CLK=0;
write_1302(0x8e,0x00); //允许写入
write_1302(0x80,0x80); //秒写入0
write_1302(0x8e,0x80); //写保护
while(1)
{
read_1302(0x81); //读出
P0=table[key1]; //段选
}
}
|