Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
06/11/07 11:52
Read: times


 
#140545 - Commented code
Responding to: ???'s previous message
OK
I had first pasted commented code. It was so horrible.
So I made new txt file for removing all tabs and comments.
I didnt know this inside trick.

AD_MEAS:   MOV A,CH_MEAS        ;WHAT IS TO BE MEASURED        				1
           ANL A,#03h           ;CLEAR MSNIBBLE REMAINDER HAS WHICH CH# TO MEASURE  1
           ANL P3,#11111100b    ;CLR BIT 0&1 OF P3                                  1
           ORL P3,A             ;SELECTS 4052 CHANNEL                               1
           CALL ADSTRT          ;START ADC   A not affected by this routine       2+9
           CLR A                ;
		JNB VA_SEL,VOLTS   ;Bit is Flag for CH1
		MOV A,#01       ;01 means CH1
VOLTS:     CALL GETCNT          ; GET COUNTS MSB IN B, LSB IN A           111
           mov ADCNT,B          ;HI byte                                  1
           mov ADCNT+1,A        ;LO byte
           ret                  ;                                         2

;======================================================
ADSTRT:                                        ;FOR STARTING A/D CONVERSION
           CLR Din              ; MAKE IT LO > OUTPUT                     1TICK
           CLR sclk             ; CLOCK TO BE LOW FIRST                   1TICK
           CLR _CS              ; ENABLE ADC CHIP & START CONEVERSION     1TICK
           SETB Din             ; TOMAKE VALID START BIT                  1TICK
		NOP
		NOP
           SETB sclk            ; THIS ACTUALLY STARTS CONVERSION         1TICK
           NOP                  ;                                         1
		NOP
           CLR sclk             ; NOW 1 CLOCK CYCLE OVER & START BIT SENT 1TICK
           CLR Din              ;
           RET                  ;                                         2TICKS
;==========================================================   TOTAL  =    9TICKS
;GET ADCOUNTS: THIS REQUIRES CHANNEL # IN A 0= CH0   1= CH1
; CHANNEL WORD    CH    MSB  ODD/SIGN  SINGLE/DIFF  ACTUAL WORD
;                 0      1     0          1         0000 0101
;                 1      1     1          1         0000 0111
; WORD IS SHIFTED OUT RIGHT SO LSB = SINGLE
;result 2MSBits in B and 8bits in A
;modified for MCP3002 & 24MHz CRYSTAL 13/04/07

GETCNT:    MOV DPTR,#CHWORD     ;POINTER TO CHWORD                            2
           MOVC A,@A+DPTR       ;GET REQD CHWORD                              2
           MOV R0,#03h          ; 3 BITS TO SEND                              1
                                ;                                   =6INITIAL
NXTBIT:    RRC A                ; GET BIT IN CARRY at this point sclk is low  1
           MOV Din,C            ;SHIFT TO Din PIN                             1
		NOP
           SETB sclk            ; CLK HIGH                                    1
           NOP                  ; 
		NOP                 ;                           1
           CLR sclk             ;                                             1
           DJNZ R0,NXTBIT       ;  SO 7TICKS /BIT  X 3= 21                    2
                                ;ALL 3BITS SENT NOW GET THE DATA BITS
           CLR A                ;                                             1
           MOV B,A              ;A CLRD                                       1
           CLR C                ;                                             1
           SETB SCLK            ; RAISE CLOCK HIGH                            1
           MOV C,DOUT           ; GET NULL BIT DATA                           1
           JC ADERROR           ; IF BIT IS 1 THEN AD PROBLEM          =5TICKS

           MOV R1,#04H          ; GET 4 HIGH BITS FIRST                       1

NXTB2:     CLR SCLK             ;DATA IS OUT ON FALLING EDGE                  1
           NOP                  ; 
           NOP                  ;                                            1
           SETB SCLK            ;READ DATA AFTER RISING EDGE                  1
           MOV C,DOUT           ; READ BIT MSB FIRST                          1
           RLC A                ;                                             1
           DJNZ R1,NXTB2        ;                                             2
                                ;  TOTAL 1+(7X 2 = 14) 15 TICKS
           MOV B,A              ; HI BYTE IN B                                1

           CLR A                ;                                             1
           CLR C                ;                                             1
           MOV R1,#08H          ; LO 8BITS                                    1
                                ;                                      3INITIAL
NXTB8:     CLR SCLK             ;                                             1
           NOP                  ;                                             1
           NOP                  ;
           SETB SCLK            ;                                             1
           MOV C,DOUT           ;                                             1 TICK
           RLC A                ;                                             1TICK
           DJNZ R1,NXTB8        ; 7X8=56                                      2TICKS
                                ; NOW ALL 8BITS IN A  56+3 FOR NXT8
           SETB DIN             ;                                             1
           SETB _CS             ;DESELECT AD FOR NEXT CONVERSION        	1
           RET                  ;2   6+21+6+15+59+4= 111 TICKS FOR 1CONVRSION

ADERROR:   MOV A,#00		  ;								1
           MOV B,#00            ;AD ERROR THEN COUNTS= 00				1
           SETB _CS             ;DESELECT AD FOR NEXT CONVERSION        	1
           RET                  ; CYCLE TIME FOR ADC READING > 70uSec.		2

;==================================================================

The connection to CH0 and CH1 are not drawn but marked as
CH0 CH1 etc. Ch0 is pin 13 of CD4052 and CH1 pin3.

List of 25 messages in thread
TopicAuthorDate
MCP3202 ADC problem            01/01/70 00:00      
   Circuit ?            01/01/70 00:00      
      MCP3202 ADC problem            01/01/70 00:00      
         Testing strategy recommendation            01/01/70 00:00      
            Prototype            01/01/70 00:00      
               Could you specify all parts of your circuit?            01/01/70 00:00      
               What is driving the inputs of CD4052?            01/01/70 00:00      
                  Diagram blues            01/01/70 00:00      
                     Why diode in /CS line of MCP3202?            01/01/70 00:00      
                     Voltage divider directly to input of CD4052?            01/01/70 00:00      
                     Pseudo-differential mode?            01/01/70 00:00      
                        Who cares for Psudo?            01/01/70 00:00      
                           You definitely need buffers at the inputs of ADC!            01/01/70 00:00      
                              No violations            01/01/70 00:00      
      Here is CKT & code            01/01/70 00:00      
         Uncommented, unformatted code :-(            01/01/70 00:00      
            connection to CH0 & CH1            01/01/70 00:00      
               Ckt Diagram            01/01/70 00:00      
            Commented code            01/01/70 00:00      
               Some changes needed            01/01/70 00:00      
                  Formatting Forward Slash - not Backslash!            01/01/70 00:00      
                  Setup problem            01/01/70 00:00      
               Togglings needed while /CS is high?            01/01/70 00:00      
                  toggling CLK doesnt help!            01/01/70 00:00      
      A picture is worth a 1000 words            01/01/70 00:00      

Back to Subject List