📄 资源不够程序备份.c
字号:
#include <reg52.h>
#include <absacc.h>
#define SECOND 0x80
#define MINUTE 0x82
#define HOUR 0x84
#define DATE 0x86
#define MONTH 0x88
#define DAY 0x8A
#define YEAR 0x8C
#define WP 0X8E
sbit R_W = P3^3;
sbit ADD_DATA = P3^4;
unsigned char receive_sbuf;
unsigned char receive_7128;
unsigned char receive_1302;
unsigned char jingdu=0xff;
unsigned char weidu=0xff;
unsigned char ctrl=0x00;
unsigned char ctrl2=0x00; //注意
unsigned char nian=0xff;
unsigned char nian2=0xff;
unsigned char yue=0xff;
unsigned char yue2=0xff;
unsigned char ri=
unsigned char ri2=0xff;
unsigned char zhou=zhou2=0xff;
unsigned char shi=shi20=xff;
unsigned char fenfen2==0xff;
unsigned char miao=miao2=0xff;
unsigned char OK=0xff;
unsigned char error=0;
unsigned char datareadynum=0;
unsigned char intcount=0;
unsigned char intcount2=0;
unsigned char r_wflag;
void Inputaddr_R(unsigned char addr);
void Inputaddr_W(unsigned char add);
void Inputdata(unsigned char din);
unsigned char Outputdata(unsigned char dout) ;
void main(void)
{
P1=0XF0; //点灯
//外中断设置
// IT0=1; //外部中断0 下降沿中断
// PX0=0; //外部中断优先级低
//EX0=1; //开外部中断0
//串口设置
SCON=0x50; //模式1;允许接接收;标志位清0
PS=1; //串口中断高优先级
PCON=0X80;
TMOD=0x20; //方式2:自动装入
TL1=TH1=0xF3;
TR1=1; //波特率 4800@12Mhz)
ES = 1; //串口中断开
EA=1; //开总中断
//SBUF=0xf0;
//死循环等待中断
// Write1302(DS1302_SECOND,0X50);
// SBUF=Read1302(DS1302_SECOND);
while(1);
}
//串口中断程序
void int_s(void) interrupt 4
{
ES = 0; //关闭串行中断
if(TI==1)
{
//SBUF=0xff;
TI=0;
}
if(RI==1)
{
receive_sbuf=SBUF;
switch(receive_sbuf)
{
case 'E': jingdu=weidu=nian=yue=ri=shi=fen=miao=0x00; error=1; break;
case 'J': jingdu=0x00; break;
case 'W': weidu=0x00; break;
case 'N': nian=0x00; break;
case 'Y': yue=0x00; break;
case 'R': ri=0x00; break;
case 'S': shi=0x00; break;
case 'F': fen=0x00; break;
case 'M': miao=0x00; break;
case 'O': OK=0x00; break;
default : {
if(jingdu==0x00) {jingdu=receive_sbuf; datareadynum++; break;}
if(weidu==0x00) {weidu=receive_sbuf; datareadynum++; break;}
if(nian==0x00) {nian=receive_sbuf; datareadynum++; break;}
if(yue==0x00) {yue=receive_sbuf; datareadynum++; break;}
if(ri==0x00) {ri=receive_sbuf; datareadynum++; break;}
if(shi==0x00) {shi=receive_sbuf; datareadynum++; break;}
if(fen==0x00) {fen=receive_sbuf; datareadynum++; break;}
if(miao==0x00) {miao=receive_sbuf; datareadynum++; break;}
}
}
SBUF=jingdu;
RI=0;
}
ES=1;
}
//外部中断程序
void hand(void) interrupt 0
{ //EX0=0;
if(r_wflag==0) // 写
switch(intcount)
{
case 0:{ Inputaddr_W(SECOND);intcount++;break;}
case 1:{ Inputdata(miao);intcount++;break;}
case 2:{ Inputaddr_W(MINUTE);intcount++;break;}
case 3:{ Inputdata(fen);intcount++;break;}
case 4:{ Inputaddr_W(HOUR);intcount++;break;}
case 5:{ Inputdata(shi);intcount++;break;}
case 6:{ Inputaddr_W(DATE);intcount++;break;}
case 7:{ Inputdata(ri);intcount++;break;}
case 8:{ Inputaddr_W(MONTH);intcount++;break;}
case 9:{ Inputdata(yue);intcount++;break;}
case 10:{ Inputaddr_W(DAY);intcount++;break;}
case 11:{ Inputdata(zhou);intcount++;break;}
case 12:{ Inputaddr_W(YEAR);intcount++;break;}
case 13:{ Inputdata(nian);intcount++;break;}
case 14:{ Inputaddr_W(WP);intcount++;break;}
case 15:{ Inputdata(ctrl);intcount++;break;}
}
else //读
switch(intcount2)
{
case 0:{ R_W=0;break;}
case 1:{ miao2=Outputdata();intcount2++;break;}
case 2:{ fen2=Outputdata();intcount2++;break;
case 3:{ shi2=Outputdata();intcount2++;break;}
case 4:{ ri2=Outputdata();intcount2++;break;}
case 5:{ yue2=Outputdata();intcount2++;break;}
case 6:{ zhou2=Outputdata();intcount2++;break;}
case 7:{ nian2=Outputdata();intcount2++;break;}
case 8:{ ctrl2=Outputdata();intcount2++;break;}
}
}
void Inputaddr_R(unsigned char addr) //写地址为了读 写要读的地址
{
R_W=1; ///read
ADD_DATA=1; //ADD
P1=addr;
}
void Inputaddr_W(unsigned char add) //写地址为了写 写要写的地址
{
R_W=0; ///write
ADD_DATA=1; //ADD
P1=add;
}
void Inputdata(unsigned char din) //向地址中写数据
{
R_W=0; //write
ADD_DATA=0; // DATA
din=P1;
}
unsigned char Outputdata(unsigned char dout) //从地址中读数据
{
R_W=1; //read
ADD_DATA=0; //DATA
dout=P1;
return dout;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -