ORG 1000H
START: MOV SP,#50H ;初始化堆栈指针
MOV P3,#0FFH ;初始化端口1的I/O管脚
CLR CLK ;设置I/O时钟为低电平
SETB CS ;设置片选信号为高电平
MOV A,#0FFH
ACALL TLC2543;空执行一次转换
ACALL TLC2543
ACALL rs232
TLC2543:
MOV R4,#10110100B ;读模式/通道数据到寄存器R4和A(选择内部测试电平为2.5V,ref+为5v,8位数据模式)
MOV A,R4
CLR CLK
SETB CS
CLR CS ;设置片选信号为低电平
MOV A,R4
AD:#08 ;装载记数器初始值
LOOP1:
MOV C,DOUT ;读数据位到C
RLC A ;A寄存器左移,移入结果数据位,移出方式通道控制位
MOV DIN,C ;输出模式/通道位数据
SETB CLK ;设置I/O时钟为高电平
CLR CLK ;设置I/O时钟为低电平
DJNZ R5,LOOP1 ;循环得到其它位
MOV R2,A ;把转换结果移入R2
RET
rs232:
MOV SCON,#50H ;串口方式1工作,8位数据位,1位停止位,无奇偶校验
MOV TMOD,#20H ;波特率设置,fOSC=6MHz,波特率=2* 1200,N=0F3H
MOV PCON,#80H ;SMOD=1,波特率增倍
MOV TH1,#0F3H
MOV TL1,#0F3H
SETB TR1 ;启动定时器T1
MOV A,r2
MOV SBUF,a
jnb TI,$
CLR TI
RET
END
以下是引用guest在2004-12-6 9:26:35的发言: 采集2543时应该适当延时,尤其发送给2543的时钟信号 |