📄 e.asm
字号:
$INCLUDE(C8051F020.INC)
BIT_COUNT DATA 07FH
TIMER DATA 07EH
TIMER1 DATA 07DH
TEN DATA 07CH
DATA_IN DATA 020H
DATAOUT DATA 021H
LOAD BIT P1.2
CLK BIT P1.3
DAT BIT P1.1
ORG 0000H
JMP START
ORG 0100H
START: mov WDTCN, #0deh ; disable watchdog timer
mov WDTCN, #0adh
mov OSCXCN, #67h ; enable external crystal
; oscillator at 22.1184MHz
clr A ; wait at least 1ms
djnz acc, $ ; wait ~512us
djnz acc, $ ; wait ~512us
osc_wait: ; poll for XTLVLD-->1
mov a, OSCXCN
jnb acc.7, osc_wait
orl OSCICN, #08h ; select external oscillator as
; system clock source
orl OSCXCN, #80h ; enable missing clock detector
MOV XBR2,#040H
MOV P1MDOUT,#0FFH
CODES: CLR LOAD
MOV DATAOUT,#09H
LCALL SEND
MOV DATAOUT,#0FFH
LCALL SEND//DECODE MODEL
SETB LOAD
CLR LOAD
MOV DATAOUT,#0AH
LCALL SEND
MOV DATAOUT,#04H
LCALL SEND//QIANG DU
SETB LOAD
CLR LOAD
MOV DATAOUT,#0BH
LCALL SEND
MOV DATAOUT,#01H
LCALL SEND//XIAN SAO MIAO
SETB LOAD
CLR LOAD
MOV DATAOUT,#0CH
LCALL SEND
MOV DATAOUT,#01H
LCALL SEND//GONGZUO
SETB LOAD
CLR LOAD
MOV DATAOUT,#0FH
LCALL SEND
MOV DATAOUT,#00H
LCALL SEND //TEST
SETB LOAD
CLR LOAD
MOV DATAOUT,#01H
LCALL SEND
MOV DATAOUT,#00H
LCALL SEND//SCREEN BIT 1,0
SETB LOAD
CLR LOAD
MOV DATAOUT,#02H
LCALL SEND
MOV DATAOUT,#01H
LCALL SEND//SCREEN 2,P
SETB LOAD
CALL DELAY1S
CLR LOAD
MOV DATAOUT,#0CH
ACALL SEND
MOV DATAOUT,#00H
ACALL SEND//END
SETB LOAD
AJMP MMM
SEND: MOV BIT_COUNT,#8
CLR CLK
SENDLOOP: MOV C,DATAOUT.7
MOV DAT,C
SETB CLK
MOV A,DATAOUT
RL A
MOV DATAOUT,A
CLR CLK
DJNZ BIT_COUNT,SENDLOOP
RET
DELAY1S: MOV TIMER,#200 ;延时约1S
DELAY10: MOV TIMER1,#20
DELAY11: CLR A //DELAY 1 SECOND
DJNZ ACC,$
DJNZ ACC,$
DJNZ TIMER1,DELAY11
DJNZ TIMER,DELAY10
RET
DELAY0: MOV TIMER1,#255
DELAY1: DJNZ TIMER1,DELAY1
DJNZ TIMER,DELAY0
RET
MMM: AJMP MMM
NOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -