Device = 16F876A Xtal = 4 ' Частота осциллятора 4 МГц '-------------------------- Конфигурация программирования -------------------- Declare All_Digital = On ' Установить все порты цифровыми входами/выходами TRISB = %00000000 PORTB = %00000000 PORTC = %00000000 PORTA = %00000000 TRISC = %01000000 TRISA = %00000000 TRISA = %00111111 ' Сделать канал (вывод) AN0 (PORTA.0) входом ADCON1 = %10000000 ' Установить все выводы PORTA в режим АЦП Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно -цифровой Declare LCD_DTPin PORTB.4 ' Порт данных ЖКИ Declare LCD_ENPin PORTB.2 ' Управление линией E Declare LCD_RSPin PORTB.3 ' Управление линией RS Declare LCD_Interface 4 ' Разрядность шины данных Declare LCD_CommandUs 2000 ' Задержка перед посылкой команды Declare LCD_DataUs 50 ' Задержка перед посылкой данных Declare LCD_Lines 2 ' Количество строк ЖКИ Declare Hserial_Baud = 9600 ' Set baud rate to 9600 Declare Hserial_RCSTA = %10010000 ' Enable continuous receive Declare Hserial_TXSTA = %00100000 ' Enable transmit and asynchronous mode Declare Hserial_SPBRG 32 ' Значение регистра SPBRG для выбранной скорости Declare Hserial_Clear = On ' Clear the buffer before receiving Declare Adin_Res = 10 ' Установить кол-во битов в результате АЦП-преобразования' равными 10 (можно также установить 8, 10, или 12) Declare Adin_Tad = FRC ' Установить синхронизацию от внутреннего RC генератора Declare Adin_Stime = 50 ' Установить время ожидания в 50 мкс перед началом преобразования Symbol Pin1 = PORTC.3 Symbol Pin2 = PORTC.2 Symbol Pin3 = PORTC.1 Symbol LED1 = PORTC.4 Symbol LED2 = PORTC.5 Symbol R1 = PORTA.0 Symbol R2 = PORTA.1 Dim Var3 As Byte Dim flt As Byte Dim A As Word Dim B As Word Dim VAR1 As Word ' Объявить переменную VAR1 размером WORD Dim VAR2 As Word Dim Pos As Word ' Переменная для управления сервомотором Dim X As Byte Dim Y As Byte Dim Z As Byte Cls X = 1 For X = 1 To 50 Pos = 1500 Servo Pin1, Pos Servo Pin2, Pos Servo Pin3, Pos DelayMS 10 Loop: Print $FE, 1 HRSOut "hello" Var3 = HRSIn, {1000, Timeout} ' Receive a byte serially into Var1 Print Dec Var3, " " ' Display the byte received DelayMS 500 GoTo Loop ' Loop forever Timeout: Cls Print At 2, 1, "TIMED OUT" ' Display an error if Hserin timed out DelayMS 500 GoTo Loop Next MAIN:` VAR1 = ADIn 0 ' Поместить результат преобразования из канала AN0 в переменную VAR1 DelayUS 1 VAR2 = ADIn 1 A = VAR1 + VAR2 Print At 1, 1, Dec4 VAR1 Print At 2, 1, Dec4 VAR2 If Pos < 501 Then Pos = 505 For X = 1 To 25 Pos = A * 2 Print At 2, 6, Dec Pos Servo Pin1, Pos Servo Pin2, Pos Servo Pin3, Pos DelayMS 20 Next GoTo MAIN MAIN2: GoTo MAIN MAIN3: GoTo MAIN MAIN4: GoTo MAIN End