;********************************************************************** ; ; A/D Test Program for the S87C752 ; COFFEY.ASM CS= ; 2-12-90 4:41:52 pm K. COFFEY ;********************************************************************** ; ; Signetics 87C752 Special Function Registers ; P0 equ 80h ;port 0 SP equ 81h ;stack pointer DPL equ 82h ;data pointer low DPH equ 83h ;data pointer high PCON equ 87h ;power control TCON equ 88h ;timer control TL equ 8ah ;timer/counter low RTL equ 8bh ;reload timer low TH equ 8ch ;timer/counter high RTH equ 8dh ;reload timer high P1 equ 90h ;port 1 I2CON equ 98h ;I2C control I2DAT equ 99h ;I2C data IE equ 0a8h ;interrupt enable P3 equ 0b0h ;port 3 PSW equ 0d0h ;program status word I2CFG equ 0d8h ;I2C configuration ACC equ 0e0h ;accumulator B equ 0f0h ;B register I2STA equ 0f8h ;I2C status ADAT equ 084h ;A/D result ADCON equ 0a0h ;A/D control LIMIT 07FFh ;Sets limit of assembly. ; RAM locations used by A/D routines. ;********************************************************************** ; Begin ; Interrupt Location ;********************************************************************** ; Reset and interrupt vectors. AJMP Reset ;Reset vector at address 0. ORG 02Bh ;Set ROM address to 02B. AJMP ADInt ;Jump to A/D interrupt routine. ;********************************************************************* ; A/D Interrupt Routine ;********************************************************************* ORG 040h ;Set origin to 40 ADInt: SETB P0.2 ;Toggle interrupt bit. CLR P0.2 ; ORL ADCON,#08h ;Start conversion of AD1. ADQuit: RETI ;Return from A/D routine. ;********************************************************************** ; Main Program Routines ;********************************************************************** Init: SETB IE.7 ;Enable global interrupts. SETB IE.6 ;Enable A/D interrupt. RET ;Return from intitializing Routine. ;********************************************************************** ; Main Program ;********************************************************************** Reset: MOV P0,#0FFh ;Insure P0 are all high. ACALL Init ;Initialize system. CLR P0.3 ;Pull sensor ground low. MOV P1,#0FFh ;Set Port1 for special function. MOV ADCON,#20h ;Load the A/D setup to ACC. MOV ADCON,#28h ;Send A/D setup to ADCON. Loop: SETB P0.0 ;A/D control display trigger. MOV P3,ADCON ;Display A/D control on Port 3. CLR P0.0 ; SETB P0.1 ;A/D data display trigger. MOV P3,ADAT ;Display A/D data on Port 3. CLR P0.1 ; AJMP Loop ;Loop main program.