为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第16课,读一个24c02字节,读出上一课写入的字节来验证

2011-10-29 4页 pdf 57KB 11阅读

用户头像

is_742239

暂无简介

举报
第16课,读一个24c02字节,读出上一课写入的字节来验证 第 16课。写入一个字节到 24c02并读出来验证 本课的程序已经包含了上一颗的内容,增加了读 24c02的函数,请看程序: ――――――――――――――――――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个 52标准内核的头文件 char code dx516[3] _at_ 0x003b;//这...
第16课,读一个24c02字节,读出上一课写入的字节来验证
第 16课。写入一个字节到 24c02并读出来验证 本课的程序已经包含了上一颗的内容,增加了读 24c02的函数,请看程序: ――――――――――――――――――――――――――――― #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个 52内核的头文件 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的 #define WriteDeviceAddress 0xa0 //定义器件在 IIC总线中的地址 #define ReadDviceAddress 0xa1 sbit SCL=P2^7; sbit SDA=P2^6; sbit P10=P1^0; //定时函数 void DelayMs(unsigned int number) { unsigned char temp; for(;number!=0;number--) { for(temp=112;temp!=0;temp--) ; } } //开始总线 void Start() { SDA=1; SCL=1; SDA=0; SCL=0; } //结束总线 void Stop() { SCL=0; SDA=0; SCL=1; SDA=1; } //发 ACK0 void NoAck() { SDA=1; SCL=1; SCL=0; } //测试 ACK bit TestAck() { bit ErrorBit; SDA=1; SCL=1; ErrorBit=SDA; SCL=0; return(ErrorBit); } //写入 8个 bit到 24c02 Write8Bit(unsigned char input) { unsigned char temp; for(temp=8;temp!=0;temp--) { SDA=(bit)(input&0x80); SCL=1; SCL=0; input=input<<1; } } //写入一个字节到 24c02中 void Write24c02(uchar ch,uchar address) { Start(); Write8Bit(WriteDeviceAddress); TestAck(); Write8Bit(address); TestAck(); Write8Bit(ch); TestAck(); Stop(); DelayMs(10); } //从 24c02中读出 8个 bit uchar Read8Bit() { unsigned char temp,rbyte=0; for(temp=8;temp!=0;temp--) { SCL=1; rbyte=rbyte<<1; rbyte=rbyte|((unsigned char)(SDA)); SCL=0; } return(rbyte); } //从 24c02中读出 1个字节 uchar Read24c02(uchar address) { uchar ch; Start(); Write8Bit(WriteDeviceAddress); TestAck(); Write8Bit(address); TestAck(); Start(); Write8Bit(ReadDviceAddress); TestAck(); ch=Read8Bit(); NoAck(); Stop(); return(ch); } //本课试验写入一个字节到 24c02并读出来验证 void main(void) // 主程序 { uchar c1,c2; c1=Read24c02(0x02); Write24c02(0x99,0x03); c2=Read24c02(0x03); P10=0; while(1); //程序挂起 } ―――――――――――――――― 在主程序中,我们将上一课写入的 0x02位置的数据读出来放在 c1中,新写了一个数 据 0x99在 0x03位置中,并立即将它读出来放在 c2中。 编译,运行,等 P10灯亮后。我们看结果。 这次的看结果,我们要在仿真环境中直接看变量。点程序停止,观察 c1和 c2的值, 可以看到,分别为:0x88和 0x99。数据正确! 作业:在 24c02的其他位置和写入不同的字节,用本课的观察结果。
/
本文档为【第16课,读一个24c02字节,读出上一课写入的字节来验证】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索