📄 24c16.txt
字号:
-----------------------------------------------------------------
本文件是记录在写24C16程序中出现的问题
-----------------------------------------------------------------
1.
由于89c51没有I2C接口,所以24C16的程序是通过I/O口程序
模拟来实现的.在编写时我为了省事,借用了一个别人的程序.
我读了程序发现并没有什么明显的错误,但当我用它来进行仿真
时发现程序不能很好的运行,产生了许多的问题.
首先是,写程序没法正确的写入数据,总是在等待器件应答时
出错.
其次是,写程序改写后,只能写一个字符,第二个字符写入时
就会和第一次一样,在等待应答时出错.
我最后不得以,自己来编写这个程序,但我还是偷了一些懒,没有
看着器件的说明文件,而是将一个汇编的读写程序改编成了C语言
程序.这会我以为不会有错了,可实际是情况和前面没有什么两样.
只是当只有读程序运行时,读出的数据是正常的,而当两个程序一块
运行时却有不行了.我想了好久都没有想出什么来.我尝试了很多
方法,最后我想到了,在读写程序之间加一个延时程序.开始我只加
几个周期的延时,后来慢慢加到了10000个计数,结果写入的和读出
的居然一样了.这说明了我原先的出错多半是由于在器件还不能
工作时,向器件中写入或读出数据.
------------------------------------------------------------------------
******* 这次写程序使我了解到,在模拟串行总线时除了要时序正确,
同时还得关注总线的操作时间间隔.
2.函数命名
我在编写本程序之前就想过要对自己在编程时出现的编程风格做
做一个明确的统一.所以我借着这个程序对程序的函数命名方式
做了一些规定:
1.所有可以归为一类的器件的调用函数都使用同一个
头,如"IIC_XXX()","LCD_XXX()"等
2.对于一个特定器件,我在头后加一个器件名,如"IIC_24C16_XXX()"
3.最后再在后面加功能函数的名字,如"IIC_24C16_ReadOneChar()"
2006.4.2
张培华
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -