⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 driverviic.lst

📁 基于MCS-51的电子指南针完整程序包 如果需要原理图的
💻 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 + -