📄 rf_test.c.bak
字号:
#include"reg51.h"
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_() /* 定义空操作指令 */
sbit in =P3^4;
sbit out =P3^6;
sbit en =P1^7; /*DTLED-6显示芯片使能端*/
sbit dout =P1^6; /*DTLED-6显示芯片数据读入端*/
sbit clk =P1^3;
uchar dat_1,dat_2;
bit inter_psw=0; /*DTLED-6显示芯片/时钟芯片DS1302时钟输入端*/
uchar dispbuf[9]={0,0,0,0,0,0,0,1,0}; /*显示值存放阵列*/
void delay (uint value) /*延时副程式*/
{
while (value!=0) value--; /*10US延时*/
}
/**********************************************/
void DL(void)
{
uchar i;
for(i=0;i<7;i++)
{
delay(7000);
}
}
/*********************************************/
void tsled(void) /*串行发送DTLED-6显示副程式*/
{
char ts0,i,j;
clk=0;
en=0;
delay(10);
for(j=0;j<9;j++)
{ ts0=dispbuf[j];
for(i=0;i<4;i++) /*发小数点码8,4,2,1*/
{
clk=1;
ts0=ts0<<1;
if(AC==1)
dout=1;
else dout=0;
clk=0;
nop;
delay(3);
}
}
en=1;
} /*返回主程式*/
/**********************************************************************************/
void process(void)
{
uchar i;
EA=0;
for(i=0;i<8;i++)
{
delay(102);
if(in)goto pro_end;
}
while(!in)nop;
delay(544);
for(i=0;i<8;i++)
{
while(!in)nop;
delay(102);
if(!in){dat_1=dat_1>>0x01;}
else {delay(114);dat_1=(dat_1>>0x01)|0x80;}
}
delay(544);
for(i=0;i<8;i++)
{
while(!in)nop;
delay(102);
if(!in){dat_2=dat_2>>0x01;}
else {delay(114);dat_2=(dat_2>>0x01)|0x80;}
}
if(dat_1==0xc4&&dat_2<0x20)
{
EA=0;
dispbuf[1]=dat_2&0x0f;
dispbuf[2]=dat_2>>4;
dispbuf[3]=0x04;
dispbuf[4]=0x0c;
tsled();
EA=1;
DL();
}
pro_end:;
EA=1;
}
/*************************************************************/
void T0_count(void)interrupt 1 using 1
{
inter_psw=1;
}
/*************************************************************/
void main(void)
{
dat_1=0x00;
dat_2=0x00;
TMOD=0x06; //T1工作方式2
TH0=0xff;
TL0=0xff;
EA=1;
ET0=1;
TR0=1;
tsled();
while(1)
{
if(inter_psw){process();inter_psw=0;}
}
}
/**************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -