ORG 00H ;程式起始位址00H BEGIN: MOV R0,#0 ;資料碼指標初值 MOV R3,#8 ;資料碼總數 MOV R4,#0 ;掃描碼指標初值 ;======================================================= SCAN: MOV DPTR,#COLUMN ;讀取掃描碼 MOV A,R4 ; MOVC A,@A+DPTR ; MOV P2,A ;輸出至埠2 INC R4 ;掃描碼+1 ;======================================================= MOV DPTR,#MESSAGE ;讀取資料碼 MOV A,R0 ; MOVC A,@A+DPTR ; MOV P0,A ;輸出至埠0 ACALL DELAY ; INC R0 ;資料碼+1 MOV A,#11111111B ;遮沒 MOV P0,A ;輸出至埠0 DJNZ R3,SCAN ;------------------------------- SJMP BEGIN ;======================================================= DELAY: MOV R5,#20 ;延遲副程式 T5: MOV R6,#25 DJNZ R6,$ DJNZ R5,T5 RET ;======================================================= COLUMN: ;掃描碼儲存起始位址 DB #01111111B DB #10111111B DB #11011111B DB #11101111B DB #11110111B DB #11111011B DB #11111101B DB #11111110B ;======================================================= MESSAGE: ;資料碼儲存起始位址 DB #11100000B DB #11011011B DB #10111011B DB #01111011B DB #10111011B DB #11011011B DB #11100000B DB #11111111B ;======================================================= END