18 Bilaga 6 18.1 Assabler programmet till Ladybug ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Detta program är skapat för att ; få "spindeln" i projekt LADYBUG att gå. ; ; Skapat den 26/10-1996 av ; Daniel Risman, Johan Dahlin & Mikael Riikonen ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;-----------EQ-satser---------------------------- ; AD_COMMAND EQU 02H AD_RESULT_HI EQU 03H AD_RESULT_LO EQU 02H IOPORT0 EQU 0EH ; Insignaler IOPORT1 EQU 0FH ; Ben IOPORT2 EQU 10H ; Kontroll signaler IOC2 EQU 0BH counter_1 EQU 40H counter_2 EQU 42H SP EQU 18H angel EQU 44H wait_time EQU 46H ;word ;------------------------------------------------- ASEG ORG 2018H DCB 0ECH ;CCB ASEG ORG 2080H LD SP,#100H LDB IOC2,#00010000B ;AD-PREscaler => 91 cykler LD wait_time,#500D BLINK: ORB IOPORT1,#10000000B CALL DELAY ANDB IOPORT1,#0B CALL DELAY BBC IOPORT0,2,BLINK BR walk_scan loop: LDB IOPORT1,#10110100B ;Vänster fot LD wait_time,#1500D CALL DELAY LDB IOPORT1,#00111100B ;Vänster bak LD wait_time,#3000D CALL DELAY LDB IOPORT1,#11110000B ;Ingenting LD wait_time,#500D CALL DELAY LDB IOPORT1,#11100001B ;Höger fot LD wait_time,#1500D CALL DELAY LDB IOPORT1,#11000011B ;Höger bak LD wait_time,#3000D CALL DELAY LDB IOPORT1,#11110000B ;Ingenting LD wait_time,#0500D CALL DELAY BR loop DELAY: LD counter_1,wait_time ;tid i ms. del1: LD counter_2,#171D del2: DEC counter_2 BNE del2 DEC counter_1 BNE del1 RET ;---------------------------------------------------------------- ;----------------------Utökat------------------------------------ walk_scan: LDB IOPORT1,#10110100B ;Vänster fot LD wait_time,#1500D CALL DELAY LDB IOPORT1,#00111100B ;Vänster bak LD wait_time,#3000D CALL DELAY_SCAN LDB IOPORT1,#11110000B ; Ingenting LD wait_time,#2500D CALL DELAY CMPB angel,#188D BNC part2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LDB IOPORT1,#11110000B ; Ingenting LD wait_time,#1500D CALL DELAY LDB IOPORT1,#11010010B ;Höger bak - KORRIGERING LD wait_time,#3000D CALL DELAY LDB IOPORT1,#11110000B ;Ingenting LD wait_time,#2500D CALL DELAY BR walk_scan ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; part2: LDB IOPORT1,#11100001B ;Höger fot LD wait_time,#1500D CALL DELAY LDB IOPORT1,#11000011B ;Höger bak LD wait_time,#3000D CALL DELAY_SCAN LDB IOPORT1,#11110000B ; Ingenting LD wait_time,#2500D CALL DELAY CMPB angel,#168D BC walk_scan ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LDB IOPORT1,#11110000B ; Ingenting LD wait_time,#1500D CALL DELAY LDB IOPORT1,#01111000B ;Vänster bak - KORRIGERING LD wait_time,#3000D CALL DELAY LDB IOPORT1,#11110000B ;Ingenting LD wait_time,#2500D CALL DELAY BR part2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BR walk_scan DELAY_SCAN: LD angel,#178D LD counter_1,wait_time ws7: LD counter_2,#171D LDB AD_COMMAND,#00001000B ; A/D-start PORT0.0 BBS AD_RESULT_LO,3,$ ; väntar 91cykler BBS IOPORT0,1,ws8 ; skippa om ingen IR LD angel,AD_RESULT_LO ; för över vinkeln ANDB IOPORT1,#10111111B ; Tänd kontrolldiod. ws8: ORB IOPORT1,#01000000B ; Släck kontrolldiod DEC counter_2 BNE ws8 DEC counter_1 BNE ws7 SHR angel,#6 RET ;---------------------------------------------------------------- END