Оригинальная статья взята отсюда
| За основу взята схема by MM с добавлением делителя на ТМ2 для использования кварцевого резонатора на 9216 КГц и получения скорости обмена 115200 (хотя реальная работа без проглатывания некоторых байт возможна на БК 3-4 МГц только на скорости 57600, эта скорость используется только один раз, чтобы переключить ESP8266 на 57600), стабилизатора на 3.3в для использования ESP8266 и добавлена MAX232 для реализации COM-порта. Т.к. в Altium Designer схемы не было - без косяков на плате не обошлось  |
Для проверки работы использовалась вот такая простенькая терминалка (с исходником, образ диска MK-DOS):
Отформатированный для наглядности исходный код (для компиляции используйте исходник из образа):
.LINK 1000
PORT = 177560 IRQ = 360 FONT = 112276 IN = 400 ; ТЕКУЩИЙ АДРЕС БУФЕРА ПРИЕМА OUT = 402 ; ТЕКУЩИЙ АДРЕС БУФЕРА ПЕРЕДАЧИ ECHO = 404 CODE = 406 ; АДРЕС П/П ПЕРЕКОДИРОВКИ ИЛИ 0 CHR = 410
CALL STA START: MOV #1000, SP CLR 177660 MTPS #0 BIT #100, 177716 BNE KEY MOV #12000, R4 ; АВТОПОВТОР TST (PC)+ PRIZN: .WORD 0 BNE 2KEY 2: BIT #100, 177716 BNE KEY CALL INOUT SOB R4, 2 INC PRIZN 2KEY: MOVB 104, R0 BR 1KEY KEY: CLR PRIZN
CALL KURSOR ; МОРГАНИЕ КУРСОРОМ MOV #20000, R1 0JOB: CMP IN, #BUFIN BHI 5KEY TSTB 105 BNE 5KEY SOB R1, 0JOB MOV #12000, R1 5KEY: CALL KURSOR 3KEY: CALL INOUT TSTB 105 BNE 4KEY SOB R1, 3KEY BR START
4KEY: EMT 6
1KEY: MOV #TABKEY, R1 ; ТАБЛИЦА ПЕРЕХОДОВ MOV #TABJMP, R2 ; ПО КНОПКАМ АР/2 И ПРОЧ. 3K: TSTB @R1 BEQ 4K CMPB (R1)+, R0 BEQ 0OK TST (R2)+ BR 3K 0OK: MOV @R2, R2 MOV #START, -(SP) JMP @R2
4K: MOVB R0, @OUT ; ЗАПИСЬ В БУФЕР ВЫВОДА INC OUT
CALL INOUT MOV #6000, R0 ; ЗАДЕРЖКА ДЛЯ ОТПУСКАНИЯ SOB R0, . ; КЛАВИШИ JMP START
INOUT: CMP IN, #BUFIN ; ВЫВОД ВСЕГО ИЗ БУФЕРОВ BLOS 1 MOV #BUFIN, R3 4: CMPB #300, 177717 BNE 6
5: MOV #75400, 177716 ; ДЛЯ 11(М) ОТДЕЛЬНО MOVB (R3)+, R0 MOV #16000, 177716 MOV CODE, R4 BEQ 8 CALL @R4 8: CALL EMT16 CMP R3, IN BLO 5 BR 10
6: MOVB (R3)+, R0 ; 10-КА МЕДЛЕННЕЕ MOV CODE, R4 BEQ 9 CALL @R4 9: CALL EMT16 CMP R3, IN BLO 6
10: MOV #BUFIN, IN
1: CMP OUT, #BUFOUT BLOS 2 MOV #BUFOUT, R3 3: TSTB PORT+4 BPL 3 MOVB (R3)+, R0 MOVB R0, PORT+6 TST ECHO BEQ 7 MOVB R0, @IN INC IN 7: CMP R3, OUT BLO 3 MOV #BUFOUT, OUT 2: RET
IRQ360: CMP IN, #40000 BLO 1 MOV #BUFIN, IN 1: MOVB PORT+2, @IN INC IN RTI
IRQ11M: CMP IN, #140000 BLO 1 MOV #BUFIN, IN 1: MOV #75400, 177716 MOVB PORT+2, @IN MOV #16000, 177716 INC IN RTI
TABKEY: .BYTE 200, 201, 202, 203, 204, 205, 206, 207, 210, 211 .BYTE 245, 267, 244, 253, 265 .BYTE 14, 11, 33, 32, 10, 31, 12, 23, 30 .BYTE 212, 3, 223, 0 .EVEN
TABJMP: .WORD AR2, AR2, AR2, AR2, AR2, AR2, AR2, AR2, AR2, AR2 .WORD ECHO1, WIN, DOS, KOI, UTF .WORD SBR, TAB, DOWN, UP, LEVO, PRAVO, ENTER, WS, DEL .WORD ARENT, KT, ARWS
DEL: RET SBR: RET LEVO: RET PRAVO: RET TAB: RET DOWN: RET UP: RET WS: RET ARWS: RET ARENT: RET
AR2: BIC #177760, R0 INC R0 MOV #KEYS-200,R5 1: ADD #200, R5 SOB R0, 1 2: MOVB (R5)+, R0 BNE 3 MOVB #15, @OUT INC OUT MOVB #12, @OUT INC OUT CLR PRIZN BR 0EX 3: CMPB #'■, R0 ; ЗАМЕНА "■" НА CR/LF BNE 4 MOVB #15, @OUT INC OUT MOVB #12, @OUT INC OUT BR 2 4: MOVB R0, @OUT INC OUT BR 2
UTF: MOV #UTF8, CODE CLR PRIZN MOV #TUTF, R3 CALL POS BR 0EX
WIN: MOV #WIND, CODE CLR PRIZN MOV #TWIN, R3 CALL POS BR 0EX
DOS: MOV #DOS866, CODE CLR PRIZN MOV #TDOS, R3 CALL POS BR 0EX
KOI: CLR CODE CLR PRIZN MOV #TKOI, R3 CALL POS BR 0EX
ECHO1: COM ECHO CLR PRIZN 0EX: JMP START
HLT: SUB @PC, @SP ; БЛОКИРОВКА СТОП RTI ; ВЫХОД - КТ
KT: CLR PORT JMP 100000
ENTER: MOVB #15, @OUT INC OUT MOVB #12, @OUT INC OUT CLR PRIZN RET
KURSOR: MOV R3, -(SP) ; ВКЛ/ВЫКЛ КУРСОРА MOV R2, -(SP) MOV 160, R3 ADD #700, R3 MOV #2, R2 1: CALL 111434 COMB @R3 SOB R2, 1 MOV (SP)+, R2 MOV (SP)+, R3 RET
EMT16: MOV R0, -(SP) MOV 156, R0 BIC #177700, R0 CMPB R0, #77 BNE 9 MOV #12, R0 CALL EM3 9: MOV (SP)+, R0 2: CMPB R0, #40 BLO EM3 CMPB R0, #200 BLO TTOUT CMPB R0, #240 BHI TTOUT RET EM3: MOV R5, -(SP) CALL 102234 MOV (SP)+, R5 RET
TTOUT: MOV R0, -(SP) ; ТИПА "БЫСТРЫЙ" EMT 16 MOV R1, -(SP) MOV R2, -(SP) MOV R3, -(SP) MOV #40000, R2 BIC #177400, R0 TSTB R0 BPL 10 SUB #40, R0 10: ASL R0 MOV R0, R3 ASL R0 ASL R0 ADD R3, R0 ADD #FONT-500,R0 MOV 160, R3 MOV #100, R1 MOVB (R0)+, @R3 ADD R1, R3 BPL 113 SUB R2, R3 113: MOVB (R0)+, @R3 ADD R1, R3 BPL 114 SUB R2, R3 114: MOVB (R0)+, @R3 ADD R1, R3 BPL 115 SUB R2, R3 115: MOVB (R0)+, @R3 ADD R1, R3 BPL 116 SUB R2, R3 116: MOVB (R0)+, @R3 ADD R1, R3 BPL 117 SUB R2, R3 117: MOVB (R0)+, @R3 ADD R1, R3 BPL 118 SUB R2, R3 118: MOVB (R0)+, @R3 ADD R1, R3 BPL 119 SUB R2, R3 119: MOVB (R0)+, @R3 ADD R1, R3 BPL 120 SUB R2, R3 120: MOVB (R0)+, @R3 ADD R1, R3 BPL 121 SUB R2, R3 121: MOVB (R0)+, @R3 MOV 156, R0 BIC #177700, R0 CMP #77, R0 BEQ 30 INC 160 INC 156 30: MOV (SP)+, R3 MOV (SP)+, R2 MOV (SP)+, R1 MOV (SP)+, R0 RET
WEK274: JSR R4, 110346 MOV R5, -(SP) CALL INKEY CMPB R0, #'0 BLO 4 CMPB R0, #'9 BHI 4 BIC #177400, R0 SUB #60, R0 5: BISB #200, R0 BR 3 4: CMPB R0, #11 BNE 2 3: JMP 101622
2: CMPB R0, #12 BEQ 5 BISB #200, R0 CMPB R0, #277 BLOS 1 JMP 101406 1: JMP 101602
WEK60: JSR R4, 110346 MOV R5, -(SP) CALL INKEY1 CMPB R0, #'M-100 BEQ 3 CMPB R0, #'P-100 BEQ 3 CMPB R0, #16 BNE 1 MOVB #200, @#43 MOV #'R, R0 MOV #76, R1 EMT 22 INC R1 MOV #'U, R0 EMT 22 BR 3 1: CMPB R0, #17 BNE 2 CLRB 43 MOV #'E, R0 MOV #76, R1 EMT 22 INC R1 MOV #'N, R0 EMT 22 3: CLR 222 CLR 104 CLR R0 JMP 101322 2: JMP 101150 ZWUKI: MOV #400, R2 BR 12 INKEY1: TST 224 BEQ INKEY CALL 110536 INKEY: MOV #177777, 222 MOV #10,R2 12: MOV #177716, R3 1: MOV 102064, @R3 MOV #30,R0 SOB R0, . MOV 102076, @R3 MOV #30, R0 SOB R0, . SOB R2, 1 MOV @R3, R0 MOVB 177662, R0 RET
WIND: CMPB R0, #192. ; ПЕРЕКОДИРОВКА WIN-1251 BLO 1 BIC #177400, R0 MOVB WINKOI-192.(R0),R0 1: RET
DOS866: MOV R2, -(SP) ; DOS 866 CMPB R0, #40 BLOS 2 MOVB R0, R2 BMI 1 BIT #140, R0 BNE 2 SUB #240, R2 1: CLR R0 BISB TIBM(R2),R0 2: MOV (SP)+, R2 RET
UTF8: BIC #177400, R0 ; UTF-8 2Х БАЙТНЫЙ ТОЛЬКО РУС CMPB R0, #200 BLO 1 CMPB R0, #300 BLO 2 BIC #177770, R0 MOV R0, CHR CLR R0 RET 2: MOV CHR, R5 SWAB R5 ASR R5 ASR R5 ADD R5, R0 MOVB WINKOI-220(R0),R0 1: CLR CHR RET
POS: MOVB (R3)+, R1 2: MOVB (R3)+, R0 BEQ 1 EMT 22 INC R1 BR 2 1: RET
TKOI: .ASCIZ<64>/ KOI-8/ TDOS: .ASCIZ<64>/ DOS/ TWIN: .ASCIZ<64>/WIN-1251/ TUTF: .ASCIZ<64>/ UTF-8/ EN: .ASCIZ<76>/EN/ RU: .ASCIZ<76>/RU/ .EVEN
; DOS 866 .ASCII<15>/■■♥♦♣♠.■/<11><12>/++/<0>/■$→/ .ASCII/←↑!¶■_↑↑↓←└-↑↓АБВГДЕЖЗИЙКЛМНПРСТУФХЦЧШЩЪЫЬЭЮЯабв/ .ASCII/гдежзийклмноп▓▓▓│┤╡║┐┐║║┐┘┘┘┐└┴┬├─┼╞║└┌╧╤║═╬╧╨╤╥└└/ .ASCII/┌┌╫╪┘┌■■■■■рстуфхцчшщъыьэюяЕе/<57>/\/<57>/\→←↑↓:+N$■ / TIBM: .EVEN
WINKOI: .ASCII/АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ/ .ASCII/абвгдежзийклмнопрстуфхцчшщъыьэюя/ .EVEN
KEYS: .BLKB 2200 ; КЛЮЧИ BUFOUT: .BLKB 400 ; БУФЕР ВЫВОДА BUFIN: ; БУФЕР ПРИЕМА
FILE: .ASCIZ/TERM.INI / .EVEN HLT1: MOV #ERR, R1 CLR R2 EMT 20 TST 177662 WAIT JMP 100000
ERR: .ASCII /НЕ НАЙДЕН РЕГИСТР ИРПС 177560/<12> .ASCII /ПЕРЕКЛЮЧАТЕЛЬ "IRQ 360" Д.Б. УСТАНОВЛЕН "ON",/ .ASCIZ /"ADR" - "OFF"/ .EVEN
STA: MOV #FILE, R3 ; ЗАГРУЗКА ФАЙЛА TERM.INI MOV #320, R1 MOV R1, R0 MOV #3, (R0)+ MOV #EOF, (R0)+ CLR (R0)+ MOV #16, R2 MOVB (R3)+, (R0)+ SOB R2, .-2 EMT 36 TSTB 1(R1) BNE 1
2: MOV #HLT1, 4 TST PORT ; ПРОВЕРКА НАЛИЧИЯ ИРПС MOV #HLT, 4 MOV #KEYS, R3 ; УСТАНОВКА КЛЮЧЕЙ ПО АР/2 MOV 264, R1 MOV 266, R2 ADD R1, R2 DEC R1 3: INC R1 CMP R1, R2 BHI 1 CMPB @R1, #'0 BLO 3 CMPB @R1, #'9 BHI 3 CMPB 1(R1), #': BNE 3 MOV R3, R4 MOVB @R1, R5 SUB #60, R5 4: ADD #200, R4 SOB R5, 4 INC R1 5: INC R1 CMP R1, R2 BHI 1 CMPB @R1, #12 BEQ 7 MOVB @R1, (R4)+ 7: CLRB @R4 TSTB @R1 BEQ 3 CMPB #12, @R1 BEQ 3 BR 5
1: EMT 14 MOV #232, R0 EMT 16 MOV #HLT, 4 ; УСТАНОВКА ВЕКТОРОВ ПРЕРЫВАНИЙ MOV #BUFIN, IN MOV #BUFOUT, OUT CLR ECHO MOV #UTF8, CODE CLR CHR MOV #IRQ360, 360 CMPB #300, 177717 BNE 0BK10 MOV #IRQ11M, 360 ; ДЛЯ БК11(М) 0BK10: MOV #340, 362 MOV #WEK60, 60 MOV #WEK274, 274
MOV #40000, R0 ; ОЧИСТКА ЭКРАНА MOV #10000, R2 CLR (R0)+ CLR (R0)+ SOB R2, .-4 MOV #41500, R1 MOV #40,R2 MOV #52525, (R1)+ SOB R2, .-4 MOV #EN, R3 CALL POS MOV #TUTF, R3 CALL POS MOV #THELP, R1 CLR R2 EMT 20
MOV #KEYS, R4 ; ВЫВОД КЛЮЧЕЙ MOV #'0, R5 MOV #TAR2, R1 CLR R2 EMT 20 6: MOV R5, R0 EMT 16 MOV #':, R0 EMT 16 MOV R4, R1 MOV #5100, R2 EMT 20 MOV #12, R0 EMT 16 ADD #200, R4 INC R5 CMP R5, #72 BLO 6 MOV #12, R0 EMT 16 BIS #100, PORT RET
TAR2: .ASCIZ /АР2 +/<12> THELP: .ASCII <234>/АР2/<234>/ + /<234>/E/<234>/-ECHO / .ASCII <234>/K/<234>/ОИ-8 /<234>/D/<234>/OS-866 / .ASCIZ <234>/W/<234>/IN-1251 /<234>/U/<234>/TF-8/<12><12> .EVEN
EOF:
.END
Для проверки модуля WiFi необходимо в TERM.INI прописать в строке 3:AT+CWJAP_CUR="MyAP","************" адрес точки доступа и пароль, затем последовательно нажимая АР2+1...6 и дожидаясь ответа, загрузить всем известный сайт 
Иллюстрирующее видео:
Документацию и АТ-команды к ESP8266-01 см. на https://esp8266.ru Для подключения к USB подойдет, например, адаптер CP2102 USB UART Board (micro)
ВНИМАНИЕ! Для питания требуется 5 вольт, а не 4.7, например. На новодельных БК by Voland все работает без проблем, на оригинальных - могут возникнуть проблемы с сигналом RR (готовность приемника). Рекомендуется продублировать +5 вольт медным проводом на разъем МПИ (А4,А12,В12), тогда можно снять перемычку с R6 (см.схему). Впрочем, на модуле WiFi он не используется. Хуже того, из-за программной реализации и буферов FIFO на PC даже без установленной готовности PC успевает загнать в буфер байт эдак 460...
|