一.存储器介绍
1.易失性存储器/RAM
全称:RamdomAccessMemory
百度百科:它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器(如硬盘)中。
①SRAM(静态RAM) steady
- 用电路储存,CPU用到,速度最快,容量小
②DRAM(动态RAM)
- 用电容充放电的高低电平来存储,通常配一个扫描电路,给它补电
2.非易失性存储器/ROM
全称:non-volatile memory
百度百科:是指当电流关掉后,所存储的数据不会消失的电脑存储器,缺点是存储比较慢
①Mask ROM(掩膜ROM):只读不写

②PROM(可编程ROM):只能写一次

- 编程时左边给高电平、下边给0可以把蓝色的二极管击穿,实现可写,所以也叫烧录程序哈哈
③EPROM(可擦除可编程ROM):可写
④E2PROM(电可擦除可编程ROM):5V几毫秒就能擦除
⑤Flash(内存):
⑥硬盘、软盘、光盘等:通过磁介质传递
二.AT24C02介绍

三.I2C

1.起始&终止

2.发送/接受字节


👆注意主机和从机,在SDA中紫色是从机,黑色是主机
应答可以作为第九位
- 主机释放了SDA(给SDA置1)变成高电平,把控制权给从机
- 此时从机可以操控发1或发0
- 当SCL拉低,从机自动将下一位数据放到总线上
3.发送/接收应答

应答可以作为数据的第九位
用来判断从机是否应答或者主机是否发送应答

呜呜呜呜呜呜呜呜呜呜从1:15:21开始,代码不能正常运行呜呜呜呜呜呜呜呜呜呜放弃了放弃了
四.学到了啥
感觉比较有用的是在定时器里调用函数,同时对不同模块函数计时
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count1,T0Count2;
TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值
T0Count1++;
if(T0Count1>=20) //20ms返回一次1或0
//通过记录上一次和这一次的返回值判断是按下还是松开
{
T0Count1=0;
Key_Loop();//这时候Key函数无中生有,有了自己的中断
}
T0Count2++;
if(T0Count2>=2)
{
T0Count2=0;
Nixie_Loop();
}
}
Key_Loop Nixie_Loop
只需要改变T0Count>=x就可以有针对的计时
这个loop函数相当于绕了一个圈把子函数调用了一次,但是起码起到了计时的作用