📄 ck.c
字号:
/*****************************************************************************/
//init.c
//功能:初始化
//修改:2007-7-3
//作者:ZYJLCQ
/*****************************************************************************/
#include <regX52.H>
#include"pr/TWJ.h"
//unsigned char code TAB[15]={ 0x30,0x31,0x32,0x33,0x34,0x35,0X36,0X37,0X38,0x39,0X0d,0X0a };
void cpu_init(void)
{
TMOD=0X21;
SCON=0x40;
TH1=0xfd; //14400: tl:fe //9600: tl:fd //7200:tl:fc //4800:tl:fa
TL1=TH1;
ET1=0;
ET0=0;
//ES=1;
RI=0;
TI=0;
TR0=0;
TR1=1;
EX0=1;
IT0=1;// 中断方式选择,1为边沿触发,0为电平触发
ABL;
EA=1;
}
void WBZD(void) interrupt 0 using 3
{
bit st=0; //开始标记
bit cc_flag=0; //出错标记
BYTE i,temp,j,cc,sb;
sb=0;
cc=0;
EA=0;
cc_flag=0;
do{
while(CK_CLK==1)
{
cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
if(CK_DATA==0)st=1;
while(CK_CLK==0)
{
cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
}while(!st);
i=4,temp=0;
do{
while(CK_CLK==1)
{cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
temp<<=1;
if(CK_DATA==0)temp|=0x1,sb++;
while(CK_CLK==0)
{cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
i--;
}while(i);
i=5;
if(temp!=0x0a)
{
cc=0;
if(sb==0);
for(j=0;j<40;j++)
{ //先来校验
do{
while(CK_CLK==1)
{cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
if(CK_DATA==0)temp|=0x1;
temp<<=1;
while(CK_CLK==0)
{cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
i--;
}while(i);
temp>>=1;
revie[j]=temp;
i=5,temp=0;
}
}
else
{
for(j=0;j<40;j++)
{
cc=0;
do{
while(CK_CLK==1)
{cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
if(CK_DATA==0)temp|=0x20;
temp>>=1;
while(CK_CLK==0)
{cc++;
if(cc==250)cc_flag=1;
if(cc_flag)goto loop;
}
cc=0;
i--;
}while(i);
revie[j]=temp;
i=5,temp=0;
}
}
falg_ck=1;
delayx(50);
loop:
EA=1;
}
void CKZD(void) interrupt 4 using 2
{ EA=0;
//TI=0;
//P2_0=~P2_0;
//#pragma ASM
//#pragma ENDASM
/* #pragma asm
mov r0,#0h
#pragma endasm
*/
P0_7=0;
EA=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -