📄 time1.c
字号:
unsigned int time_buf[6],time_buf2[6];
unsigned int time_flag_zxb;
extern int d_b_addr,portc_new,porta_new,portb_new;
extern unsigned char xizi[][16],long_tisi;
extern volatile int *C82_ADD2;
extern volatile int *C82_ADD;
volatile int *TRC_ADD=(volatile int *)0x81c000;
#define sclk_time C82_ADD2[0x01] //bit PB0 82_2 0x810000;
#define sd_time C82_ADD[0x02] //bit PC6 82_1
unsigned int r_time[6]={0x00,0x01,0x02,0x04,0x05,0x06};
unsigned int w_time[6]={0x80,0x81,0x82,0x84,0x85,0x86};
#define W_CONTROL 0x8f //0x9F //11111001
#define W_STATUS 0x90 //0x0A1 //10000101
#define W_TRICKLE 0x91 //0xA3 //11000101
/****************************************/
/*************中断的考虑*****************/
/****************************************/
/*入口:C82_ADD2[0x03]=0x00009100; C(0~3):IN C(4~7): OUT A:OUT B:OUT*/
/* C82_ADD[0x03]=0x00008000 C:OUT A;OUT B:OUT */
void time_io(unsigned int RTC_REG,unsigned int write_count,unsigned int *data_addr)/*注意与其他PC PB PA 口冲突*/
{ unsigned int i,temp,*time_byte_zxb;
time_byte_zxb=data_addr;
temp=RTC_REG;
sclk_time=0x00000000; /*对USB 口的BUSY信号有影响*/
TRC_ADD[0]=0x00; /*ke yi bu yong yao*/
asm(" nop");asm(" nop");asm(" nop");
for(i=0;i<8;i++)
{
sclk_time=0x00000000;
if((temp&0x01)==0x01)
/*sd_time=0x00004000;*/
C82_ADD[0x03]=0x00000D00;
else
/*sd_time=0x00000000;*/
C82_ADD[0x03]=0x00000C00;
asm(" nop");asm(" nop");asm(" nop");
asm(" nop");asm(" nop");asm(" nop");
sclk_time=0x00000100;
asm(" nop");asm(" nop");asm(" nop");
asm(" nop");asm(" nop");asm(" nop");
temp=temp>>1;
}
temp=0x0080&RTC_REG;
if(temp!=0)
{temp=write_count;
for(i=0;i<8;i++)
{sclk_time=0x00000000;
if((temp&0x01)==0x01)
sd_time=0x00004000;
else
sd_time=0x00000000;
asm(" nop");asm(" nop");asm(" nop");
asm(" nop");asm(" nop");asm(" nop");
sclk_time=0x00000100;
asm(" nop");asm(" nop");asm(" nop");
asm(" nop");asm(" nop");asm(" nop");
temp=temp>>1;
}
sclk_time=0x00000000;
}
else
{
C82_ADD[0x03]=0x00008800;/*C(0~3):OUT C(4~7): IN A:OUT B:OUT*/
for(i=0;i<8;i++)
{
sclk_time=0x00000000;
asm(" nop");asm(" nop");asm(" nop");
asm(" nop");asm(" nop");asm(" nop");
temp=((sd_time&0x004000)>>(14-i))|temp;
sclk_time=0x00000100;
asm(" nop");asm(" nop");asm(" nop");
asm(" nop");asm(" nop");asm(" nop");
}
*time_byte_zxb=temp;
sclk_time=0x00000000;
}
TRC_ADD[0]=0x00;
C82_ADD[0x03]=0x00008000;
portb_new=portb_new | 0x18;
C82_ADD[1]=portb_new<<8;
C82_ADD[0x02]=portc_new<<8;
C82_ADD[0]=porta_new<<8;
}
void wr_time_zxb()
{
unsigned int i;
for(i=0;i<7;i++)
time_io(w_time[i],time_buf[i],time_buf);
}
void rd_time_zxb()
{
unsigned int i;
for(i=0;i<7;i++)
time_io(r_time[i],1,time_buf2+i); //
}
void initclock_zxb()
{
time_io(W_CONTROL,0,time_buf);
time_io(W_TRICKLE,0x0a6,time_buf);
time_buf[0]=0x56;
time_buf[1]=0x40;
time_buf[2]=0x14;
time_buf[3]=0x23;
time_buf[4]=0x08;
time_buf[5]=0x05;
wr_time_zxb();
time_io(W_CONTROL,0x40,time_buf2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -