前面的讀寫字節(jié) 讀寫程序的都對 應該是主函數(shù)的問題 查了很多資料 對BCD轉(zhuǎn)化還是不懂 是都要轉(zhuǎn)換嗎?
#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) //寫一個字節(jié)
{
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() //讀一個字節(jié)
{
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) //寫入數(shù)據(jù)
{
RES=0;
RES=1;
CLK=0;
write_byte(add);
write_byte(dat);
RES=0;
}
read_1302(uchar add) //讀出數(shù)據(jù)
{
RES=0;
RES=1;
CLK=0;
write_byte(add);
key=read_byte();
RES=0;
return (key);
}
void main()
{
P1=0x08; //數(shù)碼管位選
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]; //段選
}
}
|