Запустить Прерывание Uart1 получилось
1. Надо помнить о специфике буфера UART (один приём и передачу).
2. Одно прерывание на Приём символа и Передачу (буфер пуст)!!! В обработчике ручками определяем причину!
3. Самостоятельно сбрасывать в конце обработчика НУЖНЫЙ флаг (После приёма - RI, Передачи - TI)
Порт в режим Quasi (сразу уставил и не проверял в иных режимах порта)
$regfile = "STC_8H.DAT" ' STC registers list $crystal = 8000000 ' CPU clock frequence '11059200 Dim Adres_w As Word , Temp As Byte My_led Alias P1.2 P1ie = &B1111_1111 ' 1: Enable digital pins P1pu = &B0000_0000 ' 1: pull-up resistor P1m1 = &B_0000_0000 : P1m0 = &B_1010_0110 ' 1=Push-pull output mode P3ie = &B1111_1111 ' 1: Enable digital pins P3pu = &B0000_0000 ' 1: pull-up resistor P3m1 = &B0000_0000 : P3m0 = &B_0000_0000 ' Quasi output mode ' UART P_sw1 = &H00 'RXD/P3.0, TXD/P3.1 'P_sw1 = &H40 'RXD_2/P3.6, TXD_2/P3.7 'P_sw1 = &H80 'RXD_3/P1.6, TXD_3/P1.7 Scon = &H50 ' 8-Bits And Variable Baudrate Auxr = &H54 'Timer is 1T mode, use Timer1 as baudrate generator Tmod = Tmod And &H0F 'Set timer work mode 'Tl1 = &HE0 : Th1 = &HFE 'Initial timer - 9600 / 11059200 'Tl1 = &HE8 : Th1 = &HFF 'Initial timer - 115200 / 11059200 'Tl1 = &HF3 : Th1 = &HFF 'Initial timer - 19200 / 1MHz 'Tl1 = &HF3 : Th1 = &HFF 'Initial timer - 38400 / 2MHz Tl1 = &HCC : Th1 = &HFF 'Initial timer - 38400 / 8MHz Et1 = 0 'Disable Timer interrupt Tr1 = 1 'Timer1 start run Sbuf = 0 ' Magic ... Waitms 50 Print " Start!" On Serial Uart_int Nosave 'Initialise the INT0 Interrupt 'Priority Set Serial 'serial int highest level Enable Serial 'enable the interrupt Enable Interrupts Do Loop '------------------------------------ Uart_int: If Ri = 1 Then Temp = Sbuf Printbin Temp My_led = Not My_led 'Waitms 25 Ri = 0 End If Return