📄 bian.c
字号:
/*****************************************
* 程序名称: dt *
* *
* 程序用途: ID模块 *
* 通讯方式: UART *
* 晶振频率:11.0592MHz *
* 开发日期: 2005-01-4 *
*****************************************/
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define SENDNUM 10
void send_data(uchar h);
void send_1(void);
void send_0(void);
uchar TX_COMM[5]={0x01,0x23,0x45,0x67,0x89};
uchar READ_DATA[5]={0x11,0x11};
uchar READ_TIME[5]={0x22,0x22};
uchar SET_TIME[5]={0x33,0x33};
uchar READ_NUMBER[5]={0x55,0x55};
uchar TX_END[5]={0x98,0x76,0x54,0x32,0x10};
sbit BEEP=P3^5;
uchar d[8]={0xFF,0x8f,0x63,0x55,0xf7,0x29,0x7a,0x96};
uchar dd[8]={0x82,0x00,0xF1,0xAE,0xA8};
uchar aa[10];
void send(uchar *ddd)
{
int i,j;
uchar sd[8];
uchar temp=0,temp1,dat[11];
for(j=0;j<5;j++) //行校验
{
dat[2*j]=(ddd[j]&0xf0)>>4;
dat[2*j+1]=ddd[j]&0x0f;
}
for(j=0;j<10;j++)
{
temp=((dat[j]&0x08)>>3)^((dat[j]&0x04)>>2)^((dat[j]&0x02)>>1)^(dat[j]&0x01);
if(temp){dat[j]=(dat[j]<<1)|0x01;}
else{dat[j]=dat[j]<<1;}
}
temp1=0x10;
temp=0;
dat[10]=0; //列校验
for(i=4;i>0;i--)
{
for(j=0;j<10;j++)
{
temp^=((dat[j]&temp1)>>i);
}
if(temp){dat[10]=dat[10]|0x01;}
dat[10]=dat[10]<<1;
temp1=temp1>>1;
temp=0;
}
sd[0]=0xff;
sd[1]=0x80|(dat[0]<<2)|(dat[1]>>3);
sd[2]=(dat[1]<<5)|dat[2];
sd[3]=(dat[3]<<3)|(dat[4]>>2);
sd[4]=(dat[4]<<6)|(dat[5]<<1)|(dat[6]>>4);
sd[5]=(dat[6]<<4)|(dat[7]>>1);
sd[6]=(dat[7]<<7)|(dat[8]<<2)|(dat[9]>>3);
sd[7]=(dat[9]<<5)|dat[10];
for(j=0;j<SENDNUM;j++)
for(i=0;i<8;i++)
send_data(sd[i]);
}
// 主程序
void main(void)
{ uint i=0;
IE=0;
TCON=0x40; TMOD=0x20;
SCON=0x50; TH1=0xFD; //波特率9600 bps(晶振:11.0592MHz)
TR1=1;
BEEP=0;
while(1)
{
// dd[2]=i/256;
//dd[3]=i%256;
send(dd);
i++;
if(i>4000)
i=0;
}
}
void delay(void)
{ _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
}
void lay(void) {uchar i; for(i=0;i<5;i++) delay();}
void send_1(void){BEEP=1;lay();BEEP=0;lay();}
void send_0(void){BEEP=0;lay();BEEP=1;lay();}
void send_data(uchar h)
{
int i;
for(i=0;i<8;i++)
{ if(h&0x80)
{ send_1(); }
else
{ send_0(); }
h=h<<1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -