完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
////*****重庆三峡学院电子与信息工程学院 创新实验室 唐老鸭*****////
#ifndef __24C02_H__ #define __24C02_H__ #include "msp430g2553.h" // 寄存器头文件包含 #define OP_READ 0xa1 // 器件地址以及读取操作 #define OP_WRITE 0xa0 // 器件地址以及写入操作 #define uchar unsigned char #define uint unsigned int #define SDA_OUT P1DIR|=BIT3 #define SDA_IN P1DIR&=~BIT3 #define SCL_OUT P1DIR|=BIT2 #define SCL_IN P1DIR&=~BIT2 #define SDA_H P1OUT|=BIT3 #define SDA_L P1OUT&=~BIT3 #define SCL_H P1OUT|=BIT2 #define SCL_L P1OUT&=~BIT2 //8M晶振时大约20us延时程序 void delayus(uint z) { uint i,j; for(i = 0;i<20;i++) for(j=0;j } // 开始位 void start() { SDA_OUT; SCL_OUT; SDA_H; SCL_H; delayus(1); //20 SDA_L; delayus(2);//40 SCL_L; } // 停止位 void stop() { SDA_OUT; SCL_OUT; SDA_L; delayus(2);//20 SCL_H; delayus(2); SDA_H; } // 从AT24Cxx移入数据到MCU uchar shin() { uchar i,read_data; SDA_OUT; SCL_OUT; for(i = 0; i < 8; i++) { SDA_H; delayus(1); SCL_H; SDA_IN; read_data <<= 1; if(P1IN&BIT3) read_data|=0x01; SDA_OUT; SCL_L; } return(read_data); } // 从MCU移出数据到AT24Cxx uchar shout(uint write_data) { uchar i; uchar ack_bit; SDA_OUT; SCL_OUT; for(i = 0; i < 8; i++) // 循环移入8个位 { if(write_data&0x80) SDA_H; else SDA_L; delayus(2);//2 SCL_H; delayus(2);//2 SCL_L; delayus(2);//2 write_data <<= 1; } SDA_H; // 读取应答 delayus(2); SCL_H; //注意拉高 delayus(2); SDA_IN; if(P1IN&BIT3) ack_bit=1; else ack_bit=0; SCL_L; return ack_bit; // 返回AT24Cxx应答位 } // 在指定地址addr处写入数据write_data void write_byte(uchar addr, uchar write_data) { SDA_OUT; SCL_OUT; SDA_H; SCL_H; start(); shout(OP_WRITE); shout(addr); shout(write_data); stop(); delayus(1000); // 写入周期 } // 在当前地址读取 uint read_current() { uint read_data; start(); shout(OP_READ); read_data = shin(); stop(); return read_data; } // 在指定地址读取 uchar read_random(uint random_addr) { SDA_IN; SCL_OUT; SDA_H; SCL_H; start(); shout(OP_WRITE); shout(random_addr); return(read_current()); } #endif |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2937个成员聚集在这个小组
加入小组2680 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3003 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2273 浏览 1 评论
4703 浏览 1 评论
2484 浏览 1 评论
952浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3005浏览 2评论
2681浏览 1评论
1082浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-2 08:15 , Processed in 1.024820 second(s), Total 41, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191