📄 driverviic.lst
字号:
C51 COMPILER V8.08 DRIVERVIIC 06/18/2008 01:56:31 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE DRIVERVIIC
OBJECT MODULE PLACED IN .\4.Obj\DriverVIIC.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 3.Source\DriverVIIC.c BROWSE INCDIR(.\2.Inc) DEBUG OBJECTEXTEND PRINT(.\5.L
-ist\DriverVIIC.lst) OBJECT(.\4.Obj\DriverVIIC.obj)
line level source
1 /**********************************************************************************************
2 ***模块名称: VIIC.c ***
3 ***模块功能: 端口模拟IIC总线时序 ***
-
4 ***作 者: METAL MAX ,liyangbbs@126.com ***
5 ***调用方式: ***
6 ***日 志: 日期 版本 修改人 事件 ***
7 *** 2008/5/27 V0.01 METAL MAX 搭建程序框架 ***
8 ***备 注: 程序内部采用的软件延迟的方法得到延迟时间 ***
9 **********************************************************************************************/
10 #include <reg52.h>
11 #include <intrins.h>
12 #include "PinDefine.h"
13 bit ack; /* 应答标志位
- */
14
15 /*********************************************************************************************************
-*******************
16 **函数名称: void IICStart()
- **
17 **函数功能: 起动总线函数
- **
18 **入口参数:
- **
19 **出口参数:
- **
20 **具体资源:
- **
21 **调用程序:
- **
22 **备 注:
- **
23 **********************************************************************************************************
-******************/
24 void IICStart(void)
25 {
26 1 SDA = 1; /* 发送起始条件的数据信号
- */
27 1 _nop_();
28 1 SCL = 1;
29 1 _nop_(); /* 起始建立时间大于4.7us,延时
- */
30 1 _nop_();
31 1 _nop_();
32 1 _nop_();
33 1 _nop_();
34 1 SDA = 0; /* 发送起始信号
- */
35 1 _nop_(); /* 起始条件锁定时间大于4μs
- */
36 1 _nop_();
37 1 _nop_();
38 1 _nop_();
39 1 _nop_();
C51 COMPILER V8.08 DRIVERVIIC 06/18/2008 01:56:31 PAGE 2
40 1 SCL = 0; /* 钳住I2C总线,准备发送或接收数据
- */
41 1 _nop_();
42 1 _nop_();
43 1 }
44
45
46 /*********************************************************************************************************
-*******************
47 **函数名称: void IICStop()
- **
48 **函数功能: 结束总线函数
- **
49 **入口参数:
- **
50 **出口参数:
- **
51 **具体资源:
- **
52 **调用程序:
- **
53 **备 注:
- **
54 **********************************************************************************************************
-******************/
55 void IICStop(void)
56 {
57 1 SDA = 0; /* 发送结束条件的数据信号
- */
58 1 _nop_(); /* 发送结束条件的时钟信号
- */
59 1 SCL = 1; /* 结束条件建立时间大于4μs
- */
60 1 _nop_();
61 1 _nop_();
62 1 _nop_();
63 1 _nop_();
64 1 _nop_();
65 1 SDA = 1; /* 发送I2C总线结束信号
- */
66 1 _nop_();
67 1 _nop_();
68 1 _nop_();
69 1 _nop_();
70 1 }
71
72
73 /*********************************************************************************************************
-********************
74 **函数名称: void SendByte(unsigned char dat)
- **
75 **函数功能: 字节数据传送函数
- **
76 **入口参数:
- **
77 **出口参数:
- **
78 **具体资源:
- **
79 **调用程序:
- **
80 **备 注:
C51 COMPILER V8.08 DRIVERVIIC 06/18/2008 01:56:31 PAGE 3
- **
81 **********************************************************************************************************
-*******************/
82 void SendByte(unsigned char dat)
83 {
84 1 unsigned char BitCnt;
85 1
86 1 for (BitCnt=0; BitCnt<8; BitCnt++) { /* 要传送的数据长度为8位
- */
87 2 if ((dat << BitCnt) & 0x80) {
88 3 SDA = 1; /* 判断发送位
- */
89 3 } else {
90 3 SDA = 0;
91 3 }
92 2 _nop_();
93 2 SCL = 1; /* 置时钟线为高,通知被控器开始接
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -