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

📄 tlc2543.lst

📁 用软件仿真模数转换芯片TLC2543
💻 LST
字号:
C51 COMPILER V7.06   TLC2543                                                               08/15/2008 16:35:13 PAGE 1   


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

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h> 
   3          #define uchar unsigned char
   4          #define uint  unsigned int
   5          uchar a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
   6          0x6f};//共阴极段码
   7          uchar b[4];//存放4位要显示的数
   8          
   9          sbit CLOCK=P2^7; /*2543时钟*/
  10          sbit D_IN=P2^6; /*2543输入*/
  11          sbit D_OUT=P2^4; /*2543输出*/
  12          sbit _CS=P2^5; /*2543片选*/
  13          
  14          
  15          void mdelay(uint z)//1ms延时子程序
  16          {
  17   1              uint x,y;
  18   1              for(x=z;x>0;x--)
  19   1                      for(y=110;y>0;y--);
  20   1      }
  21          
  22          void delay(uchar n)
  23          {
  24   1      uchar i;
  25   1      for(i=0;i<n;i++)
  26   1      {
  27   2         _nop_();
  28   2      }
  29   1      }
  30          /**************************************
  31            名称:read2543
  32            功能:TLC2543驱动模块
  33            输入参数:port通道号
  34            输出参数:ad转换值
  35          *************************************/
  36          
  37          uint read2543(uchar port)
  38          {
  39   1      uint ad=0,i;
  40   1      CLOCK=0;
  41   1      _CS=0;
  42   1      port<<=4;//通道号左移4位
  43   1      for(i=0;i<12;i++)//没有设置控制字,默认输出数据为12位,高位先送出,输出数据的格式为2进制
  44   1      {
  45   2        if(D_OUT) ad|=0x01;//转换后的值高位先送出
  46   2        D_IN=(bit)(port&0x80);//通道值高位先送出
  47   2        CLOCK=1;
  48   2        delay(3);
  49   2        CLOCK=0;
  50   2        delay(3);
  51   2        port<<=1;
  52   2        ad<<=1;
  53   2      }
  54   1      _CS=1;
  55   1      ad>>=1;//循环中多左移了一位
C51 COMPILER V7.06   TLC2543                                                               08/15/2008 16:35:13 PAGE 2   

  56   1      return ad; 
  57   1      }
  58          
  59          
  60          void show(void)//数码管显示子程序
  61          { 
  62   1              uint i;
  63   1              uchar c=0x01;
  64   1              for(i=0;i<4;i++)
  65   1              {
  66   2                      P1=(c<<i);
  67   2                      P3=b[i];
  68   2                      if(i==2)//显示小数点
  69   2                      P3=P3|0x80;
  70   2                      mdelay(1);
  71   2              }
  72   1      }
  73          void main(void)
  74          {
  75   1              uint ad=0;
  76   1              while(1)
  77   1              {
  78   2                      ad=read2543(0);
  79   2                      ad=ad*1.0/4096*500;//注意这一步不能写成 ad=ad*500/4096
  80   2                      b[0]=a[ad%10];//个位
  81   2                      b[1]=a[ad%100/10];//十位
  82   2                      b[2]=a[ad/100];//百位
  83   2                      b[3]=a[ad/1000];//最高位始终为0
  84   2                      show();
  85   2              
  86   2                      
  87   2              }
  88   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    316    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20       4
   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 + -