单片机IO引脚模拟串口程序芯片解密
| 芯片解密#include"STC15W4K.H" 芯片解密#define RECEIVE_MAX_BUTES 1 //最大接收字节数 unsigned char RecvBuf[16]; //接收数据缓冲区 unsigned char RecvCount=0; //接收数据计数器 sbit T_TXD=P3^2; //发送数据引脚 sbit R_RXD=P3^3; //接收数据引脚 bit RXD_OK; //数据接收完成标志,1接收正确 ,0接收错误 void delay104us() { unsigned char i,j,k; for(i=1;i>0;i--) // 注意后面没分号 for(j=3;j>0;j--) // 注意后面没分号 for(k=189;k>0;k--); // 注意后面有分号 } void delay52uS() // 起始位结束后52uS采样数据 { unsigned char i,j,k; for(i=1;i>0;i--) // 注意后面没分号 for(j=3;j>0;j--) // 注意后面没分号 for(k=93;k>0;k--); // 注意后面有分号 } voidsenbyte(unsigned char dat) { unsigned char i=8; //发送8位数据 T_TXD =0; //发送起始位 delay104us(); while(i--) { if(dat&1) T_TXD=1; else T_TXD=0; delay104us(); dat>>=1; } T_TXD=1; //发送停止位 delay104us(); } unsigned char recvbyte() { unsigned char i; unsigned char dat=0; //接收到的数据 RXD_OK=0; //字节数据接收正常标志位 delay52us(); //数据位中心位置读取数据 if(R_RXD==0) //确认起始位正常 { delay104us(); //起始位宽度 for(i=0;i<8;i++) { if(R_RXD) dat|=(1<<i); delay104us(); } if(R_RXD==1) //确认停止位正常 { RXD_OK=1; } } return dat; } |
上一篇:格雷码与二进制转换芯片解密

芯片解密