Developer Home Contents Search Contact Us Support Intel(r)

8XC196KR: Using the A/D Scan Mode


This techbit describes one implementation of the A/D scan mode using the PTS on the 8XC196KR. The PTS cycles are initiated by the A/D Done interrupt. The example shown, uses the A/D Done interrupt to trigger consecutive PTS cycles.

1.0 Introduction

      1. More uniform latency time from setting AD_DONE to start of conversion.

      2. Less code when performing multiple conversions.

      3. Higher priority than an interrupt.

2.0 A/D Scan Mode Description

      1. The controller fetches the interrupt vector for the interrupt serviced by the PTS.

      2. The program branches to the interrupt service routine.

      3. The interrupt service routine should service the PTS. This may include leaving the PTS disabled.


2.2 A/D Command/Data Table

3.0 A/D Scan Mode Operation

      1. Store PTS_PTR1 in TEMP1 (TEMP1=n)

      2. Fetch the word pointed to by TEMP1 (an A/D command) and store in TEMP2

      3. Increment TEMP1 by two (TEMP1=n+2)

      4. Fetch the word pointed to by PTS_PTR2 (AD_RESULT) and store at the address in TEMP1 (n+2)

      5. Increment TEMP1 by two (TEMP1=n+4)

      6. Load TEMP2 (holding the A/D command) into the SFR, AD_COMMAND

      7. If the update bit in PTS_CONTROL equals 1, load PTS_PTR1 with TEMP1 (PTS_PTR1=n+4) (will fetch next command)

      8. If the update bit equals 0, leave PTS_PTR1 unchanged (PTS_PTR1=n) (will fetch same command)

      9. decrement PTSCOUNT

      1. Reinitialize PTSCOUNT

      2. Load PTS_PTR1

      3. Set PTSSEL

3.1 Flow Chart

4.0 Implementation

      1. Setting up the PTS Control Block
      2. Setting up the Command/Data table
      3. Starting the first A/D conversion
      4. Responding to the PTS interrupt
      5. Ending the A/D Scan mode

4.1 Setting up the PTSCB

4.2 Setting up the Command/Data Table

4.3 Starting the first A/D Conversion

4.4 Responding to the PTS Interrupt

      1. initialize PTSCOUNT
      2. Set PTSSEL.5
      3. Load PTSPTR1
      4. Starting the next (first) A/D conversion

4.5 Ending the A/D Scan mode

5.0 Example

$debug errorprint xref


;** This program is the first example program **

;** for the A/D Scan mode tech bit. **

;** REV 1.0 6/4/91 **






AD_PTSCOUNT 	equ 10H 		;do 16 a/d conversions

AD_PTSCONTROL 	equ 11001011B


AD_PTSPTR2 		equ 6000H 	;must equal address of 


AD_COMMAND0 	equ 00011000B 		;norm conv, 8-bit, start now,ch0

AD_COMMAND1 	equ 00000000B 		;no conv

AD_TIME_LOAD 	equ 0A6H 		;value to load into AD_TIME register

 rseg at 50H

ad_pts: dsb 6 		;must be quad word aligned


temp0: dsw 1

temp1: dsw 1

pntr0: dsw 1

pntr1: dsw 1

 cseg at 200AH

 dcw ad_done_isr

 cseg at 204AH

 dcw ad_pts


START: 		;Initialize for A/D Scan Mode


 Ld temp0,#ad_ptscount 		;number of commands to load

 Ld pntr0,#ad_command_data

 Ld pntr1,#command_start


 Ld temp1,[pntr0]+ 	 	;loop until command/data table

 St temp1,[pntr1]+ 		;filled

 Inc pntr1

 Inc pntr1 		;increment twice to skip blank

 Djnz temp0,ad_table_loop


 Ld pntr0,#ad_pts_table

 Ld pntr1,#ad_pts

 Ld temp0,#6 		;number of bytes in PTSCB


 Ldb temp1,[pntr0]+ 		;loop until PTSCB filled

 Stb temp1,[pntr1]+

 Djnz temp0,ptscb_loop

 Ldb temp0,#ad_time_load

 Stb temp0,ad_time 		;load AD_TIME register

 Stb zero_reg,ad_test 		;clear AD_TEST register

 Ldb temp0,int_mask

 orb temp0,#00100000B

 Stb temp0,int_mask 		;enable AD_DONE interrupt


Ld temp0,ptssel

 Or temp0,#0000000000100000B

 Stb temp0,ptssel 		;enable A/D PTS servicing

 Ei 		;enable interrupts

 Epts 		;enable PTS

 Br main_start


 Br $ 		;loop forever when pts count=0




 Ldb temp0,#ad_command0

 Stb temp0,ad_command 		;start first A/D conversion on Ch0


 Br $ 		;loop until interrupt or

 		;pts cycle occurs





 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command0

 dcw AD_Command1


 dcb 10H

 dcb 11001011B

 dcw command_start

 dcw ad_result

 dseg at 6000H


 dsw 32 			;save storage space for 16 commands/results


* Legal Information © 1999 Intel Corporation