$MOD151 ;************************************************************ ;* Robot IR Sensor Array Test Program Vsn 1.2 * ;* Program name: sensor3.asm * ;* WGM 2002 * ;* Runs under MOUSEMON Loader/Monitor * ;* Set for program memory at 8000H * ;************************************************************ ; Memory-mapped addresses SRR EQU 2000H ; Rear Right Sensor SRL EQU 2001H ; Rear Left Sensor SFR EQU 2002H ; Front Right Sensor SFL EQU 2003H ; Front Left Sensor LEDS EQU 3000H ; Side sensor LEDs DVALUE EQU 64 ; Delay timer value DSEG ORG 0 ; Sensor values in Register bank 0 DRR: DS 1 ; Compensated RR sensor value DRL: DS 1 ; Compensated RL sensor value DFR: DS 1 ; Compensated FR sensor value DFL: DS 1 ; Compensated FL sensor value DLY: DS 1 CSEG ORG 8012H mov PSW, #00H ; Switch to Register Bank 0 loop: mov B, A mov DPTR, #SRR ; --> 2000 movx A, @DPTR ; Read lit FL data, sample dark RR data xch A, B clr c subb A, B ; Subtract dark value mov DFL, A ; Save compensated DFL value mov A, #8 acall ledon ; Turn on RR LED mov B, A movx A, @DPTR ; Read dark RR data, sample lit RR data inc DPTR ; --> 2001 movx A, @DPTR ; Read lit RR data, sample dark RL data xch A, B clr c subb A, B ; Subtract dark value mov DRR, A ; Save compensated DRR value mov A, #4 acall ledon ; Turn on RL LED mov B, A movx A, @DPTR ; Read dark RL data, sample lit RL data inc DPTR ; --> 2002 movx A, @DPTR ; Read lit RL data, sample dark FR data xch A, B clr c subb A, B ; Subtract dark value mov DRL, A ; Save compensated DRL value mov A, #2 acall ledon ; Turn on FR LED mov B, A movx A, @DPTR ; Read dark FR data, sample lit FR data inc DPTR ; --> 2003 movx A, @DPTR ; Read lit FR data, sample dark FL data xch A, B clr c subb A, B ; Subtract 'dark' value mov DFR, A ; Save compensated DFR value mov A, #1 acall ledon ; Turn on FL LED movx A, @DPTR ; Read dark FL data, sample lit FL data sjmp loop ; Turn on selected LED and wait for an interval ledon: push dpl push dph mov DPTR, #LEDS movx @DPTR, A pop dph pop dpl mov DLY, #DVALUE djnz DLY, $ ; Wait for stable light output ret end