Работал кто-нибудь с данным МК ?
Хочу посылать и принимать данные и тд... сейчас просто для проверки такой код... почему если я посылаю данные, то в ответ мне приходят они же... хотя не должно быть такого.
Ставил брейкпоинты... в прерывание МК не заходит.
Если просто передавать данные, то все отлично, но при вкл/выкл COM-порта данные могут изменятся. Пользуюсь Comp port ToolKit.
разъясните пожалуйста.
Код:
|
#include "c8051f330.h"
#define TRUE 1
#define FALSE 0
void Timer_Init(void);
void Port_IO_Init(void);
void Interrupts_Init(void);
void Init_Device(void);
unsigned char GetB(void);
void Reaction(void);
void SendB(unsigned char);
unsigned char Do = 0xFF;
unsigned char Bo = 0xAA;
unsigned char i = 0x00;
void main(void){
PCA0MD &= ~0x40;
Init_Device();
EA = 1;
while(TRUE){
};
}
/*---------------------------------------Инициализация----------------------------------*/
void Timer_Init()
{
TMOD = 0x20;
CKCON = 0x08;
TH1 = 0xF3;
}
void Port_IO_Init()
{
XBR0 = 0x01;
XBR1 = 0xC0;
}
void Interrupts_Init()
{
IE = 0x90;
}
void Init_Device(void)
{
Timer_Init();
Port_IO_Init();
Interrupts_Init();
TR1 = 1;
SCON0 = 0x10;
}
/*--------------------------------------------------Функции----------------------------------------------------------------*/
/*
unsigned char GetB(void)
{
unsigned char InputByte;
while(!RI0);
InputByte = SBUF0;
RI0 = 0;
return InputByte;
}
*/
/*
void Reaction(void)
{
unsigned char Working_Byte;
Working_Byte = GetB();
if(Working_Byte == ){
}
if(WorkingByte == ){
}
*/
void SendB(unsigned char SendByte)
{
while(!TI0);
TI0 = 0;
SBUF0 = SendByte;
}
/*----------------------------------------------Прерывание-----------------------------------------------------------------*/
void HW_UART_ISR (void) interrupt 4 using 1
{
if (RI0){
RI0 = 0;
SendB(Do);
}
else if (TI0){
TI0 = 0;
SendB(Bo);
}
} |