| ??? 05/30/02 18:40 Read: times |
#23666 - RE: compare values |
jeroen,
If your coding is assembler the following might be helpful, it assumes that a "1" at p0.3/4 lights the LED and that both LED's light if r2 simultaneously equals the higher and lower boundry (per your description):
$mod51
org 0
jmp start ;Always good practice to
; jump over int. vectors
org 40H
start:
clr p0.4 ;Turn off LED's
clr p0.3
; ***-------------------------------***
; *** Window Compare of value in R2 ***
; ***-------------------------------***
compare_r0:
mov a,r2 ;Fetch subject for compare
cjne a,ar0,test_r0_carry ; Test against hi value
; *** the value in r2 equals the value in r0 ***
light_r2r0:
setb p0.3 ;Illuminate Hi boundry LED
jmp compare_r1 ; Branch to lower boundry testing
; *** The value in R2 does not ***
; *** equal r0, is it greater ? ***
test_r0_carry:
jnc light_r2r0 ;If r0 is not greater than r2
; then light the hi bound LED
; *** R2 is less than R0 ***
clr p0.3 ;turn off upper threshold LED
; ***------------------------------------------***
; *** Compare R2 against lower threshold value ***
; ***------------------------------------------***
compare_r1:
cjne a,ar1,test_R1_carry ;Test against lo boundry value
; *** R2 equals lower threshold value ***
light_r2r1:
setb p0.4 ;Illuminate the lower boundry led
jmp compare_exit ; stay here forever.
test_r1_carry:
jc light_r2r1 ;If r2 is less r1 light low bound LED
; *** The value is greater than r1 ***
clr p0.4 ;turn off lower threshold LED
; *** If this is a subroutine a "RETURN" would be coded here ***
compare_exit:
jmp $
end
Your could compose a shorter routine but the above is for clarity. regards, p |
| Topic | Author | Date |
| compare values | 01/01/70 00:00 | |
| RE: compare values | 01/01/70 00:00 | |
| RE: compare values | 01/01/70 00:00 | |
RE: compare values | 01/01/70 00:00 | |
| RE: compare values | 01/01/70 00:00 |



