Раздел: Документация
0 ... 19 20 21 22 23 24 25 ... 55 lee di, [bp+6] mov dx,ds:[0] mov ds,dx mov si,es : [di + 2] mov cx,es:[di] and cx,7fffh Передача строки no RS232 в mov Ы,с1 OUTBYTE mov Ы, ch OUTBYTE MET: mov bl,byte ptr [si] OUTBYTE inc si loop MET pop ds pop es pop bp PROGRAM ends end START /Сопряжение с ТВ, /прием строки С$ из ТВ. /Длина строки С$ в сх. микроконтроллер. /Передача младшего /байта длины строки С$. /Передача старшего /байта длины строки С$. ;Вывод /строки С$ !!! (байт в Ы /побайтно /через RS232. p86rd.asm
INBYTE macro local МЕТ1,МЕТ2 mov dx,3 fbh mov al,47h out dx,al /Установка /линии TxD ;(разрешение передачи) MET1: MET2 : en dm mov dx,3£eh in al, dx test al,20h jz MET1 mov dx,3fbh mov al,07h out dx,al mov dx,3fdh in al,dx test al,l jz MET2 mov in dx,3f8h al, dx Основная подпрограмма /Ожидание ;старт-бита, /(установки /линии DSR). ;Сброс /линии TxD ;(запрет передачи) . ;Ожидание /окончания прихода /байта в буффер приемника / (установки бита DR-data ready) . /Ввод байта из буффера приемника / (введенный байт - в al) . PROGRAM SEGMENT org lOOh ASSUME CS:PROGRAM,DS:PROGRAM,ES:PROGRAM,SS:PROGRAM START: push bp;Сохранение адреса mov bp,sp/возврата в стеке push es push ds lesdi, [bp+6] movdx, ds: [0] movds,dx movsi,es:[di+2] movcx,es:[di] andcx,7fffh /Сопряжение с ;TB. /Смещение строки С1$ /Длина /строки С1$ - в сх. MET: INBYTE ;B al - считанный байт. mov [si] , al inc si loop MET pop ds pop es pop bp;Вызов адреса возврата из стека inrsll5.asm Программа приема МК строки символов по RS232 (с передачей длины строки) и вывода символов из МК в компьютер. Fcore=11059200 Гц (Fkb=28800 Гц). Скорость обмена - 115200 и 9600 бод. Синхронизация - с помощью линий TxD и RxD. Для проверки использовать программы OUTBYTEC.EXE(CLA) и OUTBYTE1.EXE(BAS). Макрос ввода байта В МАКРОСАХ НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ РУССКИЙ ЯЗЫК В КОММЕНТАРИЯХ! ! ! Алгоритм ввода байта INBYTE .macro PROGRAM ENDS endSTART clr TxD jb RxD,$ setb TxD jnb ri,$ mov a,sbuf clr ri endm ;Enable transfer ;Waiting start-bit /-Disable transfer ;Waiting set flag ri ;Input byte from buffer ;Clear flag ri 0 ... 19 20 21 22 23 24 25 ... 55
|