资源简介
使用STC的12C5A60S2单片机
因为要测试IIC通信协议,研究了好久终于改出来了,本程序适用于AT24c64 E2PROM芯片
代码片段和文件信息
/*
本程序基于郭天祥《51单片机C语言教程》第188页改写,使用STC的12C5A60S2单片机
因为要测试IIC通信协议,研究了好久终于改出来了,本程序适用于AT24c64 E2PROM芯片
需要注意的是:
24C64与24C02的地址指针长度不同,是16位的指针,而24C02是8位指针
其次就是12c5a60s2的速度很快,需要修改延时函数(经示波器测试)
使用的是11.0592MHZ的晶振,SDA为P3.4 SCL为P3.5引脚
地址是000 即A0 A1 A2都接地 串口波特率为9600可自行修改
功能:随便往串口发送一个数据(内容无所谓,只要产生串口中断就行)会返回你写入EEPROM中的数据
于山西农业大学信息学院双体系Cat‘s lab.
15.7.9
如果可以的话本程序使用GPL授权:)
*/
#include <12c5a60s2.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P3^4;
sbit scl=P3^5;
uchar Rx_flag=0; //串口接收标志
uint RecData; //串口接收到的数据
uint SendData; //串口需要发送的数据
void delay() //12c5a60s2单片机 11.0592MHZ时延时4-5us
{
uchar ab;
for(b=1;b>0;b--)
for(a=9;a>0;a--);
}
void start()//IIC起始信号
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop()//IIC停止信号
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void respons() //IIC应答信号
{
uchar i ;
scl=1;
delay();
while ((sda==1)&&(i<250))i++;
scl=0;
delay();
}
void init() //IIC初始化
{
sda=1;
delay();
scl=1;
delay();
}
void write_byte(uchar date) //在任意地址 写一个字节的数据
{
uchar itemp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_byte() //在任意地址 读一个字节的数据
{
uchar ik;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}
void write_add(uchar addresshuchar addressluchar date)//写地址,参数为地址高八位和地址低八位还有数据内容
{
start();
write_byte(0xa0);
respons();
write_byte(addressh);
respons();
write_byte(addressl);
respons();
write_byte(date);
respons();
stop();
}
uchar read_add(uchar addresshuchar addressl)//读地址,参数为地址高八位和地址低八位
{
uchar date;
start();
write_byte(0xa0);
respons();
write_byte(addressh);
respons();
write_byte(addressl);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
return date;
}
void Uart_init(void)
{
TMOD = 0x20; //T1 方式2
PCON = 0x00; //SMOD = 0
SCON = 0x50; //方式1 8个数据位
TH1=0xfd; //波特率为9600 11.0592Mhz
TL1=0xfd;
TR1 = 1; //启动定时器1
ES=1; //开串口中断
EA=1; //开总中断
}
void main()
{
delay();
init();
Uart_init(); //串口初始化
delay();
write_add(020xAA); //向EEPROM的0x0002地址写数据,内容为0xAA可自行修改<----会向上位机串口助手返回的数据
delay();
while(1)
{
/*sda=1; //示波器测试延时时间用
delay();
sda=0;
delay();*/
SendData=read_add(02);//Senddata是要发送给上位机的数据
if(Rx_flag)
{
SBUF=SendData; //将数据放入缓冲区
while(!TI); //等待发送完毕
TI=0; //清中断
Rx_flag=0; //清除接收标志
}
}
}
void Uart_rec(void) interrupt 4 using 1 //串口中断服务程序
{
if(RI) //接收中断标志被置位说明串口已经接收到数据
{
RI=0; //清除中断标志
RecData=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17731 2014-05-20 13:09 12c5a60s2.h
文件 9062 2015-07-09 10:06 at24c64
文件 3607 2015-07-09 10:09 at24c64.c
文件 1533 2015-07-09 10:06 at24c64.hex
文件 47 2015-07-09 10:06 at24c64.lnp
文件 8100 2015-07-09 10:06 at24c64.LST
文件 14224 2015-07-09 10:06 at24c64.M51
文件 9761 2015-07-09 10:06 at24c64.OBJ
文件 401 2015-07-09 10:06 at24c64.plg
....... 55634 2015-07-09 10:10 at24c64.uvopt
....... 13399 2015-07-09 10:10 at24c64.uvproj
....... 5624 2015-07-09 10:06 at24c64_uvopt.bak
....... 13429 2015-07-09 10:06 at24c64_uvproj.bak
文件 6376 2009-05-07 14:37 STARTUP.A51
文件 14048 2015-07-09 10:06 STARTUP.LST
文件 749 2015-07-09 10:06 STARTUP.OBJ
....... 71272 2015-07-09 10:06 at24c64.uvgui.Administrator
----------- --------- ---------- ----- ----
244997 17
- 上一篇:七个RBF神经网络的源程序
- 下一篇:西安交通大学 数理统计 施雨 版 课后题答案
相关资源
- STC12C5A60S2的最小系统PCB库
- STC12c5a60s2最小系统
- 采用STC12C5A60S2单片机作为主控芯片实
- STC12C5A60S2封装库213985
- STC12C5A60S2内部PWM-DA程序
- stc12c5a60s2头文件
- stc12c5a60s2的PWM占空比可调
- STC12C5A60S2 AD转换程序
- STC12c5a60s2封装,LQFP-44_M原理图和pcb封
- stc12c5a60s2单片机两路pwm
- 用STC12C5A60S2写的超声波C程序
- 基于STC12C5A60S2的DS18B20温度显示工程
- stc12c5a60s2的头文件
- STC12C5A60S2简单的AD转换程序
- 基于STC12C5A60S2自带AD转换和TL5615芯片完
- STC12C5A60S2的内部AD和PWM的程序
- STC89c51/52及STC12C5A60S2单片机原理图和
- 呼吸灯STC12C5A60S2
- STC12C5A60S2详细例程 20多个例程
- STC12C5A60S2内部AD+LCD1602显示
- STC12C5A60S2LQFP44封装完整的原理图以及
- STC12C5A60S2与MLX90614红外温度传感器程序
- stc12c5a60s2 PID PWm
- STC12C5A60S2手指心跳检测程序
- STC12C5A60S2_AD转换12864显示程序
- STC12C5A60S2.H头文件
- 贴片12c5a60s2原理图autim designer 含封装
- 贴片STC12C5A60S2的原理图和PCB库
- STC12C5A60S2 实现双串口应用及红外解析
- STC12C5A60S2自带ADC采集电压信号+DS18B2
评论
共有 条评论