подпрограмму передачи ставлю в main:
Код
while (1)
{
tfin=temperature;
SFRPAGE = UART0_PAGE;
if (RI0 == 1)
RI0=0;
tfin=SBUF0;
if (TI0 == 1)
TI0=0;
SBUF0=tfin;
}
}
{
tfin=temperature;
SFRPAGE = UART0_PAGE;
if (RI0 == 1)
RI0=0;
tfin=SBUF0;
if (TI0 == 1)
TI0=0;
SBUF0=tfin;
}
}
инициализация уапп
Код
void UART_Init()
{
SFRPAGE = UART0_PAGE;
SCON0 = 0x50;// 8-ми разрядный, изменяемая скорость передачи, генератор скорости-таймер 1
SFRPAGE = TIMER01_PAGE;
TCON = 0x40;
TMOD = 0x20;
TH1 = 0xF0;
TR1=1;
}
{
SFRPAGE = UART0_PAGE;
SCON0 = 0x50;// 8-ми разрядный, изменяемая скорость передачи, генератор скорости-таймер 1
SFRPAGE = TIMER01_PAGE;
TCON = 0x40;
TMOD = 0x20;
TH1 = 0xF0;
TR1=1;
}
в описании говориться
Цитата
Передача данных начинается, когда происходит запись байта данных в регистр SBUF0. Флаг
прерывания от передатчика TI0 (SCON0.1) устанавливается в 1 в конце передачи (в начале передачи стопового
бита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN0
(SCON0.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF0, если
соблюдаются следующие условия: RI0 должен быть равен лог.0, и, если SM20 равен лог.1, то стоповый бит
должен быть равен лог.1.
Если эти условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF0, стоповый бит
сохраняется в бите RB80 и устанавливается в 1 флаг RI0. Если эти условия не соблюдаются, то SBUF0 и RB80
не будут загружаться и флаг RI0 не устанавливается. При установке флагов TI0 или RI0 будет сгенерировано
прерывание, если оно разрешено.
подскажите, где ошибка, в нинциализации, или при опросе флагов?
прерывания от передатчика TI0 (SCON0.1) устанавливается в 1 в конце передачи (в начале передачи стопового
бита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN0
(SCON0.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF0, если
соблюдаются следующие условия: RI0 должен быть равен лог.0, и, если SM20 равен лог.1, то стоповый бит
должен быть равен лог.1.
Если эти условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF0, стоповый бит
сохраняется в бите RB80 и устанавливается в 1 флаг RI0. Если эти условия не соблюдаются, то SBUF0 и RB80
не будут загружаться и флаг RI0 не устанавливается. При установке флагов TI0 или RI0 будет сгенерировано
прерывание, если оно разрешено.