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

📄 2543adc.txt

📁 2543A/D转换源码
💻 TXT
字号:
AD12:NOP             ;TLC2543 A/D转换子程序
      NOP             ;入口:R1=通道号,R0=上一工作周期转换的数据高8位存放的内存地址
      NOP             ;入口:[@R0,@R0+1]有上一周期采集数的高8位,低4位
      CLR P1.5        ;I/O CLOCK=0
      SETB P1.4       ;令-CS=1 
      NOP
      CLR P1.4        ;令-CS=0,以上两句使-CS产生一次由高到低的变化,开始一个工作周期
      MOV A,R1        ;通道号赋给A
      SWAP A          ;高低4位交换后,使得A中的数成为控制字,因为控制字的低4位为0
      MOV R2,#08H     ;循环8次

AD1:  MOV C,P1.7      ;DATA OUT 位赋给C,即取得TLC2543输出一味数据
      RLC A           ;A带进位左移
      MOV P1.6,C      ;C赋给DATA IN,即控制字的一位输入TLC2543
      SETB P1.5       ;产生一个时钟脉冲(I/O CLOCK)	
      CLR P1.5
      DJNZ R2,AD1     ;循环8次
      MOV @R2,AD1     ;取出的上一个工作周期A/D数据的高8位,放入·R0
      MOV A,R1
      MOV A,R1
      SWAP A
      MOV R2,#04H     ;循环4次,取出上一工作周期A/D数据的低4位
      
AD2:  MOV C,P1.7      ;DATA OUT一位赋给C,即TLC2543输出一位数据   
      RLC A           ;A带进位左移
      MOV P1.6,C      ;C赋给DATA IN一位,即控制字的一位输入TLC2543
      SETB P1.5       ;产生一个时钟脉冲(I/O CLOCK)
      CLR P1.5
      DJNZ R2,AD2     ;循环4次
      INC R0          ;取出的上一工作周期A/D数据的低4位,放入@(R0+1)中
      MOV @R0,A
      SETB P1.4       ;置-CS=1
      RET



以下是利用上述子程度采集0 通道数据放入内存21H、22H,采集1 通道数据放入内存
23H、24H 的主程序。注意其中调用了三次子程序,而第一次调用取出的数据是随机数。

CJDZ:  NOP             ;采集AIN0-AIN1 2个通道数据放入内存21H-24H
       NOP             ;启动0通道转换,本次取出的数据为无效数据
       MOV R1,#00H     ;通道号=0,赋给R1
       MOV R0,#21H     ;输出数据的高8位将存放的内存地址,赋给R0
       LCALL AD12      ;调TLC2543 A/D转换子程序
       NOP             ;启动1通道转换,取出0通道数据放入内存21H,22H
       MOV R1,#01H     ;通道号=1,赋给R1
       MOV RO,#21H     ;上一工作周期转换的数据高8位将存放的内存地址,赋给R0
       LCALL AD12      ;调TLC2543 A/D转换子程序
       NOP             ;启动0通道转换,取出0通道数据放入内存23H,24H
       MOV R1,#00H     ;通道号=0,赋给R1
       MOV R0,#23H     ;上一工作周期转换的数据高8位将存放的内存地址,赋给R0
       LCALL AD12      ;调TLC2543 A/D转换子程序
       RET  

⌨️ 快捷键说明

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