home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / drdobbs / 1987 / 06 / musslst.jun < prev    next >
Text File  |  1987-05-05  |  2KB  |  104 lines

  1. Listing 1
  2.     ;
  3.     ;
  4.     ;--------------------------------------------------
  5.     ;
  6.     ; ANALOG TO DIGITAL CONVERTER DRIVER
  7.     ;
  8.     ; Written by John Musselman
  9.     ;
  10.     ;--------------------------------------------------
  11.     ;
  12.     ;
  13. INBIT:    EQU    1        ;INPUT BIT POSITION
  14. OUTBIT:    EQU    2        ;OUTPUT BIT POSITION
  15.     ;
  16. PERIOD:    EQU    1000        ;# OF INTERRUPTS IN A CONVERSION
  17.     ;
  18.     ;
  19. HIGH:    DS    2        ;COUNT OF HIGH BITS
  20. COUNT:    DS    2        ;CONVERSION CYCLE COUNTER
  21. RESULT:    DS    2        ;RESULT OF CONVERSION
  22.     ;
  23.     ;
  24.     ;--------------------------------------------------
  25.     ; INITIALIZATION...
  26.     ;--------------------------------------------------
  27.     ;
  28.     ; MUST BE INCLUDED IN THE SYSTEM
  29.     ; INITIALIZATION BEFORE INTERRUPTS
  30.     ; ENABLED
  31.     ;
  32.     ;
  33.     MOVD    #PERIOD-1,COUNT+1
  34.     ;
  35.     ;
  36.     ;--------------------------------------------------
  37.     ; INTERRUPT ROUTINES...
  38.     ;--------------------------------------------------
  39.     ;
  40.     ; THE FOLLOWING ROUTINES MUST APPEAR
  41.     ; IN AN INTERRUPT WHICH OCCURS
  42.     ; AT REGULAR INTERVALS
  43.     ;
  44.     ;
  45.     ;--------------------------------------------------
  46.     ; I/O...
  47.     ;--------------------------------------------------
  48.     ;
  49.     ;
  50.     ; SEE IF INPUT BIT IS HIGH OR LOW...
  51.     ;
  52.     ;
  53. ATOD:    MOVP    APORT,B
  54.     BTJO    #INBIT,B,HI
  55.     ;
  56.     ;
  57.     ; IF IT'S LOW, GENERATED VOLTAGE IS
  58.     ; BELOW THE UNKNOWN VOLTAGE. OUTPUT A
  59.     ; HIGH.  COUNT ONE MORE HIGH BIT...
  60.     ;
  61.     ;
  62. LO:    ORP    #OUTBIT,APORT
  63.     DECD    HIGH+1        ;NOTE ONES COMPLEMENT COUNT
  64.     JMP    IODONE
  65.     ;
  66.     ;
  67.     ; IF IT'S HIGH, GENERATED VOLTAGE IS
  68.     ; ABOVE THE UNKNOWN VOLTAGE. OUTPUT A
  69.     ; LOW...
  70.     ;
  71.     ;
  72. HI:    ANDP    #255-OUTBIT,APORT
  73.     ;
  74.     ;
  75. IODONE:
  76.     ;
  77.     ;
  78.     ;--------------------------------------------------
  79.     ; CONVERSION CYCLE...
  80.     ;--------------------------------------------------
  81.     ;
  82.     ;
  83.     ; SEE IF CONVERSION CYCLE DONE...
  84.     ;
  85.     ;
  86.     DECD    COUNT+1
  87.     JC    ATODDN
  88.     ;
  89.     ;
  90.     ; IF CONVERSION DONE, SAVE RESULT
  91.     ; AND RESET COUNTERS...
  92.     ;
  93.     ;
  94.     MOVD    HIGH+1,B        ;RESULT IS ONES COMPLEMENT
  95.     COM    A            ;OF COUNT
  96.     COM    B
  97.     MOVD    B,RESULT+1
  98.     ;
  99.     MOVD    #-1,HIGH+1        ;ONES COMPLEMENT OF ZERO
  100.     MOVD    #PERIOD-1,COUNT+1
  101.     ;
  102.     ;
  103. ATODDN:
  104.