di2874l1.txt ;****************************************************************************************** ; ; LISTING 1 - MBASIC LISTING FOR MOTION-CONTROL ADAPTER ; ; "Unidirectional counters accumulate bidirectional pulses," EDN, April 11, 2002, pg 72 ; ;****************************************************************************************** DEFINT I IOADD = &H300: ‘ BASE ADDRESS FOR MOCONT CARD IC0 = IOADD: IC1 = IC0 + 1: IC2 = IC0 + 2: ICS = IC0 + 3: ‘ 8254 COUNTER ADDRESSES OUT ICS, &H70: OUT ICS, &HB0: ‘ SETUP CW/CCW COUNTERS IN C1 AND C2 OUT ICS, &HDC: ‘ LATCH CW/CCW I1L = INP(IC1): ICW = INP(IC1) I2L = INP(IC2): ICCW = INP(IC2) OUT IC1, I1L: OUT IC1, ICW: ‘ …INITIALIZE CW/CCW COUNTERS OUT IC2, I2L: OUT IC2, ICCW OFFSET = I1L – I2L + 256! * (ICW –ICCW) CLS : PRINT TAB(20); “MOTION-CONTROL ADAPTER DEMO” PRINT TAB(18); “W.S. WOODWARD…March 16, 1990” AROUND: OUT ICS, &HDC: ‘ LATCH CW/CCW I1L = INP(IC1): I1M = INP(IC1): IF I1M > ICW THEN OFFSET = OFFSET + 65536 ICW = I1M I2L = INP(IC2): I2M = INP(IC2): IF I2M > ICCW THEN OFFSET = OFFSET – 65536 ICCW = I2M LOCATE 3, 10: PRINT I1L – I2L + 256! * (I1M – I2M) –OFFSET GOTO AROUND