📄 __c51_2
字号:
#line 1 ".\DS1302.c" /0 #line 1 "D:\KEIL\C51\INC\REG51.H" /0 sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0; sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98;#line 1 ".\DS1302.c" /0 #line 1 "D:\KEIL\C51\INC\INTRINS.H" /0 extern void _nop_ (void); extern bit _testbit_ (bit); extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float);#line 2 ".\DS1302.c" /0 sbit DS1302_CLK = P1^7; sbit DS1302_IO = P1^6; sbit DS1302_RST = P1^5; sbit wireless_1 = P3^0; sbit wireless_2 = P3^1; sbit wireless_3 = P3^2; sbit wireless_4 = P3^3; sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; sbit Set = P2^0; sbit Up = P2^1; sbit Down = P2^2; sbit out = P2^3; sbit DQ = P1^0; char done,count,temp,flag,up_flag,down_flag; unsigned char temp_value; unsigned char TempBuffer[5],week_value[2]; void show_time(); sbit rs = P2^5; sbit rw = P2^6; sbit e = P2^7; sbit busy=P0^7; void wr_d_lcd(unsigned char content); void wr_i_lcd(unsigned char content); void clrram_lcd (void); void init_lcd(void); void busy_lcd(void); void rev_row_lcd(unsigned char row); void rev_co_lcd(unsigned char row,unsigned char col,unsigned char mode); void clr_lcd(void); void wr_co_lcd(unsigned char row,unsigned char col,unsigned char lcddata1,unsigned char lcddtta2); void wr_row_lcd(unsigned char row,char *p); void init_lcd(void) { wr_i_lcd(0x06); wr_i_lcd(0x0c); } void clrram_lcd (void) { wr_i_lcd(0x30); wr_i_lcd(0x01); } void wr_d_lcd(unsigned char content) { busy_lcd(); rs=1; rw=0; P0=content; e=1; ; e=0; } void wr_i_lcd(unsigned char content) { busy_lcd(); rs=0; rw=0; P0=content; e=1; ; e=0; } void busy_lcd(void) { P0=0xff; rs=0; rw=1; e =1; while(busy==1); e =0; } void wr_row_lcd(unsigned char row,char *p) { unsigned char i; if (row==1)wr_i_lcd(0x80); else if (row==2)wr_i_lcd(0x90); else if (row==3)wr_i_lcd(0x88); else wr_i_lcd(0x98); for(i=0;i<16;i++)wr_d_lcd(*p++); } void wr_co_lcd(unsigned char row,unsigned char col,unsigned char lcddata1,unsigned char lcddata2) { unsigned char coor; if (row==1)coor=0x7f+col; else if (row==2)coor=0x8f+col; else if (row==3)coor=0x87+col; else coor=0x97+col; wr_i_lcd(coor); wr_d_lcd(lcddata1); wr_d_lcd(lcddata2); } void GOTOXY(unsigned char y, unsigned char x) { if(y==1) wr_i_lcd(0x80|x); if(y==2) wr_i_lcd(0x90|x); if(y==3) wr_i_lcd((0x80|x)+8); if(y==4) wr_i_lcd((0x90|x)+8); } void print(unsigned char *str) { while(*str!='\0') { wr_d_lcd(*str); str++; } } typedef struct __SYSTEMTIME__ { unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString[11]; unsigned char TimeString[9]; }SYSTEMTIME; SYSTEMTIME CurrentTime; void DS1302InputByte(unsigned char d) { unsigned char i; ACC = d; for(i=8; i>0; i--) { DS1302_IO = ACC0; DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; } } unsigned char DS1302OutputByte(void) { unsigned char i; for(i=8; i>0; i--) { ACC = ACC >>1; ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; } return(ACC); } void Write1302(unsigned char ucAddr, unsigned char ucDa) { DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); DS1302InputByte(ucDa); DS1302_CLK = 1; DS1302_RST = 0; } unsigned char Read1302(unsigned char ucAddr) { unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); ucData = DS1302OutputByte(); DS1302_CLK = 1; DS1302_RST = 0; return(ucData); } void DS1302_GetTime(SYSTEMTIME *Time) { unsigned char ReadValue; ReadValue = Read1302(0x80); Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(0x82); Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(0x84); Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(0x86); Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(0x8A); Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(0x88); Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(0x8C); Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); } void DateToStr(SYSTEMTIME *Time) { unsigned char tab[ ]={'一','二','
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -