?? 2051.asm
字號:
;---------------------------
;接口宏定義
;---------------------------
CS BIT P3.5
CLK BIT P3.4
DIO BIT P3.3
KEY BIT P3.2
;---------------------------
;7289指令宏定義
;---------------------------
INS_RESET DATA 10100100B;復位清除指令
INS_TEST DATA 10111111B;測試指令
INS_RLC DATA 10100001B;左移指令
INS_RRC DATA 10100000B;右移指令
INS_CLC DATA 10100011B;循環左移指令
INS_CRC DATA 10100010B;循環右移指令
INS_FLASH DATA 10001000B ; d8 d7 d6 d5 d4 d3 d2 d1 ;閃爍控制
INS_HIDE DATA 10011000B ; d8 d7 d6 d5 d4 d3 d2 d1 : 消隱控制
INS_RDKEY DATA 00010101B ; d8 d7 d6 d5 d4 d3 d2 d1 : 讀鍵盤數據指令
;10000a2 a1a0---DP X X X d 3 d2 d1 d0 下載數據且按方式0 譯碼
;11001a2 a1a0---DP X X X d 3 d2 d1 d0 下載數據且按方式1 譯碼
;11001a2 a1a0---DP A B C D E F G 下載數據但不譯碼
STRD DATA 20H
ENDD DATA 28H
PPTD DATA 30H
XCOM DATA 38H
BIT_CNT DATA 50H
DELAY1 DATA 51H
DECIMAL DATA 52H
DELAY DATA 53H
DISPLAY DATA 54H
REC_BUF DATA 55H
SEND_BUF DATA 56H
KEYDATA DATA 57H
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP INTE0
;/////////////////////////////////////
;輸入的數放在30H-37H;拷貝到20H-27H,轉換到28H-2FH
;20H-27H中的數被破壞
;///////////////////////////////////
ORG 0030H
MAIN:
CALL KEYSDISP
MOV R5,#09H;////////////////鍵盤存數控制位
MOV SP,#40H
CLR P3.7
SETB IT0
SETB EX0
SETB EA
MOV 20H,#10100000B
MOV 21H,#01010000B
MOV 22H,#00101000B
MOV 23H,#00010100B
MOV 24H,#00001010B
MOV 25H,#00000101B
MOV 26H,#10000010B
MOV 27H,#01000001B
ACALL CHANGE
;////////////////////////////
;信號輸出循環
;一個循環周期=5+2+1+2+1+2+1+2+2*DELAY=10000=US=10MS
;2*DELAY=10000-16=9984US
;DELAY=4992US
;////////////////////////////
CR0:MOV R0,#28H ;1
SJMP CR2 ;2
CR1:NOP ;1
NOP ;1
NOP ;1
NOP ;1
NOP ;1
CR2:MOV P1,@R0 ;2
SETB P3.7 ;1
ACALL YTIME ;2
CLR P3.7 ;1
ACALL YTIME ;2
INC R0 ;1
CJNE R0,#30H,CR1 ;2
SJMP CR0 ;2
;////////////////////////////////////
;把20H-27H中的數轉置90度后放入28H-2FH中
;////////////////////////////////////
CHANGE:
MOV R0,#28H
LO1:MOV R1,#20H
LO2:PUSH A
MOV A,@R1
RRC A
MOV @R1,A
POP A
RRC A
INC R1
CJNE R1,#28H,LO2
MOV @R0,A
INC R0
CJNE R0,#30H,LO1
RET
;////////////////////////////////////
;延時4992us
;(1+2*R7+2)*R6+1+2=4992
;R7=#0F7H=247
;R6=0AH=10
;(1+2*R7+2)*R6=4970
;NOP=19
;////////////////////////////////////
YTIME:
MOV R6,#0AH ;1
DE0:MOV R7,#0F7H ;1
DJNZ R7,$ ;2
DJNZ R6,DE0 ;2
MOV R6,#09H ;1
DJNZ R6,$ ;2*9=18
RET ;2
;////////////////////////////////////
INTE0:
CALL GETKEY ;接收按鍵程序
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -