Перейти к содержимому
Форум журнала практической электроники «Датагор»

Оригинал микро-ПК Raspberry Pi 3 Model B+ (Broadcom 1.4GHz quad-core 64 bit processor, Wifi, Bluetooth, USB)

Офигенная миниатюрная рация на литии BaoFeng UV-5R, 5W, 5-15 км! Охота, поход, торговый центр и т.п.

TrueRMS мультиметр UNI-T UT139A с автодиапазонами

Паяльнник 80W с терморегулятором и LCD-дисплеем, популярные жала серии 900M
Гость jawa634

PIC18f2520. Передача по UART

Рекомендованные сообщения

Гость jawa634

Уважаемые датагорцы, не раз вы меня выручали, спасибо вам за это!

Надеюсь и сейчас поможете разобраться. Нужно организовать передачу по интерфейсу RS-232. Передавать буду пакет данных (несколько цифр). Для этих целей сделал простенькую модель в протеусе, собственно контроллер и Virtual Terminal. Выдает только странный символ много раз.. Вот код программы на MCC18.

 

#include <p18f2520.h>

 

//Передача данных по USART

 

char data1;

 

void main(void)

{

TRISCbits.TRISC6 = 1;

TRISCbits.TRISC7 = 1;

RCSTAbits.SPEN = 1;

TXSTAbits.TXEN = 1;

 

while(1){

 

data1=12345678;

TXREG=data1;

//while(!TXSTAbits.TRMT);

while(!PIR1bits.TXIF);

}

}

 

Помогите разобраться, как передать корректно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Передается не число, о текст

data1=12345678 - data1="12345678"

 

Вот пример на mikroBasic PRO for PIC

 

' *

' * Project name:

' UART2 (Simple usage of UART2 module library sub functions)

' * Copyright:

' © Mikroelektronika, 2009.

' * Revision History:

' 20081218:

' - initial release

' * Description:

' This code demonstrates how to use UART2 library routines. Upon receiving

' data via RS232, MCU immediately sends it back to the sender.

' * Test configuration:

' MCU: P18F8520

' Dev.Board: BIGPIC5

' Oscillator: HS, 10.0 MHz

' Ext. Modules: -

' SW: mikroBasic PRO for PIC

' * NOTES:

' - Connect UART2 jumpers J14 and J15 (board specific).

' *

 

program UART2

dim uart_rd as byte

 

main:

CMCON = CMCON or 0x07 ' turn off comparators

ADCON1 = ADCON1 or 0x0F ' turn off analog inputs

 

UART2_Init(9600) ' Initialize UART module at 9600 bps

Delay_ms(100) ' Wait for UART module to stabilize

 

UART2_Write_Text("Start")

UART2_Write(10) ' Line feed

UART2_Write(13) ' Carriage return

 

while (TRUE) ' Endless loop

if (UART2_Data_Ready() <> 0) then ' If data is received,

uart_rd = UART2_Read() ' read the received data,

UART2_Write(uart_rd) ' and send data via UART

end if

wend

end.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость jawa634

Спасибо, всё заработало!! Разобрался). Кому надо есть отлаженная библиотека работы с UART. Писал на MCC18.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

︽ Наверх страницы ︽
×
×
  • Создать...