Показать сообщение отдельно
Старый 18.07.2017, 09:06   #3
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,444
Вес репутации: 4370/120
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Вопрос по микроконтроллеру 8051

Цитата:
Сообщение от bzx Посмотреть сообщение
1. Настройку портов проверьте, регистры PxMDIN, PxMDOUT, P0SKIP, XBR0 и XBR1.
2. WDT отключите, по умолчанию может быть включен.
Регистры в нем по-другому называются. По умолчанию пины настроены как квазидвунаправленный, т.е. позволяет писать в порт и читать порт без перенастройки.
Цитата:
Quasi bidirectional (traditional 8051 I/O port output)
Sink Current up to 20mA, pull-up Current is 270 uA.

A quasi-bidirectional port can be used as an input and output without the need

to reconfigure the port.
Я хотел включить в этом микроконтроллере UART, чтобы с его помощью выводить значения регистров, т.е. использовать отладку через UART, но так и не смог его включить.

На Си для x51 cмог только клокать выводами.

Никак не пойму откуда пачки импульсов, это точно не WDT, импульсы похожи на пакеты UART-а, причем на P0_6 и P0_7 импульсы одинаковые. Похоже, что какой-то кусок кода (не мой) что-то выдает.

Вот пример blink из каталога установки Reads51, лишнее я закомментировал. Размер HEX-а 2 килобайта, что-то многовато для простого клокания, ну да ладно. Если скомпилировать и прошить МК, то на P1_0 сигнал частотой около 1 МГц, вроде все нормально, четвертый скриншот. Может, дело в этой IDE Reads x51 v4.52? Хрень генерит?

Цитата:
#define TRUE 1
#define FALSE 0

#include <sfr51.h> // P1_0 is defined here
// prototypes
//#include <Sio51.h>

main(){
int n;

// --- initialize serial port (9600 Baud) ---
//InitSerialPort0(DEF_SIO_MODE); //DEF_SIO_MODE is defined in <Sio51.h>
//putc('\n');

// endless loop
while(TRUE)
{
P1_0=0; // LED on
//putc('+');
//for(n=0; n<10000; n++); // waste some cycles
P1_0=1; // LED off
//putc('0');
//for(n=0; n<10000; n++); // waste some cycles
}
}
PS: Если код исправить, то частота в два раза уменьшается, т.е. код мой.
Код:
while(TRUE)
  {
  P1_0=0;                 // LED on
  P1_0=0;                 // LED on

  P1_0=1;                 // LED off
  P1_0=1;                 // LED off
  }
}
Миниатюры
Quasi-bidirectional.PNG   P0_6 P0_7.PNG   STC ISP.PNG   P1_0 1MHz.PNG  
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 18.07.2017 в 09:23.
Pridnya вне форума   Ответить с цитированием