Are you blogging on PH? Get your free blog.
*/
*/

View BNL_5X7\OUTPUT.ASM

BANEL 5x7

Submitted By: jaroban
Rating: Not rated (Rate It)


; version 1.0

timer2_int:     clr     ea
                push    psw
                push    acc
                push    ar0
                anl     psw,#11100111b
                mov     t2con,#00000100b

                mov     p0,#11100000b
                mov     a,col_ind_o
                inc     a
                cjne    a,col_no_o,t2i_ok
                clr     a
t2i_ok:         mov     col_ind_o,a
                rl      a
                add     a,col_ind_o
                add     a,#digits_o
                mov     r0,a
                mov     a,@r0
                mov     c,going_up_o
                mov     acc.7,c
                mov     p2,a
                inc     r0
                mov     a,@r0
                mov     c,going_dn_o
                mov     acc.7,c
                mov     p1,a
                inc     r0
                mov     a,@r0
                orl     a,#11100000b
                mov     p0,a

                setb    wrote_old
                pop     ar0
                pop     acc
                pop     psw
                setb    ea
                reti

timer1_int:     clr     ea
                push    psw
                push    acc
                push    ar0
                anl     psw,#11100111b

                jbc     wrote_old,t1i_skip
                push    ar1
                push    ar2
                mov     r2,#15+1+1
                mov     r0,#digits_n
                mov     r1,#digits_o
t1i_lp:         mov     a,@r0
                mov     @r1,a
                inc     r0
                inc     r1
                djnz    r2,t1i_lp
                pop     ar2
                pop     ar1
                mov     c,going_up_n
                mov     going_up_o,c
                mov     c,going_dn_n
                mov     going_dn_o,c
                clr     tr1
                sjmp    t1i_ret

t1i_skip:       mov     p0,#11100000b
                mov     a,col_ind_n
                inc     a
                cjne    a,col_no_n,t1i_ok
                clr     a
t1i_ok:         mov     col_ind_n,a
                rl      a
                add     a,col_ind_n
                add     a,#digits_n
                mov     r0,a
                mov     a,@r0
                mov     c,going_up_n
                mov     acc.7,c
                mov     p2,a
                inc     r0
                mov     a,@r0
                mov     c,going_dn_n
                mov     acc.7,c
                mov     p1,a
                inc     r0
                mov     a,@r0
                orl     a,#11100000b
                mov     p0,a

                clr     tr1
                mov     a,tl1                   ; 1
                add     a,reload_lo             ; 1
                mov     tl1,a                   ; 1
                mov     a,th1                   ; 1
                addc    a,reload_hi             ; 1
                mov     th1,a                   ; 1
                setb    tr1                     ; 1

t1i_ret:        pop     ar0
                pop     acc
                pop     psw
                setb    ea
                reti

init_outputs:   clr     ea

                clr     a
                mov     digits_o,a
                mov     digits_o+1,a
                mov     digits_o+2,a
                mov     col_no_o,#1
                mov     col_ind_o,a

                orl     tmod,#00010000b
                mov     rcap2l,#low(-tmr2_period)
                mov     rcap2h,#high(-tmr2_period)
                setb    tr2
                setb    et1
                setb    et2
                setb    ea
                ret

init_transition:
                clr     ea
                mov     r7,a
                clr     c
                subb    a,#2            ; must be > 100/flicker
                jnc     it_trans_ok
                mov     r7,#10
it_trans_ok:    mov     a,r7
                mov     r2,#0
                jnb     acc.7,it_skip1
                clr     c
                rrc     a
                inc     r2
it_skip1:       jnb     acc.6,it_skip2
                clr     c
                rrc     a
                inc     r2
it_skip2:       rl      a
                mov     r1,a
                inc     a
                mov     dptr,#div_table
                movc    a,@a+dptr
                xch     a,r1
                movc    a,@a+dptr
                mov     r0,a
                mov     a,r2
                jz      it_skip3
it_lp0:         clr     c
                mov     a,r0
                rrc     a
                mov     r0,a
                mov     a,r1
                rrc     a
                mov     r1,a
                djnz    r2,it_lp0

it_skip3:       clr     tr1
                clr     tr2

                mov     a,#low(-tmr2_period+7)
                add     a,r1
                mov     tl1,a
                mov     reload_lo,a
                mov     a,#high(-tmr2_period+7)
                addc    a,r0
                mov     th1,a
                mov     reload_hi,a

                mov     tl2,#low(-tmr2_period)
                mov     th2,#high(-tmr2_period)

                mov     dptr,#column_mask
                mov     r0,#digits_n+2
                call    copy_data
                mov     col_no_n,#5
                mov     col_ind_n,#0

it_lp1:         mov     a,col_no_n
                xrl     a,#1
                jz      it_done

                mov     r0,#digits_n
                mov     r2,#0
it_lp2:         mov     r1,ar0
                mov     a,@r0
                inc     r0
                mov     r5,a
                mov     a,@r0
                inc     r0
                inc     r0
                orl     a,r5
                jnz     it_lp2_ok
it_lp2_lp:      mov     a,@r0
                mov     @r1,a
                inc     r0
                inc     r1
                mov     a,@r0
                mov     @r1,a
                inc     r0
                inc     r1
                mov     a,@r0
                mov     @r1,a
                inc     r0
                inc     r1
                inc     r2
                mov     a,r2
                cjne    a,col_no_n,it_lp2_lp
                dec     col_no_n
                jmp     it_lp1
it_lp2_ok:      inc     r2
                mov     a,r2
                cjne    a,col_no_n,it_lp2

if 0
it_lp3:         mov     a,col_no_n
                xrl     a,#1
                jz      it_done

                mov     r0,#digits_n
                mov     r2,#0
it_lp4:         mov     ar6,@r0
                inc     r0
                mov     ar7,@r0
                inc     r0
                inc     r0
                mov     r1,ar0
                mov     a,r2
                inc     a
                mov     r3,a
it_lp5:         mov     a,@r1
                inc     r1
                xrl     a,r6
                mov     r5,a
                mov     a,@r1
                inc     r1
                inc     r1
                xrl     a,r7
                orl     a,r5
                jnz     it_lp5_ok
                dec     r0
                dec     r1
                mov     a,@r1
                orl     a,@r0
                mov     @r0,a
                inc     r1
                mov     a,r1
                add     a,#-3
                mov     r0,a
it_lp5_lp:      mov     a,@r1
                mov     @r0,a
                inc     r1
                inc     r0
                mov     a,@r1
                mov     @r0,a
                inc     r1
                inc     r0
                mov     a,@r1
                mov     @r0,a
                inc     r1
                inc     r0
                inc     r3
                mov     a,r3
                cjne    a,col_no_n,it_lp5_lp
                dec     col_no_n
                jmp     it_lp3
it_lp5_ok:      inc     r3
                mov     a,r3
                cjne    a,col_no_n,it_lp5
                inc     r2
                mov     a,r2
                inc     a
                cjne    a,col_no_n,it_lp4
endif

it_done:        setb    wrote_old
                setb    tr1
                setb    tr2
                setb    ea
                ret

copy_data:      mov     r1,#5
cd_lp:          clr     a
                movc    a,@a+dptr
                inc     dptr
                mov     @r0,a
                inc     r0
                inc     r0
                inc     r0
                djnz    r1,cd_lp
                ret

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.
Resource Listings