AT89C51 проблемы

G

Guest

Guest
Я хотел бы сделать два AT89c51 mcus общаться серийно
один MCU будет передавать любые данные о его порт 1 серийно другой MCU MCU, что вторая будет показывать данные о его порт 1.
Я написал код, но его не workingplz проверить прикрепленный файл кода
Я м с использованием 10uF конденсатор между VCC и RST Сцепляющий также 10K резистор между GND и RST Сцепляющий
PLZ
см. прилагаемый файл кода, и скажите мне, если есть проблема в коде или
любые другие проблемы (например, сбросить цепи т.д.)
Извините, но вам необходимо войти в аккаунт это вложение

 
Dont почему вы используете atmels серийный модуль комм?

 
PLZ, Проверьте, если Ваш Micro Power On сбросить работает

По этой простой PRG:

---------- Debuged Примечание:

# включить <reg51.h>

Основными недействительным (недействительными)
(
P1 = 170;
а () ()
)

/ / Конец

Теперь вы должны проверить Port1 Результат В HLHLHLHL напряжения.

Лучше, чтобы изменить программу так:

Передаваемые //----- PRG
# inlcude <reg51.h>
Serial_Init недействительным (недействительными)
(
SCON = 0x52;
EA = 1;
ES = 1;
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
)

недействительным Transmit_Char (неподписанные символ с)
(
SBUF = C;
в то время как (! TI) () / / дожидается передачи
TI = 0;
)

Основными недействительным (недействительными)
(
Неподписанный символ tchar;
P1 = 0x00;
P3 = 0x00;
tchar = P1;
Serial_Init ();
//---- Эта линия предназначена для испытаний
Transmit_Char ( 'H'); / / Debug Передает H знаков для последовательного порта
//---- Эта линия предназначена для испытаний
Transmit_Char ( 'I'); / / Debug
//----
Передача (tchar); / / Здесь Передает порта P1 к последовательному порту
в то время как (1) ()
)
/ / Конец ProgПрием //-------- Prog
# inlcude <reg51.h>
Serial_Init недействительным (недействительными)
(
SCON = 0x52;
EA = 1;
ES = 1;
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
)

недействительным вызов () прервать 4
(
если (RI)
(
P1 = SBUF;
РИ = 0;
)
)

Основными недействительным (недействительными)
(
Serial_Init ();
в то время как (1) ()
)

/ / Конец Prog

Примечание:
A-Убедитесь, что оба MCU использовать одну и ту же частоту XTAL
B-Убедитесь, что вы соединили TxD <-> RXD как чипсы
C-Не используйте MAX-232 для обеих MCU
Д-Чек если компилятор C компилирует Progs содержащие прерывания.
(Не ущерб Interrupt векторов)

----------------------------------

Если у вас возникли проблемы с Сбросить Попробуйте Схематическое:

VCC
^
| VCC
| ^
R = 100 Ом |
| |
| C = 10uf
Switch |
| |
|------------------------ MCU Сбросить Pin
|
|
R = 10K
|
|
GND

A-Убедитесь, что MCU VCC не менее чем на 5 вольт (Некоторые MCU не будет работать должным образом)
Последний раз редактировалось sunsina от 28 ноября 2004 7:39; редактировалось 4 раза в общей сложности

 
Цитата:

PLZ, Проверьте, если Ваш Micro Power On сбросить работает

По этой простой PRG:# включить <reg51.h>Основными недействительным (недействительными)

(

P1 = 170;

а () ()

)/ / Конец
 
Муниб писал:Цитата:

PLZ, Проверьте, если Ваш Micro Power On сбросить работает

По этой простой PRG:# включить <reg51.h>Основными недействительным (недействительными)

(

P1 = 170;

а () ()

)/ / Конец
 
Моя проблема сброса решил я на самом деле использует неверный шестнадцатеричный формат файла, а вниз загрузки кода MCU

Теперь я старался кода приведенные выше на "sunsina", но им все еще не получают мои mcus
последовательный.
Niether мой собственный код дать в Приложение в верхней работает, какие могут быть возможные причины?

Примечание: существует проблема передачи кода на "sunsins". В главная функция называется это "Transmitt", но в соответствии с функцией определения следует Transmitt_Char
Я зафиксировано, что проблема, но все еще не получаете результатов

 
Проблема titally решили исправить коды для передачи и приема сторон

/ / Программа передач# включить <d:\C51A\INCLUDE\reg51.h>недействительным Transmit_Char (неподписанные символ с)
(
в то время как (! TI); / / дожидается предыдущих передать это было сделано
TI = 0;
SBUF = C;
)Основными недействительным (недействительными)
(
Неподписанный символ tchar;
P1 = 0xff;
SCON = 0x52; / / TI установить флаг, чтобы указать, что UART бесплатно
ES = 0; / / отключить серийный прервать связи у нас нет своих ISR
/ / EA = 1; / / позволить остальным прерывания, если она нуждается
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
в то время как (1)

(
tchar = P1;
Transmit_Char (tchar);
)

)/ / Прием стороне код
# включить <d:\C51A\INCLUDE\reg51.h>недействительным вымерших () прервать 4
(
если (RI)
(
РИ = 0;
P1 = SBUF;
)
)

Основными недействительным (недействительными)
(
SCON = 0x52;
EA = 1;
ES = 1;
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
в то время как (1) ()
)

 

Welcome to EDABoard.com

Sponsor

Back
Top