历史上的今天
今天是:2024年12月11日(星期三)
2019年12月11日 | AVR(M48)的i2c程序,读写at24c02
2019-12-11 来源:elecfans
//ICC-AVR application builder : 2007-12-5 17:34:01
// Target : m48
// Crystal: 1.0000Mhz
#include #include #include //#include #define START 0x08 #define ReSTART 0x10 #define MT_SLA_ACK 0x18 #define MT_DATA_ACK 0x28 #define MR_SLA_ACK 0x40 #define MR_DATA_ACK 0x50 #define MR_DATA_NACK 0x58 #define SLA_W 0xA0 #define SLA_R 0xA1 #define ADDRESS 0x00 #define DATA 0x55 void port_init(void) { //set LED PIN output DDRC |= (1< PORTD = 0xF0;PORTC = 0x0F; } void Error() { USART_Transmit(TWSR & 0xF8); while(1) LedBlk(); } //****TWI_ByteW()****// void TWI_ByteW(unsigned char add,unsigned data) { TWCR = (1< if((TWSR & 0xF8) != START) //check Error(); TWDR = SLA_W; //send SLA_W TWCR = (1< if((TWSR & 0xF8) != MT_SLA_ACK) //check Error(); TWDR = add; //send address TWCR = (1< if((TWSR & 0xF8) != MT_DATA_ACK) //check Error(); TWDR = data; //send data TWCR = (1< if((TWSR & 0xF8) != MT_DATA_ACK) //check Error(); TWCR = (1< Delayus(150); } //****TWI_CByteR()****// unsigned char TWI_CByteR() { TWCR = (1< if((TWSR & 0xF8) != START) //check Error(); TWDR = SLA_R; //send SLA_R TWCR = (1< if((TWSR & 0xF8) != MR_SLA_ACK) //check Error(); TWCR = (1< if((TWSR & 0xF8) != MR_DATA_NACK) //check Error(); TWCR = (1< return TWDR; } //****TWI_ByteR()****// unsigned char TWI_ByteR(unsigned char add) { TWCR = (1< if((TWSR & 0xF8) != START) //check Error(); TWDR = SLA_W; //send SLA_W TWCR = (1< if((TWSR & 0xF8) != MT_SLA_ACK) //check Error(); TWDR = add; //send address TWCR = (1< if((TWSR & 0xF8) != MT_DATA_ACK) //check Error(); TWCR = (1< if((TWSR & 0xF8) != ReSTART) //check Error(); TWDR = SLA_R; //send SLA_R TWCR = (1< if((TWSR & 0xF8) != MR_SLA_ACK) //check Error(); TWCR = (1< if((TWSR & 0xF8) != MR_DATA_NACK) //check Error(); TWCR = (1< return TWDR; } void main(void) { unsigned char data; CLI(); port_init(); USART_Init(); SEI(); TWI_ByteW(0x00,0xA0); TWI_ByteW(0x01,0xA1); TWI_ByteW(0x02,0xA2); TWI_ByteW(0x03,0xA3); TWI_ByteW(0x04,0xA4); TWI_ByteW(0x05,0xA5); TWI_ByteW(0x06,0xA6); TWI_ByteW(0x07,0xA7); TWI_ByteW(0x08,0xA8); TWI_ByteW(0x09,0xA9); USART_Transmit(TWI_ByteR(0x00)); USART_Transmit(TWI_ByteR(0x01)); USART_Transmit(TWI_ByteR(0x02)); USART_Transmit(TWI_ByteR(0x03)); USART_Transmit(TWI_ByteR(0x04)); USART_Transmit(TWI_ByteR(0x05)); USART_Transmit(TWI_ByteR(0x06)); USART_Transmit(TWI_ByteR(0x07)); USART_Transmit(TWI_ByteR(0x08)); USART_Transmit(TWI_ByteR(0x09)); }
史海拾趣
|
诺基亚8210 CPU 诺基亚 8210 CPU可以与诺基亚8250、8850、8855、5210、3210 、3310、6210的CPU代换,型号有V11、V12、V16、V18、V19,其中8210、8850大多采用V11、V18,升级为8250、8855时应该换成V16的CPU。 ...… 查看全部问答> |
|
CPU:PXA270 64M Nor Flash:S29G512N上创建TFFS文件系统,修改了相关的文件,但是tffsShow也总是返回失败,查了些资料,有说室MMU的问题,有说是中断的问题,按提示做了修改,还是有问题: -> tffsShow 0: **** communication failed with err ...… 查看全部问答> |
|
使用mini2440板的wince5 接通无线网卡后,重启发现无线网卡没有启动,需要拔下usb插头再插上才可以继续使用无线网卡。 如何使重启后直接就可以使用无线网卡,不需要重新拔插接头,谢谢! 或者有没有程序使得无线网卡驱动在开机时自动运行? … 查看全部问答> |
|
我用的是vc2005来开发TE2004的arm版,已经成功可以运行了。但是不知道可不可以在vc2005中插入arm汇编,来进行速度的提升?还是一定要在linux下用arm+linux才能使用arm汇编?希望得到大家的帮助。… 查看全部问答> |
|
8019网络芯片收到了数据包但不产生中断信号,是什么原因?小菜鸟请教各位大侠,谢谢了. 8019的接收LED指示灯闪,表示已经接收到数据包,但是我用示波器看了一下8019没有产生中断信号,估计是寄存器配置的问题,不过我已经将中断屏蔽寄存器写入了0xff,是还有其它的寄存器需要配置吗? 我看了一下8019的数据手册,第三页里面有一个CONFIG1的寄 ...… 查看全部问答> |
|
因为手头正好有一块TI LM3S6965的开发板,最近想学习有关串口转以太网,所以拿着板子,根据 TI 的S2E源码在调试,在看telnet.c程序时有点不解,没找到把以太网数据存到ringbuf的相关代码,研究一短时间有点费解,有研究过S2E源码的大虾能帮忙解答下 ...… 查看全部问答> |
|
在日常生活和学习中充斥着高新技术的今天,“低技术”表达的是回归自然和传统,去挖掘人类早已拥有的聪明才智。低技术不要求我们一味地追求技术的尖端化,但其所展现的科技成果和科学理念同样精彩。本文将通过一部寻光机器人的制作,向大家展示 ...… 查看全部问答> |
|
做浮点数的乘法加减,结果怎么都不对,求好心人来帮忙分析下原因? 板子的芯片型号是MSP430F2618, 之前计算采集数据一直出现问题,后来发现是浮点数数据处理这里 为了测试方便,我简化了代码,大概就是下面这个样子: float A = 800.0; float tempfloat ; float coefficient = 0.2733;//系数 tempfloat = A*c ...… 查看全部问答> |
|
1> 为什么要加密,如何加密? 当您的产品推向市场的时候,您的竞争对手就开始盯上它了,如果您的产品硬件很容易被模仿,而且您使用的MSP430单片机没有被加密的话, 那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了,使用JTAG调试工具FET ...… 查看全部问答> |




