| ??? 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. |



