?? a(gettime_ie).c
字號:
#include<pic166x.h>
#define uchar unsigned char
#define _nop_() asm("nop")
//定義DS1302端口
#define RST RA4
#define CLK RA5
#define SDA RB7
uchar ACC,time[7];
uchar sig[7]={0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6};//標識碼
// 1302讀取時間模塊
void wbyte1302(uchar da)
{
uchar i;
ACC=da;
TRISB=0X00;
for(i=8;i>0;i--)
{
if(ACC&0x01) SDA=1;
else SDA=0;
CLK=1;
_nop_();
_nop_();
CLK=0;
ACC>>=1;
_nop_();
}
}
uchar rbyte1302()
{
uchar i;
TRISB=0XFF;
for(i=8;i>0;i--)
{
ACC>>=1;
if(SDA) ACC|=0x80;
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
}
return ACC;
}
void gettime(uchar *dat)
{
uchar i;
RST=0;
CLK=0;
RST=1;
wbyte1302(0xbf);
for(i=7;i>0;i--) *dat++=rbyte1302();
CLK=1;
RST=0;
}
/**************UART communication****************/
void init_uart()
{
TRISC=0x80;
SPBRG=25;
SPEN=1; //open serial port
CREN=1;
TXEN=1;
}
void send_byte(uchar dat)
{
TXREG=dat;
do{
; }while(!TXIF);
}
uchar rec_byte()
{
if(RCIF) return RCREG;
else return 0xff;
}
send_str(uchar *sign,uchar *dat)
{
uchar i,temp;
for(i=7;i>0;i--)
{
send_byte(*sign++);
for(;;)
{
temp=rec_byte();
if(temp!=0xff) break;
}
send_byte(*dat++);
for(;;)
{
temp=rec_byte();
if(temp!=0xff) break;
}
}
}
/*************主函數main**************************/
void main()
{
uchar temp;
TRISA=0x00; //output
TRISB=0X00; //output(LCD DATA)
init_uart();
while(1)
{
gettime(time);
send_str(sig,time);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -