导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]关于AD转换的程序TLC1543的片子[sqtang]

 *第12184篇: [求助]关于AD转换的程序TLC1543的片子

  
楼 主:sqtang 2003年5月18日12:24
 [求助]关于AD转换的程序TLC1543的片子
请各位高手帮我分析一下这个程序,调试了两天没有通过,郁闷啊。。。。。。
显示结果总是 001.采集电压调了以后还是没有显示的变化。

EOC     BIT   P1.3;   AD1543连接
IOCLK   BIT   P1.4
ADDR    BIT   P1.5 
DOUT    BIT   P1.6
CS5     BIT   P3.7

CS9    BIT    P3.6    ; DA5615定义,CS低电平有效,DOUT 数据输出,用于级连
DI     BIT    P1.0
SCLK   BIT    P1.1 

DIN               BIT     P3.5 ; MAX7219连接   
LOAD             BIT     P3.4
CLK              BIT     P3.3

ADH_DATA         EQU        26H; AD转换后的高位数据

ADL_DATA          EQU        27H; AD转换后的低位数据

DATATEMP                EQU        32H

DAH_DATA          EQU        28H; DA要转换的高位数据

DAL_DATA           EQU        29H; DA要转换的低位数据

ADADDRESS           EQU       30H; AD要转换的的通道地址

DATATEMP            EQU       31H

LED1         EQU  25H

LED2            EQU  24H

LED3             EQU  23H

LED4             EQU  22H

LED5             EQU  21H

LED6             EQU  20H

LED7             EQU    19H

LED8             EQU    18H

DR0                     EQU     10H

DR1                     EQU     11H

INT_R0                  EQU     12H

INT_R1                  EQU     13H

INT_R2                  EQU     14H

BUZT1                   EQU     15H

BUZT2                   EQU     16H

BUZT3                   EQU     17H

DIGIT0           EQU    01H

DIGIT1           EQU    02H

DIGIT2         EQU    03H

DIGIT3         EQU   04H

DIGIT4           EQU    05H

DIGIT5           EQU    06H

DIGIT6           EQU    07H

DIGIT7          EQU    08H

DECODE_MODE  EQU    09H

INTENSITY        EQU    0AH

SCAN_LIMIT       EQU    0BH

SHUTDOWN         EQU    0CH

FLASH_CON        EQU    0DH

SLEEP_STATE      EQU    0EH    

DISPLAY_TEST     EQU    0FH


STACK_TOP        EQU     6aH

org 0000h
AJMP   START
ORG 0080H
START: mov sp,#STACK_TOP
MOV  ADADDRESS,#02H; 选择转换的通道为A2通道
 
LCALL  AD1543

MOV  DATATEMP,ADL_DATA ;取低八位中的高四位
MOV  A,ADL_DATA
ANL  A,#11110000B
SWAP A
MOV ADL_DATA,A
MOV A,DATATEMP;取低八位中的低四位
ANL  A,#00001111B
MOV DATATEMP,A

DISPLAY: clr     ea
 
 clr     load
 
 lcall   t1s
 
 

 MOV LED1,ADH_DATA

 MOV LED2,ADL_DATA

 MOV LED3,#DATATEMP

 MOV LED4,#0fH

 MOV LED5,#0fH

 MOV LED6,#0fH

 MOV LED7,#0fH

 MOV LED8,#0fH

  LCALL    T1S

         MOV      DR0,#00H

  MOV      DR1,#SHUTDOWN            

  LCALL    TRT 

  LCALL  T1S   

  LCALL  T1S

  MOV      DR0,#04h

         MOV      DR1,#INTENSITY              

         LCALL    TRT                         

         LCALL    T2mS                       

         MOV      DR0,#07H

         MOV      DR1,#SCAN_LIMIT           

         LCALL    TRT                         

         LCALL    T2mS                      

         MOV      DR0,#0FFH

         MOV      DR1,#DECODE_MODE         

         LCALL    TRT                        

  LCALL    T2mS    

        MOV      DR0,#01H

  MOV      DR1,#SHUTDOWN            

  LCALL    TRT 

  LCALL  T1S

 main:  LCALL LED_COM   
 
                ajmp  main
                
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

;%%%               %%%

;%%%   SUBPROC OF LED_COM                %%%

;%%%               %%%

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

dlbuz1s:  

mov buzt3,#18h

dlbuz30ms:  mov buzt2,#0ffh

dlbuz128us: mov buzt1,#0ffh

dlbuz1us: djnz buzt1,dlbuz1us

  djnz buzt2,dlbuz128us

  djnz buzt3,dlbuz30ms

  ret

LED_COM:             

        LCALL    T1S

        MOV      DR0,#01H

   MOV      DR1,#SHUTDOWN            

   LCALL    TRT 

   LCALL  T1S   

                            

        LCALL    T1S                         

        MOV      DR0,LED1

        MOV      DR1,#DIGIT0                  

       LCALL    TRT                         

        LCALL    T1S                         

        MOV      DR0,LED2

        MOV      DR1,#DIGIT1                  

        LCALL    TRT                         

        LCALL    T1S                                                      

        MOV      DR0,LED3

        MOV      DR1,#DIGIT2                  

        LCALL    TRT                         

        LCALL    T1S               

        MOV      DR0,LED4

        MOV      DR1,#DIGIT3                  

        LCALL    TRT                         

        LCALL    T1S                        

        MOV      DR0,LED5

        MOV      DR1,#DIGIT4                  

        LCALL    TRT                         

        LCALL    T1S                      

        MOV      DR0,LED6

        MOV      DR1,#DIGIT5                  

        LCALL    TRT                         

        LCALL    T1S                           

        MOV      DR0,LED7

        MOV      DR1,#DIGIT6                  

        LCALL    TRT                         

        LCALL    T1S                                  

        MOV      DR0,LED8   

        MOV      DR1,#DIGIT7                  

        LCALL    TRT                         

        LCALL    T1S  

      ; mov             dr0,#01h
        
      ; mov             dr1,#display_test
        
      ; lcall           trt
        
      ; lcall           t5s
        
      ; mov             dr0,#00h
        
      ; mov             dr1,#display_test
        
     ;  lcall           trt
        
    ;   lcall           t5s
        
   ;    mov             dr0,#0ffh
       
  ;     mov             dr1,#flash_con
 ;       
;       lcall           trt 
        
        
       RET

TRT:                                           

  CLR      LOAD                     

         NOP        

  NOP                            

         MOV      R2,#08H                     

         MOV      A,DR1  

         CLR  CLK                      

T_1:                     

         RLC      A                           

         MOV      DIN,C  

         nop

         nop

                SETB     CLK       

         LCALL    T88                         

         CLR      CLK

         LCALL    T88                          

         DJNZ     R2,T_1   

         LCALL    T88                                   

               MOV      R2,#08H                      

         MOV      A,DR0                         

T_2:     

       CLR      CLK

   LCALL  T88

      RLC      A

         MOV      DIN,C

       nop 

         nop

       nop

     SETB     CLK 

     LCALL    T88

         DJNZ     R2,T_2

         SETB     LOAD 

         LCALL    T88   

         CLR  CLK                   

         LCALL    T88

         RET

T88:     MOV      INT_R1,#02H                 

TSM0:  MOV      INT_R0,#01FH

TSM1:  DJNZ     INT_R0,TSM1

        DJNZ     INT_R1,TSM0

        RET

t12ms: mov r6,#0ffh

t12ms2: mov r7,#0ffh

t12ms1: djnz r7,t12ms1

   djnz r6,t12ms2

   ret

T2mS:  MOV     INT_R1,#18H                 

TSM:   MOV     INT_R0,#0FFH

TSM6:  DJNZ    INT_R0,TSM6

        DJNZ    INT_R1,TSM

        RET

T1S:     MOV     INT_R1,#01H                

TSM3:  MOV     INT_R0,#0FFH

TSM4:  DJNZ    INT_R0,TSM4

        DJNZ    INT_R1,TSM3

        RET

T500mS: MOV     INT_R2,#10H                 

TSM8:  MOV     INT_R1,#0FFH

TSM5:  MOV     INT_R0,#0F0H

TSM7:  DJNZ    INT_R0,TSM7

        DJNZ    INT_R1,TSM5

        DJNZ    INT_R2,TSM8

         RET

T5S:    MOV     INT_R2,#02FH                

TSM9:  MOV     INT_R1,#0FFH

TSMA:  MOV     INT_R0,#0FFH

TSMB:  DJNZ    INT_R0,TSMB

         DJNZ    INT_R1,TSMA

         DJNZ    INT_R2,TSM9

         


AD1543:  SETB   CS5
         clr   EOC        
         CLR    ADDR
         CLR    IOCLK;     初始化
         MOV    PSW,#00H;  ; 清状态寄存器
         
         MOV  A,#0BH ;测试地址
         SWAP   A;         取4位地址
         LCALL  DATA_IN;   调用转换子程序
         SETB CS5
         
         MOV A,ADADDRESS
         SWAP  A
     WAIT:NOP
           NOP 
          JNB EOC,WAIT
           NOP
         LCALL DATA_IN
         SETB CS5
         
         ;MOV A,ADADDRESS
         ;SWAP A
      ;WAIT2:NOP
           ;JNB EOC,WAIT2           
         ;LCALL DATA_IN         
         ;SETB CS5
         
         MOV    R3,A;      转换结果的低8字节放入寄存器R3
         MOV    A,R2;      读转换结果的高8字节到A
         RL     A;         取高两位
         RL     A;
         ANL    A,#03H             
         MOV    R2,A;     转换结果的高2位放入R2
         
        MOV  ADH_DATA, R2;高两位存入ADH_DATA
        MOV  ADL_DATA,R3;低八位存入ADL_DATA
        RET

;********** 子程序 *************
DATA_IN: CLR CS5
        MOV    R5,#10;       I/O CLOCK脉冲次数放入R5
         
        LOOP1:  MOV    C,DOUT;     读转换数据到C
          RLC    A;             转换数据移到A的最低位,通道地址移入C
          MOV    ADDR,C;        写通道地址       
          NOP
          SETB   IOCLK;         置I/O CLOCK为高
          LCALL  DELAY
          NOP
          LCALL DELAY
          CLR    IOCLK
          LCALL DELAY
          CJNE   R5,#02H,LOOP2;  判断8个数据是否送完?未完则跳转
          MOV    R2,A;          转换结果高8位放入A
LOOP2:    DJNZ   R5,LOOP1;     10个脉冲是否结束?没有则跳转
          RET
         

DELAY:MOV 51h,#0FFH
DELAY1:DJNZ 51h,DELAY1
RET

END


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

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


[上一篇主题]:请教老古等大侠

[下一篇主题]:老古:关于你的PCI驱动卡的一些问题,请售后服务,谢谢!