$MOD52
$TITLE(BYTE SIGNED MULTIPLY)
$PAGEWIDTH(132)
$DEBUG
$OBJECT
$NOPAGING
org 00
AJMP start ;cold START
;**********************************************
;obsazeni portu PORT 1 jsou katody / 8 vyvodu
;PORT 3 - cast jsou anody
anoda_0_dis_1 bit P3.0
anoda_1_dis_1 bit P3.4
anoda_2_dis_1 bit P3.5
anoda_3_dis_1 bit P3.7
;**********************************************
; H L A V N I S M Y C K A
;**********************************************
cseg at 50h
start:
LCALL zhasni ;volej podprogram (rutinu) s nazvem "zhasni"
JMP logo ;skok na rutinu logo
;-------------------------------------------------
;zhasne cislo/pro zjednoduseni se zhasinaji vsechny najednou (i "zhasnute")
zhasni: SETB anoda_0_dis_1 ;nastav bit do H = vypni 1.tranzistor
SETB anoda_1_dis_1 ;vypni 2. tranzistor
SETB anoda_2_dis_1 ;vypni 3. tranzistor
SETB anoda_3_dis_1 ;vypni 4. tranzistor
RET ;navrat z podprogramu
;-----vypise na displej logo DAVI--------
logo: MOV A,#94D ;uloz reprezentaci pismena do Acc
LCALL na_port ;negace cisla kvuli aktivni log. L
CLR anoda_0_dis_1 ;sepni prvni anodu - sviti "d"
LCALL pausa ;pausa behem ktere sviti "d"
LCALL zhasni ;zhasneme "d" (pro jednoduchost se vypne vse)
MOV A,#119D ;uloz reprezentaci pismena do Acc
LCALL na_port ;proved negaci cisla kvuli
CLR anoda_1_dis_1 ;sepni druhou anodu - sviti "A"
LCALL pausa ;atd. atd. atd.
LCALL zhasni
MOV A,#28D
LCALL na_port
CLR anoda_2_dis_1
LCALL pausa
LCALL zhasni
MOV A,#6D
LCALL na_port
CLR anoda_3_dis_1
LCALL pausa
LCALL zhasni
JMP logo ;a zpet na zacatek
;--------------------------------------
na_port: CPL A ;neguje cislo v Acc kvuli aktivni urovni L
MOV P1,A ;vysle na port
RET ;navrat
;--------------------------------------
pausa: mov R3,#246 ;cekaci smycka
on3: mov R2,#162
on2: mov R1,#1
on1: djnz R1,on1
djnz R2,on2
djnz R3,on3
Ret
END
|