资源简介
stc12c5a60s2 51单片机作为i2c从设备,加密芯片+红外+串口
代码片段和文件信息
/*****************************************************************************
程序名:
编写人:dragon101788
I2C协议具体描述:
0x50 开始算密码
0x51 密码第1字节
0x52 密码第2字节
0x53 密码第3字节
0x54 密码第4字节
0x55 密码第5位
0x56 密码第6位
0x57 密码第7位
0x58 密码第8位
*****************************************************************************/
#include // 包含头文件
#include
#include
unsigned char code secret_key[8]={‘1‘‘9‘‘8‘‘8‘‘1‘‘0‘‘1‘‘7‘};
unsigned char random[8]={0x55‘2‘};
sbit IR_INT=P3^2;
sbit LED=P3^4;
sbit LED2=P3^5;
//#define I2C_TIMEOUT 200
unsigned int i2c_timeout;//超时时间
#define I2C_TIMEOUT (i2c_timeout*2+5)
unsigned char I2CsADDR=0x17;
sbit I2CsCLK=P1^1;
sbit I2CsDAT=P1^0;
unsigned char dat[4] = {0000}; //用于存放按键码值,初始化为 0000 0000
void RSHash()
{
char i;
unsigned char a=0;
unsigned char hash=0;
for(i = 0; i < 8; i++)
{
a = random[i]+hash;
hash += a;
random[i]=secret_key[hash%8]*hash;
}
}
/*****************************************************************************
UART 串口初始化函数
振荡晶体为 12MHz,PC 串口端设置 [ 4800,8,无,1,无 ]
*****************************************************************************/
void UART_Init (void)
{
EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
ES = 1; //允许UART 串口的中断
TMOD = 0x20; //定时器 T/C1 工作方式 2
SCON = 0x50; //串口工作方式 1,允许串口接收
TL1 = 0xF9; //定时器初值低 8 位设置,修改此处的值来修改波特率
TH1 = 0xF3; //定时器初值高 8 位设置,修改此处的值来修改波特率
PCON = 0x80; //波特率倍频
TR1 = 1; //定时器启动
}
/*****************************************************************************
UART 串口接收中断处理函数
*****************************************************************************/
void UART_R (void) interrupt 4 using 1
{
unsigned char ch; //定义串口接收数据变量
//LED=!LED;
RI = 0; //令接收中断标志位为 0(软件清零)
ch = SBUF; //将接收到的数据送入变量 UART_data
putchar(ch);
}
int i2s_wait_low()
{
int i;
for(i=0;i {
if(I2CsCLK==0)
{
i2c_timeout=i;
return i;
}
}
return -1;
}
int i2s_wait_high()
{
int i;
for(i=0;i {
if(I2CsCLK==1)
{
return i;
}
}
return -1;
}
int i2s_send_ack()
{
//int i;
//低电平变化
i2s_wait_low();
I2CsDAT=0;
//高电平稳定
i2s_wait_high();
return 0;
}
int i2s_read_ack()
{
//int i;
//低电平变化
i2s_wait_low();
//高电平稳定
i2s_wait_high();
return (I2CsDAT==0);
}
void i2s_stop()
{
int i;
i2s_wait_high();
for(i=0;i {
if(I2CsCLK==0)
{
LED=0;
I2CsDAT=1;
return;
}
}
}
char i2s_read_byte(unsigned char * pbyte)
{
char i;
//int ret;
unsigned char byte;
for(i=0;i<8;i++)
{
if(i2s_wait_low()<0)
{//STOP位
I2CsDAT=1;
return -1;
}
I2CsDAT=1;
if(i2s_wait_high()<0)
{
return -1;
}
byte<<=1;
byte|=I2CsDAT;
}
*pbyte=byte;
return 0;
}
char i2s_send_byte(unsigned char * pbyte)
{
char i;
//int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15744 2013-06-13 11:35 加密+i2c\dragon
文件 7030 2013-06-13 11:35 加密+i2c\dragon.hex
文件 76 2013-06-13 11:35 加密+i2c\dragon.lnp
文件 23834 2013-06-13 11:35 加密+i2c\dragon.M51
文件 26568 2013-05-22 12:22 加密+i2c\dragon.plg
文件 73540 2013-06-09 17:37 加密+i2c\dragon.uvgui.Administrator
文件 73521 2013-06-08 09:23 加密+i2c\dragon.uvgui_Administrator.bak
文件 6386 2013-06-09 17:37 加密+i2c\dragon.uvopt
文件 13777 2013-05-22 19:31 加密+i2c\dragon.uvproj
文件 6389 2013-06-08 09:23 加密+i2c\dragon_uvopt.bak
文件 13622 2013-05-21 22:24 加密+i2c\dragon_uvproj.bak
文件 7715 2013-06-13 11:35 加密+i2c\main.c
文件 15238 2013-06-13 11:35 加密+i2c\main.LST
文件 14625 2013-06-13 11:35 加密+i2c\main.OBJ
文件 4800 2013-06-13 11:35 加密+i2c\PUTCHAR.lst
文件 1093 2013-06-13 11:35 加密+i2c\PUTCHAR.obj
文件 6376 2009-05-07 14:37 加密+i2c\STARTUP.A51
文件 14048 2013-06-13 11:35 加密+i2c\STARTUP.LST
文件 749 2013-06-13 11:35 加密+i2c\STARTUP.OBJ
目录 0 2013-06-13 11:53 加密+i2c
----------- --------- ---------- ----- ----
325131 20
- 上一篇:鼠标获取OpenGL模型的坐标
- 下一篇:240128液晶程序
相关资源
- STM32F4 串口DMA发送接收方式代码例程
- Qt从零开始制作串口调试助手源代码(
- modbus串口通讯程序,源程序
- 串口调试常用命令
- 基于单片机和红外接近开关的图书馆
- STM32 红外遥控
- Qt QSerialPort 通信 源码
- FPGA蓝牙串口实验
- TCP转串口socket转SerialPort
- LD3320语音识别模块与Arduino软串口通讯
- 基于 Arduino 红外控制的智能机械手的
- 温度显示、超声波测距、光敏D/A显示
- QT5串口通信Hex格式传输
- STM32F407 US100 USART串口超声波
- LabVIEW串口调试助手287024
- 最简单的labview串口助手
- 基于ram的简易串口数据收发系统
- Qt 实现串口控制台,适配RT-Thread的F
- 红外接近开关PCB+原理图
- 温湿度监测和串口通讯
- pic单片机spi双机通信
- 红外温度测温成功mxl90614
- atlas枪串口读取数据
- Qt串口接收数据实时曲线
- stm32f030+PWM->IR红外(38K)自定义格式
- FPGA串口8位转32位收发数据
- LM393红外避障PCB+原理图
- pc串口控制流水灯的程序
- 51单片机串口通讯
- arduino uno + ESP8266 搭建的天气预报平台
评论
共有 条评论