; ****************************************************
; Ridici program pro Atmel simulatoru EPROM, verze 2.0
; ****************************************************
MODE equ 0B1h ; 0 = Simulace, 1 = Download
HCDAT equ 0B2h ; data pro HC4094
HCCLK equ 0B3h ; clock pro HC4094
RST2 equ 0B4h ; 1 = /RESET
RST1 equ 0B5h ; 0 = RESET (pri cteni tlacitko ERASE)
WRITE equ 0B7h ; 0 = write to RAM
org 0
; *********************
; Inicializace registru
; *********************
Start: mov TMOD,#20h ; T1 mode 2 (autoreload TL<
?@
jc Errors ; vyvolaji chybu
cjne A,#6,AscBi2 ; znaky A..F
AscBi2: jc AscBi4 ; se prevedou
subb A,#32
jc Errors ; preskocit dalsi znaky
cjne A,#6,AscBi3 ; a mimo a..f
AscBi3: jnc Errors ; vyvolat chybu
AscBi4: add A,#10 ; ostatni znaky se prevedou
ret
; ********************
; prijem znaku z UARTu
; ********************
GetChr: mov R5,#10 ; 10 x 0,1s = 1s timeout
GetCh1: mov R6,#100 ; 100 x 1ms = 0,1s
GetCh2: mov R7,#230 ; casovani 1ms
GetCh3: jb RI,GetChc ; ..neco prislo z UARTu..
djnz R7,GetCh3
djnz R6,GetCh2
djnz R5,GetCh1 ; ..cas vyprsel..
setb C ; nastavit priznak neplatnych dat
ret ; a navrat
GetChc: jb SCON.7,Errorf ; testovat STOPBIT error
mov A,SBUF ; jinak nacist prijaty znak
clr RI ; shodit priznak prijateho znaku
clr C ; nastavit priznak platnych dat
ret ; a konec
; *****************************
; Chyba prenosoveho ramce UARTu
; *****************************
Errorf: mov A,#11111010b ; kod blikani LED
jmp Error
; ***********************************
; nasune adresu do posuvnych registru
; ***********************************
SndAdr: mov A,DPH ; vyssi cast adresy
mov C,ACC.2 ; A(10)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.1 ; A(9)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.3 ; A(11)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.5 ; A(13)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.7 ; A(15)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.4 ; A(12)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.6 ; A(14)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.0 ; A(8)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov A,DPL ; nizsi cast adresy
mov C,ACC.7 ; A(7)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.6 ; A(6)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.5 ; A(5)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.4 ; A(4)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.3 ; A(3)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.2 ; A(2)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.1 ; A(1)
mov HCDAT,C
setb HCCLK
clr HCCLK
mov C,ACC.0 ; A(0)
mov HCDAT,C
setb HCCLK
clr HCCLK
ret
end
|