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

📄 max517c3.lst

📁 单片机C语言教程
💻 LST
字号:
C51 COMPILER V8.02   MAX517C3                                                              08/11/2007 18:03:47 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAX517C3
OBJECT MODULE PLACED IN MAX517C3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAX517C3.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*************************************************************/
   2          /* 这是MAX517 C51语言程序-不是调用汇编的,文件名为MAX517C3.C  */
   3          /* 功能:本程序是实现MAX517芯片的D/A转换。程序中转换的十六    */
   4          /*   进制值依次为10H,20H,40H,80H,0FFH,00H, OUT脚输出转换后    */
   5          /*   的模拟信号,它既可用万用表的直流电压档测试,也可用示波器 */
   6          /*   的探头点在此处观察。                                     */
   7          /**************************************************************/
   8          #include <reg52.h>                              // 引用标准库的头文件
   9          #include <intrins.h>
  10          
  11          #define uchar unsigned char
  12          #define uint unsigned int
  13          
  14          sbit SDA = P1^0;                                // MAX517串行数据
  15          sbit SCL = P1^1;                                // MAX517串行时钟
  16          uchar i;
  17          
  18          void delay(uint t)      // 延时t毫秒
  19          {
  20   1              uint i;
  21   1              while(t--)
  22   1              {
  23   2                      for (i=0;i<125;i++) // 对于12M时钟,约延时1ms
  24   2                      {}
  25   2              }
  26   1      }
  27          void start(void)  // 起始条件子程序
  28          {
  29   1              SDA = 1;
  30   1              SCL = 1;
  31   1              _nop_();
  32   1              SDA = 0;
  33   1              _nop_();
  34   1      }
  35          void stop(void)   // 停止条件子程序
  36          {
  37   1              SDA = 0;
  38   1              SCL = 1;
  39   1              _nop_();
  40   1              SDA = 1;
  41   1              _nop_();
  42   1      }
  43          void ack(void)   // 应答子程序
  44          {
  45   1              SDA = 0;
  46   1              _nop_();
  47   1              SCL = 1;
  48   1              _nop_();
  49   1              SCL = 0;
  50   1      }
  51          void send(uchar ch) // 发送数据子程序,ch为要发送的数据
  52          {
  53   1              uchar BitCounter = 8;   //位数控制
  54   1              uchar tmp;                                    //中间变量控制
  55   1              do
C51 COMPILER V8.02   MAX517C3                                                              08/11/2007 18:03:47 PAGE 2   

  56   1              {
  57   2                      tmp = ch;
  58   2                      SCL = 0;
  59   2                      _nop_();
  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          void DACOut(uchar ch) // 串行DA转换子程序
  73          {
  74   1              start();                                                // 发送启动信号
  75   1              send(0x58);                                     // 发送地址字节
  76   1              ack();
  77   1              send(0x00);                                     // 发送命令字节
  78   1              ack();
  79   1              send(ch);                                               // 发送数据字节
  80   1              ack();
  81   1              stop();                                                 // 结束一次转换
  82   1      }
  83          void main(void)      // 主程序
  84          {
  85   1          SP=0xcf;
  86   1          delay(2000);
  87   1          i=0x10;          // 对数字0x10作数模转换
  88   1          DACOut(i);
  89   1          delay(2000);     // 延时约2s
  90   1          i=0x20;          // 对数字0x20作数模转换
  91   1          DACOut(i);
  92   1          delay(2000);     // 延时约2s
  93   1          i=0x40;
  94   1          DACOut(i);
  95   1          delay(2000);
  96   1          i=0x80;
  97   1          DACOut(i);
  98   1          delay(2000);
  99   1          i=0xff;
 100   1          DACOut(i);
 101   1          delay(2000);
 102   1          i=0x00;
 103   1          DACOut(i);
 104   1          delay(2000);
 105   1              while(1)
 106   1              { // 对数字0~255进行数模转换
 107   2                    for (i=0;i<=255;i++)
 108   2              {
 109   3              delay(1000);                    // 间隔约1s
 110   3                  DACOut(i);                    // 调用串行DA转换子程序
 111   3              }
 112   2                   delay(2000);                               // 延时2s
 113   2          }
 114   1      }
 115          
 116          
 117          
C51 COMPILER V8.02   MAX517C3                                                              08/11/2007 18:03:47 PAGE 3   

 118          


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


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

⌨️ 快捷键说明

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