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

📄 serialdac.lst

📁 串行DA MAX517测试程序,测试通过
💻 LST
字号:
C51 COMPILER V7.20   SERIALDAC                                                             07/26/2007 16:42:37 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE SERIALDAC
OBJECT MODULE PLACED IN SerialDAC.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE SerialDAC.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*****************************************/
   2          /* Copyright (c) 2005, 通信工程学院      */
   3          /* All rights reserved.                  */
   4          /* 作    者:戴 佳                                           */
   5          /*****************************************/
   6          
   7          #include "SerialDAC.h"
   8          
   9          /* 延时t毫秒 */
  10          void delay(uint t)
  11          {
  12   1              uint i;
  13   1              while(t--)
  14   1              {
  15   2                      /* 对于12M时钟,约延时1ms */
  16   2                      for (i=0;i<125;i++)
  17   2                      {}
  18   2              }
  19   1      }
  20          
  21          /* 起始条件子函数 */
  22          void start(void)
  23          {
  24   1              SDA = 1;
  25   1              SCL = 1;
  26   1              _nop_();
  27   1              SDA = 0;
  28   1              _nop_();
  29   1      }
  30          
  31          /* 停止条件子函数 */
  32          void stop(void)
  33          {
  34   1              SDA = 0;
  35   1              SCL = 1;
  36   1              _nop_();
  37   1              SDA = 1;
  38   1              _nop_();
  39   1      }
  40          
  41          /* 应答子函数 */
  42          void ack(void)
  43          {
  44   1              SDA = 0;
  45   1              _nop_();
  46   1              SCL = 1;
  47   1              _nop_();
  48   1              SCL = 0;
  49   1      }
  50          
  51          /* 发送数据子程序,ch为要发送的数据 */
  52          void send(uchar ch)
  53          {
  54   1              uchar BitCounter = 8;                   //位数控制
  55   1              uchar tmp;                                              //中间变量控制
C51 COMPILER V7.20   SERIALDAC                                                             07/26/2007 16:42:37 PAGE 2   

  56   1              do
  57   1              {
  58   2                      tmp = ch;
  59   2                      SCL = 0;
  60   2                      if ((tmp&0x80)==0x80)           //如果最高位是1
  61   2                              SDA = 1;
  62   2                      else
  63   2                              SDA = 0;
  64   2                      SCL = 1;
  65   2                      tmp = ch<<1;                            //左移
  66   2                      ch = tmp;
  67   2                      BitCounter--;
  68   2              }
  69   1              while(BitCounter);
  70   1              SCL = 0;
  71   1      }
  72          
  73          /* 串行DA转换子函数 */
  74          void DACOut(unsigned int ch)
  75          {
  76   1              start();                                                // 发送启动信号
  77   1              send(0x58);                                             // 发送地址字节
  78   1              ack();
  79   1              send(0x00);                                             // 发送命令字节
  80   1              ack();
  81   1              send(ch);                                               // 发送数据字节
  82   1              ack();
  83   1              stop();                                                 // 结束一次转换
  84   1      }
  85          
  86          /* 主函数 */
  87          void main(void)
  88          {
  89   1      //      unsigned int i;
  90   1              while(1)
  91   1              {
  92   2                      
  93   2             // for (i=200;i<=255;i++)
  94   2              //{
  95   2              //      delay(2000);                                    // 间隔约2s
  96   2              
  97   2                              DACOut(200);
  98   2                                                                              // 调用串行DA转换子函数
  99   2             //}
 100   2              //      delay(2000);                                            // 延时2s
 101   2          }
 102   1      }
 103          
 104          
 105          
 106          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    125    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.20   SERIALDAC                                                             07/26/2007 16:42:37 PAGE 3   


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -