组装,制作一个简单的计算器

时间:2015-02-27 10:14:21

标签: assembly calculator 8051

我试图通过让LED以这样的方式燃烧来创建一种计算器,即它们代表加法的二进制值。程序检测到正确的密钥,并进行添加。但是,我希望我的计数器在我进行两次添加之后重置,这是我想通过检查进位位的状态来实现的,我在第一个数字被看到之后分配给一个,或者至少尝试至。这是在gelezen语句中完成的,当进位未设置时,它跳转到设置并将该位设置为1并返回到start。如果它被设置,我想它会跳过跳转并超出下面的代码,清除寄存器R0并将该位设置回零,然后跳转到开始。

            $include (c8051f120.inc)
            cseg at 0000H
            jmp     main
            cseg at 0050H

main:       clr     EA
            mov     WDTCN,#0DEh
            mov     WDTCN,#0ADh
            setb    EA
            mov     SFRPAGE,#0Fh
            mov     XBR2,#40H
            mov     P1MDOUT,#0FFH //Volledige poort als uitvoerpin
            mov     P3MDOUT,#00H //Inputpin
            mov     P0MDOUT,#0F0h // 4 in 4 uit
            clr     A
            mov     A, #0d;
            clr     c   ;
start: 
            setb    P0.5
            setb    P0.6
            setb    P0.7
            clr     P0.4
            jnb     P0.0, nol
            jnb     P0.1, vier 
            jnb     P0.2, acht
            jnb     P0.3, twaalf
            setb    P0.4
            clr     P0.5
            jnb     P0.0, een
            jnb     P0.1, vijf 
            jnb     P0.2, negen
            jnb     P0.3, dertien
            setb    P0.5
            clr     P0.6
            jnb     P0.0, twee
            jnb     P0.1, zes 
            jnb     P0.2, tien
            jnb     P0.3, veertien
            setb    P0.5
            clr     P0.7
            jnb     P0.0, drie
            jnb     P0.1, zeven 
            jnb     P0.2, elf
            jnb     P0.3, vijftien
            setb    P0.7
            jmp     start
gelezen:
            add     A, R0
            mov     P1, A
            mov     R3,#255d
loop:       mov     R1, #255d
            mov     R2, #255d
            djnz    R1,$
            djnz    R2,$
            djnz    R3,loop
            jnc     zet 
            mov     R0,#0d
            mov     A,R0
            clr     c
            jmp     start
zet:
            setb    c
            jmp     start

nol:        mov     R0, #00H
            jmp     gelezen

een:        mov     R0, #01H   
            jmp     gelezen

twee:       mov     R0, #02H      
            jmp     gelezen

drie:       mov     R0, #03H
            jmp     gelezen

vier:       mov     R0, #04H     
            jmp     gelezen

vijf:       mov     R0, #05H
            jmp     gelezen

zes:        mov     R0, #06H
            jmp     gelezen

zeven:      mov     R0, #07H
            jmp     gelezen

acht:       mov     R0, #08H
            jmp     gelezen

negen:      mov     R0, #09H
            jmp     gelezen

tien:       mov     R0, #0AH      
            jmp     gelezen

elf:        mov     R0, #0BH   
            jmp     gelezen

twaalf:     mov     R0, #0CH
            jmp     gelezen

dertien:    mov     R0, #0DH
            jmp     gelezen

veertien:   mov     R0, #0EH
            jmp     gelezen

vijftien:   mov     R0, #0FH
            jmp     gelezen

0 个答案:

没有答案