資源簡介
具有記憶功能的簡易計算器,支持加減乘除和括號運算,且可判斷算式的正確性。

代碼片段和文件信息
#include“i2c.h“
void?Delay10us()
{
????unsigned?char?ab;
????for(b=1;b>0;b--)
????????for(a=2;a>0;a--);
????
}
void?I2cStart()
{
????SDA=1;
????Delay10us();
????SCL=1;
????Delay10us();//建立時間是SDA保持時間>4.7us
????SDA=0;
????Delay10us();//保持時間是>4us
????SCL=0;
????Delay10us();
}
void?I2cStop()
{
????SDA=0;
????Delay10us();
????SCL=1;
????Delay10us();//建立時間大于4.7us
????SDA=1;
????Delay10us();
}
unsigned?char?I2cSendByte(unsigned?char?dat)
{
????unsigned?char?a=0b=0;//最大255,一個機器周期為1us,最大延時255us。
????for(a=0;a<8;a++)//要發送8位,從最高位開始
????{
????????SDA=dat>>7;?????//起始信號之后SCL=0,所以可以直接改變SDA信號
????????dat=dat<<1;
????????Delay10us();
????????SCL=1;
????????Delay10us();//建立時間>4.7us
????????SCL=0;
????????Delay10us();//時間大于4us
????}
????SDA=1;
????Delay10us();
????SCL=1;
????while(SDA)//等待應答,也就是等待從設備把SDA拉低
????{
????????b++;
????????if(b>200)?????//如果超過2000us沒有應答發送失敗,或者為非應答,表示接收結束
????????{
????????????SCL=0;
????????????Delay10us();
????????????return?0;
????????}
????}
????SCL=0;
????Delay10us();
????return?1;
}
unsigned?char?I2cReadByte()
{
????unsigned?char?a=0dat=0;
????SDA=1;????????????//起始和發送一個字節之后SCL都是0
????Delay10us();
????for(a=0;a<8;a++)//接收8個字節
????{
????????SCL=1;
????????Delay10us();
????????dat<<=1;
????????dat|=SDA;
????????Delay10us();
????????SCL=0;
????????Delay10us();
????}
????return?dat;
}
void?At24c02Write(unsigned?char?addrunsigned?char?dat)
{
????I2cStart();
????I2cSendByte(0xa0);//發送寫器件地址
????I2cSendByte(addr);//發送要寫入內存地址
????I2cSendByte(dat);????//發送數據
????I2cStop();
}
unsigned?char?At24c02Read(unsigned?char?addr)
{
????unsigned?char?num;
????I2cStart();
????I2cSendByte(0xa0);?//發送寫器件地址
????I2cSendByte(addr);?//發送要讀取的地址
????I2cStart();
????I2cSendByte(0xa1);?//發送讀器件地址
????num=I2cReadByte();?//讀取數據
????I2cStop();
????return?num;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????????0??2019-01-11?12:04??51+1602璁$畻鍣?
?????文件????????6148??2019-01-10?15:47??51+1602璁$畻鍣?.DS_Store
?????目錄???????????0??2019-01-19?14:53??__MACOSX\
?????文件???????????0??2019-01-19?14:53??__MACOSX\51+1602璁$畻鍣?
?????文件?????????120??2019-01-10?15:47??__MACOSX\51+1602璁$畻鍣?._.DS_Store
?????文件?????????516??2018-12-24?20:19??51+1602璁$畻鍣?lcd.h
?????文件?????????243??2018-12-24?20:19??__MACOSX\51+1602璁$畻鍣?._lcd.h
?????文件????????2045??2018-12-26?17:39??51+1602璁$畻鍣?i2c.c
?????文件?????????243??2018-12-26?17:39??__MACOSX\51+1602璁$畻鍣?._i2c.c
?????文件???????15093??2019-01-11?12:04??51+1602璁$畻鍣?main.c
?????文件?????????716??2019-01-11?12:04??__MACOSX\51+1602璁$畻鍣?._main.c
?????文件???????21638??2019-01-07?21:07??51+1602璁$畻鍣?calculator.hex
?????文件?????????539??2019-01-07?21:07??__MACOSX\51+1602璁$畻鍣?._calculator.hex
?????文件????????1514??2018-12-26?18:12??51+1602璁$畻鍣?lcd.c
?????文件?????????243??2018-12-26?18:12??__MACOSX\51+1602璁$畻鍣?._lcd.c
?????文件?????????322??2018-12-26?17:39??51+1602璁$畻鍣?i2c.h
?????文件?????????243??2018-12-26?17:39??__MACOSX\51+1602璁$畻鍣?._i2c.h
- 上一篇:landmarc定位
- 下一篇:IDL樹高反演 三階段算法直線擬合
評論
共有 條評論