第17课写入按键次数到24c02并读出来显示在4个LED上.pdf

返回 相似 举报
第17课写入按键次数到24c02并读出来显示在4个LED上.pdf_第1页
第1页 / 共4页
第17课写入按键次数到24c02并读出来显示在4个LED上.pdf_第2页
第2页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述:
第第 17 课,写入按键次数到课,写入按键次数到 24c02,并读出来显示在,并读出来显示在 4 个个 LED 上。并脱机运行验证结果。上。并脱机运行验证结果。 这一课我们用 24c02 完成一个实际应用的场合,在 24c02 中记录按键次数并用二机制 显示在 4 个 LED 上。下次开机时,将继续显示上次的按键次数。这些工作在工控领域有十 分广泛的应用。 我们将在第一次运行过后,再断点,学习 DX516 的脱机运行,并看运行结果。 define uchar unsigned char //定义一下方便使用 define uint unsigned int define ulong unsigned long include //包括一个 52 标准内核的头文件 char code dx516[3] _at_ 0 x003b;//这是为了仿真设置的 define WriteDeviceAddress 0 xa0 //定义器件在 IIC 总线中的地址 define ReadDviceAddress 0 xa1 sbit SCLP27; sbit SDAP26; sbit P10P10; sbit K1P32; //定时函数 void DelayMsunsigned int number { unsigned char temp; for;number0;number-- { fortemp112;temp0;temp-- ; } } //开始总线 void Start { SDA1; SCL1; SDA0; SCL0; } //结束总线 void Stop { SCL0; SDA0; SCL1; SDA1; } //发 ACK0 void NoAck { SDA1; SCL1; SCL0; } //测试 ACK bit TestAck { bit ErrorBit; SDA1; SCL1; ErrorBitSDA; SCL0; returnErrorBit; } //写入 8 个 bit 到 24c02 Write8Bitunsigned char { unsigned char temp; fortemp8;temp0;temp-- { SDAbit SCL1; SCL0; 1; } } //写入一个字节到 24c02 中 void Write24c02uchar ch,uchar address { Start; Write8BitWriteDeviceAddress; TestAck; Write8Bitaddress; TestAck; Write8Bitch; TestAck; Stop; DelayMs10; } //从 24c02 中读出 8 个 bit uchar Read8Bit { unsigned char temp,rbyte0; fortemp8;temp0;temp-- { SCL1; rbyterbyte1; rbyterbyte|unsigned charSDA; SCL0; } returnrbyte; } //从 24c02 中读出 1 个字节 uchar Read24c02uchar address { uchar ch; Start; Write8BitWriteDeviceAddress; TestAck; Write8Bitaddress; TestAck; Start; Write8BitReadDviceAddress; TestAck; chRead8Bit; NoAck; Stop; returnch; } //写入按键次数到 24c02,并读出来显示在 4 个 LED 上 void mainvoid // 主程序 { uchar c1,c2; while1 { c1Read24c020 x01; //读出 24c02 第一个地址数据 P1c1; //显示在 P1 口的 4 个 LED 上 ifK1 //按键处理 { c1; //值加 1 Write24c02c1,0 x01; //重新写入 24c02 whileK1; //等待按键松开 forc20;c2250;c2; //松开按键去抖 } } } 程序中,不断读出 24c02 的 0 x01 位置的数据出来,并显示在 P1 口上,我们可以在 4 个 LED 上观察到低 4 位的数据变化。 当检查到按键时,就将前面读出来的值加 1,写入在 24c02 中的同一个位置中。下一 个循环中,值又被读出来并显示。 编译,联机,并运行。不断按 K1,可以看到 P1 的 4 个 LED 不断以二机制变化显示。 下面我们试验脱机运行方式脱机运行方式,并验证 24c02 的非挥发特性。 我们记住目前的 led 显示状态,再将 dx516 后面 usb 取电板拔下。使 Dx516 仿真器断 电。再将仿真器上旁边的一个跳线跳到“RUN”的位置,这时仿真器就会像一个烧好了程 序的 51 芯片一样工作,这就是 DX516 的脱机运行工作方式,这种方式对特殊的调试有很大 的帮助,进入脱机方式后,就会直接运行上次调试过的程序。 跳好线之后,请重新插上 usb 取电板,上电。可以看到 dx516 上面的蓝灯闪烁 3 次, 表示进入了脱机运行方式,并开始全速运行上次用户调试过的程序。 我们可以直接看到 4 个 LED 的显示状况, 和上次断电之前是一样的。 按 K1, 4 个 LED 又继续按照二机制方式加 1。程序继续正常工作。 好,试验完成,我们将脱机运行的跳线,跳回到“EMB”方向,以便下一次课程继续 仿真运行。 作业 修改为用 24c02 的另一个位置 0 x08 保存数据。并用 DX516 脱机运行方式验证。
展开阅读全文

资源标签

最新标签

长按识别或保存二维码,关注学链未来公众号

copyright@ 2019-2020“矿业文库”网

矿业文库合伙人QQ群 30735420