Sarog 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 (изменено) · Жалоба Добрый день, помогите( не могу связаться с пк по 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пасибо Изменено 15 ноября, 2012 пользователем Mikron Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Cosmojam 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба Соединил без max232, у pic допустимо ведь так для портов? Допустимо :) Есть вероятность что порт не умрёт, но с чего вдруг оно должно работать? http://en.wikipedia.org/wiki/RS-232#Voltage_levels сравните с TTL уровнями на ножках МК Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба MAX232 инвертирует TxD и RxD в соответствии со стандартом. ЕМНИП, в регистрах УСАРТа ПИКов нет битов, включающих аппаратную инверсию TxD и RxD. Вероятно us = (x)/(12000000L/FOSC)|1. (на выходе всё равно будет цена на дрова) Соотнесите delay_ms(200000) с delay_ms(unsigned int ms). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sarog 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба Cosmojam, xemul, спасибо А если я отключу от линии передачи. и вообще в коде оставлю только бесконечный цикл и TXEN = 1; //разрешение приема SYNC = 0; //асинхронный режим SPEN = 1; //включение работы приемника/передатчика на линии TX будет "1" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба А если я отключу от линии передачи. и вообще в коде оставлю только бесконечный цикл и на линии TX будет "1" ? Да, это пассивное состояние ноги TX контроллера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sarog 0 15 ноября, 2012 Опубликовано 15 ноября, 2012 · Жалоба вот черт, спасибо за помощь забыл в main написать init_usart() ( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться