完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int sbit a=P2^2; //138编码器 sbit b=P2^3; //138编码器 sbit c=P2^4; //138编码器 sbit scl=P2^1; sbit sda=P2^0; bit write=0; uchar num1,num; uchar code d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay() { ;;} void start() { sda=1; delay(); scl=1; delay(); sda=0; delay(); } void stop() { sda=0; delay(); scl=1; delay(); sda=1; delay(); } unsigned char writebyte (unsigned char dat) { unsigned char a=0,b=0;//最大255,一个机器周期为1us,最大延时255us。 for(a=0;a<8;a++)//要发送8位,从最高位开始 { sda=dat>>7; //起始信号之后SCL=0,所以可以直接改变SDA信号 dat=dat<<1; delay(); scl=1; delay();//建立时间>4.7us scl=0; delay();//时间大于4us } sda=1; delay(); scl=1; while(sda)//等待应答,也就是等待从设备把SDA拉低 { b++; if(b>200) //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束 { scl=0; delay(); return 0; } } scl=0; delay(); return 1; } uchar readbyte() { uchar i,k; sda=1; delay(); for(i=0;i<8;i++) { scl=1; delay(); k=(k<<1)|sda; delay(); scl=0; delay(); } return k; } void write_byte(uchar address,uchar date) { start(); writebyte(0xa0); writebyte(address); writebyte(date); stop(); } uchar read_byte(uchar address) { uchar date; start(); writebyte(0xa0); writebyte(address); start(); writebyte(0xa1); date=readbyte(); stop(); return date; } void display(uchar shi,uchar ge) { a=0; b=0; c=0; P0=d[ge]; // 将数据送到P0口的数码管 P0=0; a=1; b=0; c=0; P0=d[shi]; P0=0; } void ahead() { sda=1; delay(); scl=1; delay(); } void main() { ahead(); num=read_byte(2); if(num>100) num=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65336-50000)%256; EA=1; ET0=1; TR0=1; while(1) { display(num/10,num%10); if(write==1) { write=0; write_byte(2,num); } } } void t0()interrupt 1 { TH0=(65536-50000)/256; TL0=(65336-50000)%256; num1++; if(num1==20) { num1=0; write=1; num++; if(num==100) num=0; } } 无法进行掉电后数据的保护 |
|
相关推荐
3个回答
|
|
上面的代码读取,写入功能可以实现了?先要确定IIC通信部分没问题了,再走下一步。。。
|
|
|
|
难道我的代码有问题?
|
|
|
|
就这么看也不好判断是不是代码问题,,但是我发现你那个num变量中断里又动过。。。。
能不能先写入固定的值比如128,再读取看看读到的是不是128?如果可以了,再在别的地方用这个代码来进行掉电保护什么的。。。。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
575 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
554 浏览 0 评论
500 浏览 1 评论
482 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
817 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11645 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 03:32 , Processed in 0.484053 second(s), Total 46, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号