Dieses Programm ist für die die nur die Grundversion haben.
Mit den Programm wird auf den vier LEDs der Binärwert ein IR- Signal dargestellt (Fernbedienung). Die Subrotienen können aber auch leicht dazu verwendet werden um andere Werte im Binär Format dazustellen.
Es wird in diesen Programm erst das Low Nibble(Bit0-Bit3) dargestellt und nach einer kleinen Zeitverzögerung dann das High Nibble(Bit4-Bit7).
Der Code
Code:' Sascha Kröger ' 12.03.2004 ' Programm ShowDual.bas ' ' --------------------------------------------------------------------- ' FUNKTION DES PROGRAMMS '---------------------------------------------------------------------- ' In diesen Programm wird der Wert eines IR- Fernbidinung Signal auf ' den LED des Roboters in Binärform Dargestellt. ' Dieses Programm bietet die Möglichkeit ein IR Signal darzustellen ' wenn man nur die Grundversion von CCRP5 hat. Wenn man die Erweiterung ' mit den LCD hat, dann wird man das sicher besser dort darstellen lassen. ' Die Subrotienen LCONVERT und HCONVERT Stellen den Wert der Variable ' Value da, diese Subrotienen lassen sich auch leicht in anderen ' Programmen implementieren. '------------------------------------------------------------------------ '-------------------------- '------ I/O PORTS --------- '-------------------------- '- INTERFACE LCD/EXTPORT -- define sdio port[1] define sclio port[3] define strobe port[4] '-- INTERFACE COM/NAV ----- define DATALINE port[1] define CLOCKLINE port[2] '---- FREIE PORTS --------- define FREIP7 port[7] define FREIP8 port[8] define FREIP9 port[9] define FREIP10 port[10] define FREIP11 port[11] define FREIP12 port[12] define FREIP13 port[13] define FREIP14 port[14] define FREIP15 port[15] define FREIP16 port[16] '-------------------------- '------ SENSORS --------- '-------------------------- define LIGHT_L ad[7] define LIGHT_R ad[6] define SYS_VOLTS ad[3] define CHRG_CURRENT ad[2] define SYS_CURRENT ad[1] define MIC ad[4] define TOUCH ad[5] '--------------------------- '------ DRIVE ------------- '--------------------------- define SPEED_L da[1] define SPEED_R da[2] define REV_L port[6] define REV_R port[5] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- '--- INTERFACE BUFFER ---- define LBYTE byte[1] define HBYTE byte[2] define SUBCMD byte[3] '---- OPERATION DATA ------ define EXTPORT byte[4] define LED1_F bit[29] define LED2_F bit[30] define LED3_F bit[31] define LED4_F bit[32] define SYSTEM_STATUS byte[5] define ACSL_F bit[33] define ACSR_F bit[34] define IR_F bit[35] '-------------------------- '---- USER MEMORY ------- '-------------------------- define CMDC byte[6] define ADRC byte[7] '--- SYSTEMROUTINEN ----------- define PLM_SLOW &H01C4 define SYSTEM &H01C9 define COMNAV &H0154 '- ERWEITERTE SYSTEM ROUTINEN - define REVR &H0101 'ANTRIEB RECHTS RÜCKWÄRTS define REVL &H0106 'ANTRIEB LINKS RÜCKWÄRTS define FWDR &H010B 'ANTRIEG RECHTS VORWÄRTS define FWDL &H0110 'ANTRIEB LINKS VORWÄRTS define ROTR &H0115 'RECHTS DREHEN define ROTL &H0119 'LINKS DREHEN define REV &H011D 'RÜCKWÄRTS define FWD &H0121 'VORWÄRTS define COMNAV_STATUS &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER define ACS_LO &H01E1 'ACS POWER define ACS_HI &H01E9 ' define ACS_MAX &H01F1 ' define SEND_TLM &H014A 'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE) define SEND_SPEEDR &H0134 'SENDET TLM KANAL 8,PLM RECHTS define SEND_SPEEDL &H013A 'SENDET TLM KANAL 7,PLM LINKS define SEND_SYSSTAT &H0144 'SENDET TLM KANAL 0,SYSTEM STATUS '(FLAGS für ACS,FWD/REV, ACS_LO/HI/MAX) '--------------------------------------------------------------------------------- define Value byte[9] ' Varibel für den Wert der auf den LEDs dargestellt werden soll '---------- INIT--------------- 'FREIP7=off:FREIP8=off:FREIP9=off:FREIP10=off 'FREIP11=off:FREIP12=off:FREIP13=off:FREIP14=off 'FREIP15=off:FREIP16=off gosub SUBSYS_PWR_ON beep 368,10,0:pause 50 '---- SYSTEM OPERATION MODE (NO INTERRUPT) ---- gosub NO_ACS_INT:beep 368,10,0:SYS ACS_HI 'LO,HI und MAX '------------ ANTRIEB ------------------------- REV_L=on:REV_R=on:SYS PLM_SLOW '--------- IR-DATENFORMAT ----------------- 'gosub REC80 gosub RC5 '-------------------------------------------- '--- DEMO REMOTE CONTROL --- '-------------------------------------------- #loop pause 2:SYS COMNAV_STATUS if IR_F = off then goto loop '-------- DATEN HOLEN ------------------------ gosub GET_IRDATA ' Empfangenes Signal anzeigen if HBYTE=&HFF then goto loop Value = LBYTE goto SHOW_IRDATA '--------------------------------------------- #SHOW_IRDATA beep 200,10,0:pause 10 gosub LCONVERT pause 500 beep 200,10,0:pause 10 gosub HCONVERT pause 500 goto loop '--------------------------------------------- ' Die Subrotine Stellt das Low Nibble(Bit0-Bit3) ' der Variable Value auf den vier LED Binär da #LCONVERT gosub LEDSOFF if (Value AND 1) = 1 then gosub LED1ON if (Value AND 2) = 2 then gosub LED2ON if (Value AND 4) = 4 then gosub LED3ON if (Value AND 8) = 8 then gosub LED4ON return ' Die Subrotine Stellt das High Nibble(Bit4-Bit7) ' der Variable Value auf den vier LED Binär da #HCONVERT gosub LEDSOFF if (Value AND 16) = 16 then gosub LED1ON if (Value AND 32) = 32 then gosub LED2ON if (Value AND 64) = 64 then gosub LED3ON if (Value AND 128) = 128 then gosub LED4ON return 'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII #LED1ON LED1_F=on:goto EXTPORT_WRITE #LED1OFF LED1_F=off and &HEF:goto EXTPORT_WRITE #LED2ON LED2_F=on:goto EXTPORT_WRITE #LED2OFF LED2_F=off:goto EXTPORT_WRITE #LED3ON LED3_F=on:goto EXTPORT_WRITE #LED3OFF LED3_F=off:goto EXTPORT_WRITE #LED4ON LED4_F=on:goto EXTPORT_WRITE #LED4OFF LED4_F=off:goto EXTPORT_WRITE #LEDSOFF EXTPORT=EXTPORT and &H0F:goto EXTPORT_WRITE #EXTPORT_WRITE SYS SYSTEM:pulse STROBE:RETURN 'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII #GET_IRDATA SUBCMD=1:sys COMNAV:return #SEND_IRDATA SUBCMD=0:sys COMNAV:return #RC5 SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFC HBYTE=00:SUBCMD=2:sys COMNAV:return #RC5_INT SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HFE)or 2 HBYTE=00:SUBCMD=2:sys COMNAV:return #REC80 SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and&HFD HBYTE=00:SUBCMD=2:sys COMNAV:return #REC80_INT SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03) HBYTE=00:SUBCMD=2:sys COMNAV:return 'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII #NO_ACS_INT SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB HBYTE=00:SUBCMD=2:sys COMNAV:return #ACS_INT_200 SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04 HBYTE=50:SUBCMD=2:sys COMNAV:return #SUBSYS_PWR_ON sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8 sys SYSTEM:return #SUBSYS_PWR_OFF EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM deact sdio:deact sclio:return #CLR_DISTANCE SUBCMD=3:sys COMNAV:return #L_DISTANCE SUBCMD=6:sys COMNAV:return #R_DISTANCE SUBCMD=7:sys COMNAV:return







Zitieren

Lesezeichen