기본적으로 내 작업은 어셈블리 언어를 사용하여 00-99부터 계속해서 마이크로 컨트롤러 보드의 카운터를 계산하는 것입니다.어셈블리 언어로 00에서 99까지 카운터
두 개의 7-Seg를 동시에 표시 할 수 없기 때문에 내 솔루션은 수십 (0), 1 (0), 10 (0), 1 (1) (0), 디스플레이 수십 (0), 디스플레이 수십 (0), 디스플레이 하나 (3) 등이 내 접근 방식은 두 개의 루프 (10 자릿수에 대해 하나, 1 자릿수에 하나) 배열을 통과합니다. 사람 숫자 루프는 전체 배열, 루프 나누기를 통과하고 수십 자리 루프로 돌아갑니다 일단,
MSB_Display equ $0B ; display on 'tens' digit/second most right of 7-Seg
LSB_Display equ $07 ; display on 'ones' digit/most right of 7-Seg
D_1MS equ 24000/6
DelayVal equ 35 ; 35 ms delay simulates both Hex Displays on at once
org $1000
; Lookup table for LED segments
array db $3F,$06,$5B,$4F,$66,$6D,$7C,$07,$7F,$6F
; 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
; Memory Reserved for Delay Routine
DCount ds 1
Counter ds 1
countones db 0
counttens db 0
org $2000 ; Program starts here
lds #$2000 ; Initalize the stack
; Configure Hardware
ldaa #$FF
staa DDRB ; Make PORTB output
staa DDRP ; PTP as Output
start
clr countones ; clear count back to 0
clr counttens
ldx #array
MSB
ldaa 1,x+
staa PORTB
ldaa #MSB_Display
staa PTP ; turn off 7-segment display
bsr Delay_ms
inc counttens
ldaa counttens
cmpa #10
bne LSB
LSB
ldy #array
ldab 1,y+
stab PORTB
ldab #LSB_Display
stab PTP
bsr Delay_ms
inc countones
ldaa countones
cmpa #10
bne LSB
bra MSB
Delay_ms
psha
pshy
ldaa #DelayVal ; Number of msec to delay
staa DCount ; store delay counter
ldaa DCount ; delay Dcount ms
staa Counter
Delay1 ldy #D_1MS ; 6000 x 4 = 24,000 cycles = 1ms
Delay2 dey ; this instruction takes 1 cycle
bne Delay2 ; this instruction takes 3 cycles
dec Counter
bne Delay1 ; not Dcount ms yet, delay again
pula ; Restore contents of ACC A before returning
puly
rts
end
지금 사람의 숫자 루프의 뒤쪽으로, 다음 요소에 수십 자리 이동이 프로그램이 1 자리 자릿수 (LSB)를 입력하고 거기에 앉아있는 것처럼 보이지만 루프를 종료하지 않고 루프를 다시 돌릴 수도 없습니다. 내 프로그램의 논리에서 무엇이 잘못되었는지 찾아 볼 수 없습니다.
당신의 힘든 일은 분명하지 않습니다. 두 자릿수를 표시하고 싶습니다. 적어도 7 세그먼트 디스플레이가 2 대 있다고 가정합니다. 어떤 7- 세그먼트 디스플레이를 선택하면 특정 디스플레이 코드가 생깁니 까? 프로그램이 시작되면 표시 코드 만 PortB로 출력합니다. 하드웨어가 어떤 디지트를 밝힐 지 어떻게 알 수 있습니까? –
... 전 오래된 타이머입니다, 이것은 6800CPU처럼 보이지만 'ldab 1, x +'명령을 인식하지 못합니다. 그것은 무엇을합니까? (나는 pshy에서 우습게 만날 수있다. –
하드웨어가이 두 선으로 점등 할 알고 MSB_Display 가공 장비 $ 0B LSB_Display 가공 장비 $ 07 LSB가 MSB가가 2 권리를 선택할 수 있습니다, 대부분의 7 SEG 권리를 선택하게 대부분의 7 세그 ldab 1, X + 기본적으로 배열을 통해 실행하게/표를 봐 – livelaughlove