#include <p18f4680.h>
#define sda_in PORTEbits.RE1
#define sda_out LATEbits.LATE1
#define sck LATEbits.LATE2
#define rest LATAbits.LATA4
void uart_initial();
unsigned char readbyte()
{
unsigned char i,j,num;
j=0;
TRISEbits.TRISE1=1;
sda_in=1;
for(i=0;i<8;i++)
{
num >>=1;
if(sda_in==1)
num|=0x80;
else
num&=0x7f;
sck=1;
Nop();
Nop();
sck=0;
Nop();
Nop();
}
TRISEbits.TRISE1=0;
return num;
}
void writebyte(unsigned char addr)
{
unsigned char i,j=0;
for(i=0;i<8;i++)
{
if(addr & 0x01)
sda_out=1;
else
sda_out=0;
sck=1;
Nop();
Nop();
sck=0;
addr >>=1;
Nop();
Nop();
}
}
unsigned char read(unsigned char addr)
{
unsigned char num;
rest=1;
writebyte(addr);
num=readbyte();
rest=0;
return num;
}
void write(unsigned char addr,unsigned char num)
{
rest=1;
writebyte(addr);
writebyte(num);
rest=0;
}
void ds_init()
{
sck=0;
rest=1;
Nop();
Nop();
rest=0;
TRISEbits.TRISE1=0;
TRISEbits.TRISE2=0;
TRISAbits.TRISA4=0;
write(0x8e,0x0);
write(0x80,0x0);
write(0xfe,0x0);
}
void main(void)
{
unsigned char t;
int i;
unsigned char a;
// sys_init();
// pwm1();
ds_init();
uart_initial();
write(0x80,0x27);//
write(0x82,0x27);//
write(0x84,0x07);//
// write(0x8e,0x80);
//SetTimer();
// write(0x82,0x12);//min=59
while(1)
{
a=read(0x81);
while(!PIR1bits.TXIF);
for(i=0;i<1000;i++)
;
TXREG =a;
PIR1bits.TXIF=1;
for(i=0;i<1000;i++)
;
}
}
|