- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 + 关注
分享个2004年读大学时参与的旋转时钟(汇编源代码和图纸等全部开源分享)
更新时间:2018年6月20日
技术交流群:16519783(建于2005年10月17日)
图纸:请用99SE打开
主芯片基于AT89C2051
参考源码:
GUAN1 EQU 30H
GUAN2 EQU 31H
GUAN3 EQU 32H
GUAN4 EQU 33H
OFF EQU 34H
COUNT EQU 35H
FLAG0 BIT 2AH.0
FLAG1 BIT 2AH.1
FLAG2 BIT 2AH.2
FLAGOFF BIT 2AH.3
FLAGH BIT 2AH.4
FLAGL BIT 2AH.5
FLAG999 BIT 2AH.6
ORG 00H
JMP START
ORG 03H
JMP INT0
ORG 0BH
JMP TIMER0
ORG 13H
JMP INT1
ORG 1BH
JMP TIMER1
ORG 100H
START: MOV SP,#60H
MOV TMOD,#00010001B
MOV IE,#10001111B
MOV IP,#00001000B
MOV TL0,#LOW(65536-50000)
MOV TH0,#HIGH(65536-50000)
MOV TL1,#LOW(65536-50000)
MOV TH1,#HIGH(65536-50000)
MOV R1,#10
MOV R7,#120
MOV GUAN1,#0
MOV GUAN2,#0
MOV GUAN3,#0
MOV GUAN4,#0
MOV COUNT,#0
MOV OFF,#0FFH
SETB FLAG0
CLR FLAG1
CLR FLAGOFF
CLR FLAG999
MOV DPTR,#TABLE
SETB P3.7
CALL DELAY
CLR P3.7
SETB TR0
DEAD: CALL DISPLAY
NOP
NOP
JMP DEAD
DISPLAY: ;1
MOV A,GUAN4
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV C,FLAG0
MOV ACC.7,C
JB FLAG999,LIGHTOFF10
MOV P1,A
JMP NEXT234
LIGHTOFF10:MOV P1,#0FFH
NEXT234: CLR P3.0
CALL DELAY
SETB P3.0
;2
MOV A,GUAN3
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV C,FLAG0
MOV ACC.7,C
JB FLAG999,LIGHTOFF11
MOV P1,A
JMP NEXT235
LIGHTOFF11:MOV P1,#0FFH
NEXT235: CLR P3.1
CALL DELAY
SETB P3.1
;3
MOV A,GUAN2
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV C,FLAG0
MOV ACC.7,C
JB FLAGOFF,LIGHTOFF
MOV P1,A
JMP NEXT123
LIGHTOFF :MOV P1,#0FFH
NEXT123: CLR P3.4
CALL DELAY
SETB P3.4
;4
MOV A,GUAN1
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV C,FLAG0
MOV ACC.7,C
JB FLAGOFF,LIGHTOFF1
MOV P1,A
JMP NEXT124
LIGHTOFF1 :MOV P1,#0FFH
NEXT124: CLR P3.5
CALL DELAY
SETB P3.5
RET
INT0: PUSH ACC
PUSH PSW
WAIT: JB P3.2,TEN0
CALL DISPLAY
JMP WAIT
TEN0: SETB FLAGH
CLR FLAGL
TEN: CLR EX1
CLR TR0
SETB TR1
JB P3.2,WAIT1
WAIT001: JB P3.2,NEXT006
CALL DISPLAY
JMP WAIT001
NEXT006: INC COUNT
MOV R0,#COUNT
CJNE @R0,#1,QQ0
SETB FLAG1
SETB FLAGL
CLR FLAGH
JMP WAIT1
QQ0: CJNE @R0,#2,QQ1
MOV COUNT,#0
CLR FLAG1
CLR FLAGH
CLR FLAGL
JMP BACK
QQ1: NOP
NOP
JMP START
WAIT1: JNB P3.3,JAGAIN
CALL DISPLAY
JMP TEN
JAGAIN:
JB P3.3,INCR
CALL DISPLAY
JMP JAGAIN
INCR: JNB FLAG1,TIME1
JMP TIME2
TIME1:MOV A,GUAN4
CJNE A,#2,NEXT009
MOV A,GUAN3
INC A
MOV GUAN3,A
CJNE A,#4,TEN
MOV GUAN3,#0
MOV GUAN4,#0
JMP TEN
NEXT009: MOV A,GUAN3
INC A
MOV GUAN3,A
CJNE A,#10,TEN
MOV GUAN3,#0
MOV A,GUAN4
INC A
MOV GUAN4,A
JMP TEN
TIME2: MOV A,GUAN1
INC A
MOV GUAN1,A
CJNE A,#10,TEN
MOV GUAN1,#0
;--------
MOV A,GUAN2
INC A
MOV GUAN2,A
CJNE A,#6,TEN10
MOV GUAN2,#0
TEN10: JMP TEN
BACK: SETB EX1
CLR TR1
SETB P3.7
CLR P3.7
CLR FLAGOFF
CLR FLAG999
POP PSW
POP ACC
SETB TR0
RETI
INT1: CLR TR0
PUSH ACC
PUSH PSW
HOME: SETB TR0
POP PSW
POP ACC
SETB TR0
RETI
TIMER0: ORL TL0,#LOW(65536-50000)
MOV TH0,#HIGH(65536-50000)
PUSH ACC
PUSH PSW
DJNZ R1,OUT
MOV R1,#10
CPL FLAG0
JBC P3.7,NEXT001
NEXT001: DJNZ R7,OUT
MOV R7,#120
SETB P3.7
MOV A,GUAN1
INC A
MOV GUAN1,A
CJNE A,#10,OUT
MOV GUAN1,#0
;--------
MOV A,GUAN2
INC A
MOV GUAN2,A
CJNE A,#6,OUT
MOV GUAN2,#0
;----------
MOV A,GUAN4
CJNE A,#2,NEXT
MOV A,GUAN3
INC A
MOV GUAN3,A
CJNE A,#4,OUT
MOV GUAN3,#0
MOV GUAN4,#0
NEXT: MOV A,GUAN3
INC A
MOV GUAN3,A
CJNE A,#10,OUT
MOV GUAN3,#0
MOV A,GUAN4
INC A
MOV GUAN4,A
OUT: POP PSW
POP ACC
RETI
TIMER1: ORL TL1,#LOW(65536-65535)
MOV TH1,#HIGH(65536-65535)
PUSH ACC
PUSH PSW
JB FLAGH,XUAN0
CPL FLAGOFF
CLR FLAG999
JMP EXIT
XUAN0: CPL FLAG999
CLR FLAGOFF
EXIT: POP PSW
POP ACC
RETI
DELAY: MOV R2,#14H
D1: MOV R3,#19H
DJNZ R3,$
DJNZ R2,D1
RET
TABLE: ; 0 1 2 3 4 5 6 7 8 9 10
DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0D8H 80H 90H 0FFH
TABLE1:
DB 0C0H 0CFH 0A4H 86H 8BH 92H 90H 0C3H 80H 82H 0FFH
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
- 13580122948
-
0 发帖3 回复22 积分
- 私信他 +关注
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖