我的程序如下:基本上照抄的网站的原帖
org 0000h
acall main
clk equ p3.3 ;定义tlc2543功能引脚与mcu的连接
din equ p3.4
dout equ p3.5
cs equ p3.7
org 0200h
main:
acall data_sam
acall init_com
acall rs232
acall delay2s
jmp main
delay2s:
mov r6,#5
dd:acall delay100
djnz r6,dd
ret
delay100:mov r4,#255
d2:mov r5,#248
djnz r5,$
djnz r4,d2
ret
data_sam: ;串行数据采集模块
mov r0,#30h ;数据缓冲区首地址30h→r0
mov r1,#00000100b ;0通道方式/通道数据
acall rd_ad ;第一次读取的转换结果可能不准确,丢弃。
mov r1,#00000100b ;1通道方式/通道数据
acall rd_ad ;送1通道方式/通道数据并读第0通道转换结果
mov a,r2
mov @r0,a ;转换结果存放到数据缓冲区
ret
rd_ad:
clr clk ;清i/o时钟
setb cs ;设置片选为高
mov r4,#08 ;先读高8位
mov a, r1 ;把方式/通道控制字放到a
clr cs ;设置片选为低
lop1:
mov c,dout ;读转换结果
rlc a ;a寄存器左移,移入结果数据位,移出方式/通道控制位
mov din,c ;输出方式/通道位
setb clk ;设置i/o时钟为高
clr clk ;清i/o时钟
djnz r4,lop1 ;r4不为0,则返回lop1
mov r2,a ;转换结果的高8位放到r2中
ret
init_com:
mov scon,#50h ;串口方式1工作,8位数据位,1位停止位,无奇偶校验
mov pcon,#80h ;smod=1,波特率增倍
mov tmod,#20h ;波特率设置,fosc=12mhz,波特率=2* 2400,n=0f3h
mov th1,#0f3h
mov tl1,#0f3h
setb tr1 ;启动定时器t1
ret
rs232: ;串行数据传输模块
mov r0,#30h ;缓冲区首地址30h→r0
loop:
mov a,@r0 ;取数据→a
mov sbuf,a ;数据→sbuf
ret
end
电路图如:

各位高手帮我看看程序哪里出问题了。我用的是8位数据做试验,但pc端显示收到的数据总是ff,郁闷