Доброго времени суток, господа и дамы!
Недавно начал изучать микроконтроллер at89c52 (выбрал его из-за удобств программирования). Пытался реализовать коммуникацию с пк через uart. Стащил с атмеловского сайта следующий код:
Смысл данной программы в том, что я с компьютера отправляю число, а мк это число просто мне возвращает.
Так вот когда я отправляю число больше 77, то с мк возвращается тоже число, но стоит мне отправить число меньше 77, то возвращается число увеличенное на 70. Просто сам не могу разобраться в чём дело, а гугл ответа не даёт.
Заранее благодарю за помощь.
Недавно начал изучать микроконтроллер at89c52 (выбрал его из-за удобств программирования). Пытался реализовать коммуникацию с пк через uart. Стащил с атмеловского сайта следующий код:
Код: Выделить всё
org 000h
ljmp begin
org 23h
ljmp serial_IT
org 0100h
begin:
MOV SCON, #0F0h; /* (0f0h) uart in mode 1 (8 bit), REN=1 */
ORL TMOD, #21h; /* (21h) Timer 1 in mode 2 */
MOV TH1, #0FFh; /* 9600 Bds, 4.000MHz */
MOV TL1, #0FFh; /* 9600 Bds, 4.000MHz */
SETB ES; /* Enable serial interrupt*/
SETB EA; /* Enable global interrupt */
SETB TR1; /* Timer 1 run */
JMP $; /* endless */
serial_IT:
JNB RI,EMIT_IT ; test if it is a reception
CLR RI ; clear reception flag for next reception
CLR A;
MOV A,SBUF ; read data from uart
MOV SBUF,A ; write same data to uart
LJMP END_IT
EMIT_IT:
CLR TI ; clear transmition flag for next transmition
END_IT:
RETI
end
Так вот когда я отправляю число больше 77, то с мк возвращается тоже число, но стоит мне отправить число меньше 77, то возвращается число увеличенное на 70. Просто сам не могу разобраться в чём дело, а гугл ответа не даёт.
Заранее благодарю за помощь.
