; **************************************************** ; 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