Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PIC16F887
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Mikron
Добрый день, помогите( не могу связаться с пк по usart

Соединил без max232, у pic допустимо ведь так для портов?

Код вот

Код
//#include "16F887.h"
#pragma origin 4
#pragma interruptSaveCheck  w


#define FOSC 8000000L

#define delay_us(x) { unsigned char us; \
                      us = (x)/(12000000/FOSC)|1; \
                      while(--us != 0) continue; }

void delay_ms(unsigned int ms)
{
  unsigned char i;
  do {
    i = 4;
    do {
      delay_us(164);
    } while(--i);
  } while(--ms);
}

void init_usart(void)
{
    TRISC=0x80;        //rx - input, tx - output
    BRGH = 0;        //low
    SPBRG = 12;        //9600 = 8000000/(64(x+1)) =>x=12
    SYNC = 0;         //asynchronous
    SPEN = 1;         //enable serial port pins
    TXIE = 0;         //disable tx interrupts
    RCIE = 0;        //disable rx interrupts
    TX9  = 0;         //8- or 9-bit transmission
    RX9  = 0;         //8- or 9-bit reception

    TXEN = 1;         //enable the transmitter
    CREN = 0;         //disable the transmitter
}

void putch(unsigned char byte)  /* передача одного байта */
{
/*    while(!TXIF)
        continue;
*/
    TXREG = byte;
}

void main(void)
{
      OSCCON=0x70;
      TRISD = 0x00;

      for(;;) {
        putch(0x43);
          PORTD = 0x0;
        delay_ms(200000);
        PORTD = 0x1;
        delay_ms(200000);
    }
}


Cпасибо
Cosmojam
Цитата(Mikron @ Nov 15 2012, 10:51) *
Соединил без max232, у pic допустимо ведь так для портов?

Допустимо sm.gif Есть вероятность что порт не умрёт, но с чего вдруг оно должно работать? http://en.wikipedia.org/wiki/RS-232#Voltage_levels сравните с TTL уровнями на ножках МК
xemul
MAX232 инвертирует TxD и RxD в соответствии со стандартом. ЕМНИП, в регистрах УСАРТа ПИКов нет битов, включающих аппаратную инверсию TxD и RxD.
Вероятно us = (x)/(12000000L/FOSC)|1. (на выходе всё равно будет цена на дрова)
Соотнесите delay_ms(200000) с delay_ms(unsigned int ms).
Mikron
 Cosmojam, xemul, спасибо

А если я отключу от линии передачи. и вообще в коде оставлю только бесконечный цикл и
Код
TXEN = 1;  //разрешение приема
SYNC = 0;  //асинхронный режим
SPEN = 1;  //включение работы приемника/передатчика


на линии TX будет "1" ?
xemul
Цитата(Mikron @ Nov 15 2012, 13:00) *
А если я отключу от линии передачи. и вообще в коде оставлю только бесконечный цикл и
на линии TX будет "1" ?

Да, это пассивное состояние ноги TX контроллера.
Mikron
вот черт, спасибо за помощь
забыл в main написать init_usart() (
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.