*/
Know a good article or link that we're missing? Submit it!
*/

View \SERIAL.ASM

BANEL GSM

Submitted By: jaroban
Rating: starstarstarstar (Rate It)


; version 1.0

serial_init:    mov     r0,#srl_fifo0
                mov     a,#sf0_size
                call    fifo_init
                mov     r0,#srl_fifo
                mov     a,#sf_size
                call    fifo_init
                mov     scon,#50h
                mov     a,#low(-srl_period)
                mov     tl2,a
                mov     rcap2l,a
                mov     a,#high(-srl_period)
                mov     th2,a
                mov     rcap2h,a
                mov     t2mod,#0
                mov     t2con,#00110100b
                clr     srl_sent_data
                setb    es
                ret

serial_int:     clr     ea
                push    psw
                push    acc
                anl     psw,#11100111b
                jnb     ri,si_try_ti
                clr     ri
                push    ar0
                push    ar1
                push    b
                mov     r0,#srl_fifo0
                mov     a,sbuf
                call    fifo_write
                pop     b
                pop     ar1
                pop     ar0
si_try_ti:      jnb     ti,si_done
                clr     ti
                setb    srl_sent_data
si_done:        pop     acc
                pop     psw
                setb    ea
                reti

read_serial:    mov     r0,#srl_fifo0
                call    fifo_read
                jnc     rs_ret
                mov     r0,#srl_fifo
                call    fifo_write
                setb    c
rs_ret:         ret

switch_gsm:     setb    direction
                mov     p3,#mask_gsm
                ret

switch_out:     clr     direction
                jb      lift,so_lift2
                mov     p3,#mask_out1
                ret
so_lift2:       mov     p3,#mask_out2
                ret

cool_down:      jnb     direction,cd_done
                call    tmr_int_f
                db      t_cool,0,1,0
cd_lp1:         call    do_them
                call    read_serial
                jnc     cd_skip1
                call    get_chr
                call    tmr_int_f
                db      t_cool,0,1,0
                jmp     cd_lp1
cd_skip1:       mov     a,#t_cool
                call    tmr_zro
                jnc     cd_lp1
cd_done:        ret

get_chr:        mov     r0,#srl_fifo
                jmp     fifo_read

put_chr:        jnb     direction,pc_ok
if debug
                call    switch_out
                call    pc_ok
                call    switch_gsm
endif
pc_ok:          mov     sbuf,a
pc_lp2:         call    rst_wd
                jnb     srl_sent_data,pc_lp2
                clr     srl_sent_data
                ret

put_byte:       mov     b,a
                swap    a   
                call    hex_asc
                call    put_chr
                mov     a,b
                call    hex_asc
                jmp     put_chr

puts:           mov     a,@r0
                call    put_chr
                inc     r0
                djnz    r1,puts
                ret

puts_no_spaces: mov     a,@r0
                cjne    a,#' ',pns_skip1
                sjmp    pns_skip2
pns_skip1:      call    put_chr
pns_skip2:      inc     r0
                djnz    r1,puts_no_spaces
                ret

puts_nf:        pop     dph
                pop     dpl
                sjmp    pnf_entry
pnf_lp:         call    put_chr
pnf_entry:      clr     a
                movc    a,@a+dptr
                inc     dptr
                jnz     pnf_lp
                jmp     @a+dptr

corner
© 1996-2008 CommunityHeaven LLC. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
North American business development: Nicolai Wadstrom. Publisher: Lars Hagelin.