,,,CR       EQU     0DH         ;Код возврата каретки (ASCII)
,,,LF       EQU     0AH         ;Код перевода строки
,,,ESC      EQU     1BH         ;Код операции ESC
,,,
,,,
,,,
,,,        ORG 0000h
0000,02 01 00,,            JMP start
,,,
,,,        ORG 0023h
0023,32,,        RETI
,,,
,,,            ORG 0100h
,,,
,,,; Инициализация UART тут:
0100,75 A0 FF,start,start:  MOV P2,#255         ; Все выводы на высокий уровень
0103,75 A8 00,,        MOV IE,#0              ; Прерывания отключаем нафиг, чтобы не мешались (далеко не везде и не
0106,C2 AF,,            CLR EA              ; До кучи вообще запрещаем все прерывания.
0108,D2 AC,,        SETB ES            ; Но оставляем прерывание от UART (на всякий, один фиг оно пока не работа
,,,
010A,75 87 80,,        MOV PCON,#80h      ; Устанавливаем бит удвоенной скорости, он расположен в регистре PCON
010D,C2 8E,,        CLR TR1            ; Сбрасываем флаг таймера = таймер готов к работе
010F,75 89 20,,        MOV TMOD,#20h      ; Настраиваем таймер 1 в режим 2 (автоперезагрузка значеня. Регистр TMOD
0112,75 8D F5,,        MOV TH1,#0F5h      ; 9600 @ 20MHz  Прескалер таймера, определяющий, что порт будет выдавать
0115,D2 8E,,        SETB TR1           ; Установили бит TR1 = запустили таймер
0117,75 98 52,,        MOV SCON,#52h      ; Uart Init and UART Ready - инициализация параметров UART
,,,
011A,20 90 08,LOOP,LOOP:           JB      P1.0,nxt1
011D,74 31,,                MOV     A,#'1'     ;    тут мы тупо крутимся пока
011F,12 01 48,,                CALL    UART
0122,30 90 FD,,                JNB     P1.0,$
,,,
0125,20 92 08,nxt1,nxt1:           JB      P1.2,nxt2
0128,74 32,,                MOV     A,#'2'
012A,12 01 48,,                CALL    UART
012D,30 92 FD,,                JNB     P1.2,$
,,,
0130,20 94 08,nxt2,nxt2:           JB      P1.4,nxt3
0133,74 33,,                MOV     A,#'3'
0135,12 01 48,,                CALL    UART
0138,30 94 FD,,                JNB     P1.4,$
,,,
013B,20 96 DC,nxt3,nxt3:           JB      P1.6,LOOP
013E,74 34,,                MOV     A,#'4'
0140,12 01 48,,                CALL    UART
0143,30 96 FD,,                JNB     P1.6,$
,,,
,,,
0146,80 D2,,                JMP             LOOP
,,,;======= Proc ========================================
,,,; Out Byte in UART
,,,
0148,30 99 FD,UART,UART:    JNB     TI,$        ;Ожидание готовности
014B,C2 99,,         CLR     TI             ; сброс флага готовности
014D,F5 99,,         MOV     SBUF,A      ;Выдача символа в буффер UART
014F,12 01 56,,         CALL   DELAY           ; вызов задержки
0152,12 01 56,,         CALL   DELAY           ; вызов задержки
0155,22,,         RET
,,,;======================================================
,,,; Stupid Delay   Тупая регистровая задержка на куче вложенных циклов пустых. Лень было таймер загруж
0156,7F FF,DELAY,DELAY:  MOV R7,#255
0158,7E FF,ZD0,ZD0:    MOV R6,#255
015A,7D FF,,            MOV R5,#255
015C,DE FE,ZD1,ZD1:    DJNZ R6,ZD1
015E,DD FE,ZD2,ZD2:    DJNZ R5,ZD2
0160,DF F6,,        DJNZ R7,ZD0
0162,22,,        RET
,,,
,,,
,,,
000E,,,        END
