我试图通过让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