Помогите пожалуйста начинающему. Я написал тестовую програмку для работы с UART для микроконтроллера Atmel AT89S8252, но микроконтроллер не отсылает назад полученный байт (то что микроконтроллер получает байт я проверил вывев его на порт Р2) . Для написания использовал среду разроботки IAR Embedded Workbench for MCS-51 Evaluation. Текс программы:
#include <ioAT89S8252.h> char y;
int main( void ) { SCON=0x50;//выбор 1 режима UART и установка бита REN в 1 TMOD=TMOD | 0x20;//установка таймера/счётчика 1 в режим работы таймера во 2 режим для тактирования обмена данными TH1=0xfd;//для скорости обмена данными 9600 бод при бите SMOD==0 (скорость не удваивается) регистра PCON при частоте кварцевого резонатора - 11,059200 МГц TL1=0xfd; IE_bit.ES=1; IE_bit.EA=1; TCON_bit.TR1=1;//запуск таймера 1 P2=0; while(1); } #pragma vector=0x23 __interrupt void SCON_int (void) //прерывание происходит если TI=1 или RI=1 или SPIF=1 { if (SCON_bit.RI == 1) { SCON_bit.RI = 0; /* clear reception flag for next reception */ y = SBUF; /* Read receive data */ P2=y; SBUF = y;/* Send back same data on uart*/ SCON_bit.TI = 0; } else SCON_bit.TI = 0; /* if emission occur */ } /* clear emission flag for next emission*/
Если кто-то занет в чём проблема или ошибка напишите пожалуйста. Заранее благодарен за ответ.
|