
ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 1





       MCS-51 Family Cross Assembler   A S E M - 5 1   V 1.2
       =====================================================



	Source File:	D:\CODING\C51\HACK_2.ASM
	Object File:	D:\CODING\C51\HACK_2.HEX
	List File:	D:\CODING\C51\HACK_2.LST



 Line  I  Addr  Code            Source

    1:		N      000D	CR       EQU     0DH         ;Код возврата каретки (ASCII)
    2:		N      000A	LF       EQU     0AH         ;Код перевода строки
    3:		N      001B	ESC      EQU     1BH         ;Код операции ESC
    4:
    5:
    6:
    7:		N      0000	        ORG 0000h
    8:	  0000	02 01 00		    JMP start
    9:
   10:		N      0023	        ORG 0023h
   11:	  0023	32		        RETI
   12:
   13:		N      0100		    ORG 0100h
   14:
   15:				; Инициализация UART тут:
   16:	  0100	75 A0 FF	start:	MOV P2,#255         ; Все выводы на высокий уровень
   17:	  0103	75 A8 00	        MOV IE,#0	       ; Прерывания отключаем нафиг, чтобы не мешались (далеко не везде и не
				 всегда надо так!!!)
   18:	  0106	C2 AF			    CLR EA              ; До кучи вообще запрещаем все прерывания.
   19:	  0108	D2 AC		        SETB ES            ; Но оставляем прерывание от UART (на всякий, один фиг оно пока не работа
				ет - EA Сброшен)
   20:
   21:	  010A	75 87 80	        MOV PCON,#80h      ; Устанавливаем бит удвоенной скорости, он расположен в регистре PCON
   22:	  010D	C2 8E		        CLR TR1            ; Сбрасываем флаг таймера = таймер готов к работе
   23:	  010F	75 89 20	        MOV TMOD,#20h      ; Настраиваем таймер 1 в режим 2 (автоперезагрузка значеня. Регистр TMOD
				определяет параметры таймера)
   24:	  0112	75 8D F5	        MOV TH1,#0F5h      ; 9600 @ 20MHz  Прескалер таймера, определяющий, что порт будет выдавать
				9600 бод на 20мгцовом тактовом кварце
   25:	  0115	D2 8E		        SETB TR1           ; Установили бит TR1 = запустили таймер
   26:	  0117	75 98 52	        MOV SCON,#52h      ; Uart Init and UART Ready - инициализация параметров UART
   27:
   28:	  011A	20 90 08	LOOP:   	JB	P1.0,nxt1
   29:	  011D	74 31				MOV     A,#'1'	   ;	тут мы тупо крутимся пока
   30:	  011F	12 01 48	        	CALL    UART
   31:	  0122	30 90 FD			JNB	P1.0,$
   32:
   33:	  0125	20 92 08	nxt1:		JB	P1.2,nxt2
   34:	  0128	74 32				MOV	A,#'2'
   35:	  012A	12 01 48			CALL	UART
   36:	  012D	30 92 FD			JNB	P1.2,$
   37:
   38:	  0130	20 94 08	nxt2:		JB	P1.4,nxt3
   39:	  0133	74 33				MOV	A,#'3'

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   40:	  0135	12 01 48			CALL	UART
   41:	  0138	30 94 FD			JNB	P1.4,$
   42:
   43:	  013B	20 96 DC	nxt3:		JB	P1.6,LOOP
   44:	  013E	74 34				MOV	A,#'4'
   45:	  0140	12 01 48			CALL	UART
   46:	  0143	30 96 FD			JNB	P1.6,$
   47:
   48:
   49:	  0146	80 D2				JMP		LOOP
   50:				;======= Proc ========================================
   51:				; Out Byte in UART
   52:
   53:	  0148	30 99 FD	UART:    JNB     TI,$        ;Ожидание готовности
   54:	  014B	C2 99		         CLR     TI		; сброс флага готовности
   55:	  014D	F5 99		         MOV     SBUF,A      ;Выдача символа в буффер UART
   56:	  014F	12 01 56	         CALL 	DELAY		; вызов задержки
   57:	  0152	12 01 56	         CALL 	DELAY		; вызов задержки
   58:	  0155	22		         RET
   59:				;======================================================
   60:				; Stupid Delay   Тупая регистровая задержка на куче вложенных циклов пустых. Лень было таймер загруж
				ать такой ботвой.
   61:	  0156	7F FF		DELAY:  MOV R7,#255
   62:	  0158	7E FF		ZD0:	MOV R6,#255
   63:	  015A	7D FF			    MOV R5,#255
   64:	  015C	DE FE		ZD1:	DJNZ R6,ZD1
   65:	  015E	DD FE		ZD2:	DJNZ R5,ZD2
   66:	  0160	DF F6		    	DJNZ R7,ZD0
   67:	  0162	22		        RET
   68:
   69:
   70:
   71:				        END





                     register banks used:  ---

                     no errors




ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3





	       L I S T   O F   S Y M B O L S
	       =============================


SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
AC				  BIT	      D6
ACC				  DATA	      E0
B				  DATA	      F0
CR				  NUMBER    000D	   1
CY				  BIT	      D7
DELAY				  CODE	    0156	  61
DPH				  DATA	      83
DPL				  DATA	      82
EA				  BIT	      AF
ES				  BIT	      AC
ESC				  NUMBER    001B	   3
ET0				  BIT	      A9
ET1				  BIT	      AB
EX0				  BIT	      A8
EX1				  BIT	      AA
EXTI0				  CODE	    0003
EXTI1				  CODE	    0013
F0				  BIT	      D5
IE				  DATA	      A8
IE0				  BIT	      89
IE1				  BIT	      8B
INT0				  BIT	      B2
INT1				  BIT	      B3
IP				  DATA	      B8
IT0				  BIT	      88
IT1				  BIT	      8A
LF				  NUMBER    000A	   2
LOOP				  CODE	    011A	  28
NXT1				  CODE	    0125	  33
NXT2				  CODE	    0130	  38
NXT3				  CODE	    013B	  43
OV				  BIT	      D2
P				  BIT	      D0
P0				  DATA	      80
P1				  DATA	      90
P2				  DATA	      A0
P3				  DATA	      B0
PCON				  DATA	      87
PS				  BIT	      BC
PSW				  DATA	      D0
PT0				  BIT	      B9
PT1				  BIT	      BB
PX0				  BIT	      B8
PX1				  BIT	      BA
RB8				  BIT	      9A
RD				  BIT	      B7
REN				  BIT	      9C
RESET				  CODE	    0000
RI				  BIT	      98
RS0				  BIT	      D3

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4



SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
RS1				  BIT	      D4
RXD				  BIT	      B0
SBUF				  DATA	      99
SCON				  DATA	      98
SINT				  CODE	    0023
SM0				  BIT	      9F
SM1				  BIT	      9E
SM2				  BIT	      9D
SP				  DATA	      81
START				  CODE	    0100	  16
T0				  BIT	      B4
T1				  BIT	      B5
TB8				  BIT	      9B
TCON				  DATA	      88
TF0				  BIT	      8D
TF1				  BIT	      8F
TH0				  DATA	      8C
TH1				  DATA	      8D
TI				  BIT	      99
TIMER0				  CODE	    000B
TIMER1				  CODE	    001B
TL0				  DATA	      8A
TL1				  DATA	      8B
TMOD				  DATA	      89
TR0				  BIT	      8C
TR1				  BIT	      8E
TXD				  BIT	      B1
UART				  CODE	    0148	  53
WR				  BIT	      B6
ZD0				  CODE	    0158	  62
ZD1				  CODE	    015C	  64
ZD2				  CODE	    015E	  65
