init: ADCON1 = %00001110 TRISA = %11111111 PORTB = %00000000 TRISB = %00000000 PORTC = %00000000 TRISC = %00000000 include "modedefs.bas" ' Включить файл с определениями режимов ' последовательного порта DEFINE LCD_DREG PORTB ' Задать порт PIC-микроконтроллера для передачи ' данных на ЖКИ DEFINE LCD_DBIT 4 ' Задать первый вывод порта PORTB, который будет ' подключен к выводу DB4 ЖКИ DEFINE LCD_RSREG PORTB ' Задать порт PIC-микроконтроллера, который будет ' выдавать сигнал RS на ЖКИ DEFINE LCD_RSBIT 3 ' Задать вывод порта PORTB, с которого будет ' выдаваться сигнал RS на ЖКИ DEFINE LCD_EREG PORTB ' Задать порт PIC-микроконтроллера, который будет ' выдавать сигнал E на ЖКИ DEFINE LCD_EBIT 0 ' Задать вывод порта PORTB, с которого будет ' выдаваться сигнал E на ЖКИ DEFINE LCD_BITS 4 ' Задать 4-битный режим обмена информацией для ЖКИ DEFINE LCD_LINES 2 ' Задать ЖКИ режим с 2 строками отображения DEFINE LCD_COMMANDUS 2000 ' Задать паузу между передачей команд на ЖКИ DEFINE LCD_DATAUS 50 ' Задать паузу между передачей данных на ЖКИ DEFINE ADC_BITS 8 DEFINE ADC_CLOCK 3 DEFINE ADC_SAMPLEUS 50 K1 VAR PORTA.1 K2 VAR PORTA.2 K3 VAR PORTA.3 K4 VAR PORTA.4 SYMBOL SH1 = PORTC.1 SYMBOL SH2 = PORTC.2 symbol I = PORTB.1 SYMBOL O = PORTB.2 SYMBOL LED = PORTC.0 X VAR BYTE y var byte LED = 0 MENU: ADCIN 0, Y LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT "*TESLA_ROBOTICS*" PAUSE 2000 LCDOUT $FE, $C0 LCDOUT " R_A - K1 " PAUSE 2000 IF K1 = 0 THEN R_A IF Y > 10 THEN MAIN3 GOTO MENU R_A: LCDOUT $FE, 1 LCDOUT $FE, 2 R_A1: LCDOUT " USER-K2" LCDOUT $FE, $C0 LCDOUT " AVTO-K3" IF K2 = 0 THEN UZER IF K3 = 0 THEN AVTO GOTO R_A1 UZER: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT "MOTOR -K3 *USER*" LCDOUT $FE, $C0 LCDOUT " R_A-K1 MENU-K4" PAUSE 1000 IF K3 = 0 THEN MOTOR IF K1 = 0 THEN R_A IF K4 = 0 THEN MENU GOTO UZER AVTO: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " AVTO" LCDOUT $FE, $C0 LCDOUT " R_A-K1 MENU-K4" PAUSE 500 IF K1 = 0 THEN R_A IF K4 = 0 THEN MENU GOTO AVTO MAIN3: Hpwm 2, Y, 10000 LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT $FE, 1, #Y PAUSE 1000 goto MENU MOTOR: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " MOTOR_1,2 - K1" LCDOUT $FE, $C0 LCDOUT " MOTOR_3,4 - K2" PAUSE 1000 LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " USER - K4 " PAUSE 1000 IF K4 = 0 THEN UZER IF K1 = 0 THEN MOTOR_1_2 IF K2 = 0 THEN MOTOR_3_4 GOTO MOTOR MOTOR_1_2: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " MOTOR_1 - K2" LCDOUT $FE, $C0 LCDOUT " MOTOR_2 - K3 " PAUSE 1000 LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " MOTOR - K4 " PAUSE 1000 IF K4 = 0 THEN MOTOR IF K2 = 0 THEN MOTOR_1 IF K3 = 0 THEN MOTOR_2 GOTO MOTOR_1_2 MOTOR_3_4: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " MOTOR_3 - K1 " LCDOUT $FE, $C0 LCDOUT " MOTOR_4 - K3 " PAUSE 1000 LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " MOTOR - K4 " PAUSE 1000 IF K4 = 0 THEN MOTOR IF K1 = 0 THEN MOTOR_3 IF K3 = 0 THEN MOTOR_4 GOTO MOTOR_3_4 MOTOR_1: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT "L - K1 R - K3" LCDOUT $FE, $C0 LCDOUT "MOTOR - K4 " PAUSE 250 LED = 0 IF K4 = 0 THEN MOTOR IF K1 = 0 THEN L IF K3 = 0 THEN R GOTO MOTOR_1 L: SEROUT PORTB.1, T300, [1] SEROUT PORTB.2, T300, [1] LED = 1 IF K1 = 1 THEN MOTOR_1 GOTO L R: SEROUT PORTB.1, T300, [2] SEROUT PORTB.2, T300, [2] LED = 1 IF K3 = 1 THEN MOTOR_1 GOTO R MOTOR_2: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT "L - K1 R - K3 " LCDOUT $FE, $C0 LCDOUT "MOTOR - K4 " PAUSE 1000 MOTOR_3: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " MOTOR_3 - K1 " LCDOUT $FE, $C0 LCDOUT " MOTOR_4 - K3 " PAUSE 1000 MOTOR_4: LCDOUT $FE, 1 LCDOUT $FE, 2 LCDOUT " MOTOR_3 - K1 " LCDOUT $FE, $C0 LCDOUT " MOTOR_4 - K3 " PAUSE 1000 END