导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→大家好,帮我看段程序~![tianxia1123]

 *第32107篇: 大家好,帮我看段程序~!

  
楼 主:tianxia1123 2005年6月7日21:57
 大家好,帮我看段程序~!
数据采集程序:
ORG 0OOOH
LJMP DATA_SAM
CLK EQU P3.3
DIN EQU P3.4
DOUT EQU P3.5
CS EQU P3.7  
DATA_SAM :   
MOV   R0,30H                  ;数据缓冲区首地址30H→R0
MOV   R1,#00000000B            ;0通道方式/通道数据
ACALL  RD_AD                  ;第一次读取的转换结果可能不准弃。
MOV    R1,#00000000B              ;0通道有效转换开始
ACALL RD-AD
MOV @R0, R2                        ;保存转换结果
INC R0
MOV @R0, R3                        
RET
单片机通过编程产生串行时钟,并按时序发送与接收数据位,完成通道方式/通道数据的写入和转换结果的读出,程序如下,供数据采集模块“DATA_SAM” 调用。
RD-AD:                                    ;TLC2543AD转换子程序,R1内容为控;制字,结果的高;;8位保存在R2,低4位保存;在R3。
CLR CLK                               ; 置CLK为低
SETB CS                               ; 置CS为高
NOP
NOP
CLR CS                                ; 置CS为低,转换开始
MOV  R4,#08                           ; 8位控制字移入TLC2543,高8位;结果移出TLC2543
MOV  A,R1                             ; 控制字装入A中
LOOP1:
MOV C,DOUT                            ; 读转换结果
RLC A                                 ; A寄存器左移,移入结果数据,移出方式/通道控制位
MOV DIN,C                             ; 1位控制字移入TLC2543
SETB CLK                              ; 设置I/O时钟为高
NOP
NOP
NOP
CLR CLK                                ;清I/O时钟口
DJNZ R4, LOOP1                         ; R4不为0。则返回LOOP1
MOV R2, A                              ; 结果的高8位装入R2
MOV A, #00H                            ; 复位A寄存器
MOV R4, #04                            ; 读取低4位转换结果
LOOP2:
MOV C, DOUT                            ;读转换结构
RLC A                                  ;A寄存器左移,移入结果数据位
SETB CLK
NOP
NOP
NOP
CLR CLK                                ;清I/O时钟口
DJNZ R4, LOOP2                         ;R4不为0则返回LOOP2
MOV R3, A                              ;低4位转换结果装入R3
SETB CS                                ;设置片选为高
RET
错误的是DATA_SAM块中的那2条
MOV @R0,R2   331错误
INC R0
MOV @R0,R3   331错误
我查了TLC2543和单片机AT89C2051的编程,人家都是这样遍的,为什么我用软件仿真的时候会出错~!


  
2楼:edawn 2005年6月9日21:11
 程序不能这样写的,请仔细看看汇编语言指令这一章.
MOV @R0,R2   331错误
INC R0
MOV @R0,R3   331错误

可以改为:
MOV  @R0,#70H
INC   R0

  
3楼:cshnaclt 2005年6月10日13:39
 标准51的汇编代码一定要通过累加器倒换数
标准51的汇编代码一定要通过累加器倒换数据.另外,不知是否有笔误,RD_AD有时为下划线,但有时又是减号.

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:[原创]数组的调用问题

[下一篇主题]:一款朴实实用的CPLD开发板(支持ISPLSI1016芯片,可以下载上万次,价格只有128元/套)