TICK EQU 10000
T100US EQU 156;
LEDBUF EQU 20H
C100US EQU 30H
DBUF EQU 40H
온도 EQU 50H
카운트 EQU 60H
BUFSTORE EQU 61H
DIN BIT P3.4
CLK BIT P3.5
//////////타이밍 상수////
ORG 0000H
LJMP MAIN
////메인 프로그램으로 전송///
ORG 000BH
////인터럽트 입력/////////
< p> LJMP T01NTORG 1000H
///다음 핵심 판단///
K00: ACALL DELAY
MOV A , P1
CJNE A,#0FFH,K01
LJMP 키
K01: CJNE A, #0FEH,K02
CPL 21H .0
LJMP 키
K02: CJNE A, #0FDH,K03
CPL 21H.1
LJMP 키
K03: CJNE A, #0FBH,KEY
CPL 21H.2
LJMP 키
T01NT:
PUSH PSW ///스택에 푸시
MOV A,C100US+1
JNZ GOON //A는 00H가 아니며 점프하여 GOON을 실행합니다.
DEC C100US
GOON:
DEC C100US+1
MOV A,C100US
ORL A,C100US+1
JNZ EXIT //카운터가 0이 아니면 반환
MOV C100US,#4EH
MOV C100US+1,#20H ///타이밍 2초
< p>KEY : MOV P1, #0FFH //P1 인터페이스 설정MOV A, P1
CJNE A, #0FFH, K00 ///키 판단으로 이동
< p> CLR CMOV C, 21H.2 //모드 판단
JNC MODE //판정 모드, CY가 0이면 사이클 교대로 전환
< p> MOV LEDBUF,BUFSTOREMOV C, 21H.1 //속도 및 느린 판단
JNC OUTPHL //속도 판단, CY가 0이고 고속으로 절환
CLR C
MOV C, 21H.0 //방향 판단
JNC OUTPSR // 방향을 결정합니다. CY가 0이면 느린 오른쪽 이동으로 이동합니다.
OUTPSL: //느린 왼쪽 이동
SETB 21H.0
SETB 21H.1< /p>
MOV A,LEDBUF
RL A
MOV LEDBUF,A
MOV BUFSTORE,LEDBUF
START1: ///디지털 튜브 디스플레이를 왼쪽으로 천천히 이동
MOV DBUF+7,#07H
MOV DBUF+6,#06H
< p> MOV DBUF+5, #05HMOV DBUF+4,#04H
MOV DBUF+3,#03H
MOV DBUF+2,# 02H
MOV DBUF+1,#01H
MOV DBUF,#00H
LJMP DISP
LJMP EXIT
< p>EXIT:POP PSW //스택에서 팝
RETI //인터럽트 반환
MODE: LJMP OUTPUT
OUTPSR : ///느린 오른쪽 시프트< /p>
CLR 21H.0
SETB 21H.1
MOV A,LEDBUF
RR A< /p>
MOV LEDBUF ,A
MOV BUFSTORE,LEDBUF
START2: //디지털 튜브 디스플레이를 오른쪽으로 천천히 이동
MOV DBUF +7,#0FH
< p> MOV DBUF+6,#0EHMOV DBUF+5,#0DH
MOV DBUF+4,#0CH
MOV DBUF+3,# 0BH
MOV DBUF+2,#0AH
MOV DBUF+1,#09H
MOV DBUF,# 08H
LJMP DISP
LJMP EXIT
OUTPHL: //왼쪽으로 빠르게 이동
MOV C100US,#27H
< p> MOV C100US+1,#10H / /타이머 1초MOV C,21H.0
JNC OUTPHR
SETB 21H.0
CLR 21H.1
p>MOV A,LEDBUF
RL
A
MOV LEDBUF,A
MOV BUFSTORE,LEDBUF
START3: //디지털 튜브 디스플레이를 왼쪽으로 빠르게 이동
MOV DBUF+ 7,#017H
MOV DBUF+6,#016H
MOV DBUF+5,#015H
MOV DBUF+4,#014H
p>MOV DBUF+3,#013H
MOV DBUF+2,#012H
MOV DBUF+1,#011H
MOV DBUF, #010H
LJMP DISP
SJMP EXIT
OUTPHR: //빠른 오른쪽 시프트
CLR 21H.0
< p> CLR 21H.1MOV A,LEDBUF
RR A
MOV LEDBUF,A
MOV BUFSTORE,LEDBUF
p>START4: //디지털 튜브 디스플레이를 오른쪽으로 빠르게 이동
MOV DBUF+7,#01FH
MOV DBUF+6,#01EH
MOV DBUF +5,#01DH
MOV DBUF+4,#01CH
MOV DBUF+3,#01BH
MOV DBUF+2, #01AH
MOV DBUF+1,#019H
MOV DBUF,#018H
LJMP DISP
출력:INC 개수
p>MOV A,COUNT
CJNE A,#01H,PART2
MOV P2,#7EH
MOV LEDBUF,P2
LJMP START5
PART2:CJNE A,#02H,PART3
MOV P2,#0BDH
MOV LEDBUF,P2
LJMP START5 p>
PART3:CJNE A,#03H,PART4
MOV P2,#0DBH
MOV LEDBUF,P2
LJMP START5
PART4:CJNE A,#04H,PART5
MOV P2,#0E7H
MOV LEDBUF,P2
LJMP START5< /p>
PART5:CJNE A,#05H,PART6
MOV P2,#0DBH
MOV LEDBUF,P2
LJMP START5
PART6 :CJNE A,#06H,PART7
MOV P2,#0BDH
MOV LEDBUF,P2
LJMP START5
PART7:CJNE A,#07,PART8
MOV P2,#07EH
MOV LEDBUF,P2
LJMP START5
p>p>
PART8:CJNE A,#07,PART9
MOV P2,#0FFH
MOV LEDBUF,P2
LJMP START5
PART9:CJNE A,#08H,PART10
MOV P2,#55H
MOV LEDBUF,P2
LJMP START5< /p>
PART10:CJNE A,#09H,PART11
MOV P2,#0AAH
MOV LEDBUF,P2
LJMP START5
PART11 :CJNE A,#0AH,PART12
MOV P2,#0C3H
MOV LEDBUF,P2
LJMP START5
< p> PART12:CJNE A,#0BH,PART13MOV P2,#77H
MOV LEDBUF,P2
LJMP START5
PART13:CJNE A, #0CH,PART14
MOV P2,#0BBH
MOV LEDBUF,P2
LJMP START5
PART14: CJNE A,#0DH ,PART15
MOV P2,#0DDH
MOV LEDBUF,P2
LJMP START5
PART15:CJNE A ,#0DH,PART16
MOV P2,#0EEH
MOV LEDBUF,P2
LJMP START5
PART16:MOV COUNT,# 01H
LJMP START5
/////패턴 끝/////////
START5:MOV DBUF+7,#027H //니지터 튜브 디스플레이< /p>
MOV DBUF+6,#026H
MOV DBUF+5,#025H
MOV DBUF+4,#024H
MOV DBUF +3,#023H
MOV DBUF+2,#022H
MOV DBUF+1,#021H
MOV DBUF,# 020H
< p> LJMP DISPMAIN: //메인 프로그램
SETB 21H.0 //초기값 설정
SETB 21H.1
SETB 21H.2
CLR 카운트
MOV TMOD,#02H //모드 2, 타이머
MOV TH0,#T100US
MOV TL0,#T100US
MOV IE,#10000010B
SETB TR0 //시작 타이밍
MOV A,#0FEH
MOV LEDBUF,A
MOV BUFSTORE, A
MOV P2,A
MOV C100US, #27H
MOV C100US+1, # 10H
LOOP:
MOV B,20H
MOV P2,B
LJMP LOOP
DISP: //정적 디지털 튜브 디스플레이
MOV R0,#DBUF
MOV R1,#TEMP
MOV R2,#8
DP10 :
MOV DPTR,#SEGTAB
MOV A,@R0
MOVC A,@A+DPTR
MOV @R1, A
INC R0
INC R1
DJNZ R2,DP10
MOV R0,#TEMP
MOV R1,#8
DP12:
MOV R2,#8
MOV A,@R0
DP13:
RLC A
MOV DIN,C
CLR CLK
SETB CLK
DJNZ R2,DP13
< p> INC R0DJNZ R1,DP12
LJMP 종료
SEGTAB:
DB 6DH,80H,40H,40H,38H ,79H,38H,31H
DB 6DH,80H,40H,40H,77H,30H,6FH,74H
DB 76H,80H,40H,40H,38H,79H,38H ,31H
DB 76H,80H,40H,40H,77H,30H,6FH,74H
DB 40H,40H,6FH,3FH,3FH,5EH,40H,40H
p> p>RETI
DELAY:MOV R4, #02H
AA1: MOV R5, #0F8H
AA: NOP
NOP
DJNZ R5, AA
DJNZ R4, AA1
RET
END