Chương trỡnh này là một loại bài tập làm "núng lờn" trước khi làm việc thực tế. Mục đớch của vớ dụ này là để hiển thị trờn màn hỡnh bất cứ điều gỡ đú. Chế độ Multiplex khụng được sử dụng thời gian nàỵ Thay vào đú, 3 chữ số được hiển thị trờn duy nhất một trong số đú (đầu tiờn bờn phải).
Kể từ khi với vi điều khiển, "khụng biết" làm thế nào để viết số 3, một chương trỡnh con nhỏ gọi là Disp được sử dụng (vi điều khiển viết số này là 0000 0011). Điều này cho phộp chương trỡnh con hiển thị tất cả cỏc chữ số thập phõn (0-9). Nguyờn tắc hoạt động rất đơn giản. Một số muốn hiển thị, được cộng vào địa chỉ hiện tại và lệnh nhảy được thực thi, số khỏc muốn hiển thị, sẽ được nhảy đến địa chỉ khỏc.
;************************************************************************ ;* PROGRAM NAME : 7Seg1.ASM
;* DESCRIPTION: Program displays number "3" on 7-segment LED display ;************************************************************************ ;BASIC DIRECTIVES $MOD53 $TITLE(7SEG1.ASM) $PAGEWIDTH(132) $DEBUG $OBJECT $NOPAGING ;STACK
Hỡnh 4-5 DSEG AT 03FH
STACK_START: DS 040H ;RESET VECTORS
CSEG AT 0
JMP XRESET ; Reset vector ORG 100H
XRESET: MOV SP,#STACK_START ; Define Stack pointer
MOV P1,#0 ; Turn off all segments on displays
MOV P3,#20h ; Activate display D4 LOOP:
MOV A,#03 ; Send number “3” to display LCALL Disp ; Perform appropriate masking for the number MOV P1,A
SJMP LOOP
Disp: ; Subroutine for displaying digits INC A MOVC A,@A+PC RET DB 3FH ; Digit 0 mask DB 06H ; Digit 1 mask DB 5BH ; Digit 2 mask DB 4FH ; Digit 3 mask
155 DB 66H ; Digit 4 mask DB 6DH ; Digit 5 mask DB 7DH ; Digit 6 mask DB 07H ; Digit 7 mask DB 7FH ; Digit 8 mask DB 6FH ; Digit 9 mask END ; End of program