📄 text1.c
字号:
/*************************************************************
名称:自动归返小车
************************************************************/
DOWN EQU 30H ;单元地址区
UP EQU 31H
CLOCK EQU 32H
PWMT EQU 33H
PWMK0 EQU 34H
PWMK1 EQU 35H
PWMK2 EQU 36H
PWMK3 EQU 37H
DISA EQU 38H ;显示区
DISB EQU 39H
DISC EQU 3AH
GO EQU 00H ;位地址区是否工作
KEYONE EQU 01H ;一次铵键有用
OPENDIS EQU 02H ;是否打开显示
MOTOW EQU 03H ;MOTO正转反转控制
MOTOG EQU 04H ;MOTO加速转后均速
DISTIME EQU 05H ;控制显示时间
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTA
ORG 000BH
LJMP TIME0
ORG 0013H
LJMP INTB
ORG 001BH
LJMP TIME1
ORG 00020H
MAIN:MOV SP,#67H
MOV TMOD,#22H
MOV TH0,#00H
MOV TL0,#00H
MOV TH1,#0AFH
MOV TL1,#0AFH
MOV TCON,#05H
MOV IE,#8FH
CLR EA ;关总断
MOV IP,#05H
MOV DISA,#01H
MOV DISB,#00H
MOV DISC,#00H
CLR OPENDIS
ANL P1,#0E3H
MOV UP,#00H
MOV DOWN,#0FFH
MOV CLOCK,#0FFH
MOV PWMK0,UP
MOV PWMK1,DOWN
MOV PWMK2,DOWN
MOV PWMK3,CLOCK
CLR TR0
CLR TR1
SETB P1.6 ;关MOTO
SETB P1.5
SETB MOTOW
CLR MOTOG
CLR DISTIME
SETB P1.0
SETB IT1
SETB IT0
CLR GO
;******************************************************
NEXTM:ACALL KEY
ACALL DISPLAY
SJMP NEXTM
;*****************键盘*********************************
KEY:JB P1.1,KEYCH
ACALL DELY
JB P1.1,KEYCH
JB KEYONE,KEYEXIT
SETB KEYONE
SETB P1.6 ;关MOTO
SETB P1.5
CPL TR0
CLR TR1
CPL EA
CPL P1.0
MOV UP,#00H
MOV DOWN,#0FFH
MOV CLOCK,#0BFH
MOV PWMK0,UP
MOV PWMK1,DOWN
MOV PWMK2,DOWN
MOV PWMK3,CLOCK
MOV DISB,#00H
MOV DISC,#00H
CPL GO
KEYEXIT:RET
KEYCH:CLR KEYONE
RET
;*****************显示*********************************
DISPLAY:JNB GO,EXITDISPLAY
PUSH PSW
SETB PSW.3 ;1区
CLR PSW.4
MOV R7,#03H
MOV R0,#DISA
MOV R6,#04H
DISNEXT:MOV P2,#0FFH
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
MOV A,R6
ANL P1,#0E3H
ORL P1,A
RL A
MOV R6,A
INC R0
ACALL DELY
DJNZ R7,DISNEXT
POP PSW
EXITDISPLAY:MOV P2,#0FFH
ANL P1,#0E3H
RET
OVER_L:LJMP OVER
;******************************************************
TIME0:DJNZ PWMK0,L1
DJNZ PWMK3,CONTI
MOV UP,#50
MOV DOWN,#40
MOV PWMK0,UP
MOV PWMK1,DOWN
JNB MOTOW,NEXTMOTO
MOV DISA,#10
MOV DISB,#09H
MOV DISC,#09H
CLR TR0
SETB TR1
CLR P1.0
AJMP OVER
NEXTMOTO:MOV DISA,#11
MOV DISB,#09H
MOV DISC,#09H
CLR TR0
SETB TR1
CLR P1.0
AJMP OVER
CONTI:JB MOTOW,MOTONE1
MOV DISA,#11 ;显示速度控制向前
MOV A,DISB
SWAP A
ORL A,DISC
ADD A,#01H
DA A
MOV DISC,A
ANL A,#0F0H
SWAP A
MOV DISB,A
MOV A,DISC
ANL A,#0FH
MOV DISC,A
SETB P1.5
SJMP CONTINEXIT
MOTONE1:SETB P1.6
MOV DISA,#10 ;显示速度控制向后
MOV A,DISB
SWAP A
ORL A,DISC
ADD A,#01H
DA A
MOV DISC,A
ANL A,#0F0H
SWAP A
MOV DISB,A
MOV A,DISC
ANL A,#0FH
MOV DISC,A
CONTINEXIT:MOV PWMK0,DOWN
DEC PWMK2
MOV A,PWMK2
MOV PWMK1,A
L1:DJNZ PWMK1,OVER
JB MOTOW,MOTONE21
CLR P1.5
SJMP OVER
MOTONE21:CLR P1.6
OVER:NOP
RETI
TIME1:DJNZ PWMK0,L10;启动均速控制
MOV UP,#50
MOV DOWN,#40
MOV PWMK0,UP
MOV PWMK1,DOWN
AJMP OVER
L10:DJNZ PWMK1,OVER1
JB MOTOW,MOTONE20
CLR P1.5
SJMP OVER
MOTONE20:CLR P1.6
SJMP OVER
OVER1:NOP
RETI
;******************************************************
INTA:SETB P1.6 ;关反转
SETB P1.5
CPL MOTOW
CLR P1.0
MOV UP,#00H
MOV DOWN,#0FFH
MOV CLOCK,#0BFH
MOV PWMK0,UP
MOV PWMK1,DOWN
MOV PWMK2,DOWN
MOV PWMK3,CLOCK
SETB TR0
CLR TR1
MOV DISB,#00H
MOV DISC,#00H
RETI
;******************************************************
INTB:SETB P1.6 ;关反转
SETB P1.5
CPL MOTOW
MOV UP,#00H
MOV DOWN,#0FFH
MOV CLOCK,#0BFH
MOV PWMK0,UP
MOV PWMK1,DOWN
MOV PWMK2,DOWN
MOV PWMK3,CLOCK
SETB TR0
CLR TR1
MOV DISB,#00H
MOV DISC,#00H
RETI
DELY:MOV R1,#20 ;50MS延时程序
DELL:MOV R2,#125
DJNZ R2,$
DJNZ R1,DELL
RET
TAB:DB 81H,0B7H,0C2H,92H,0B4H,98H,88H,0B3H,80H,090H,0FEH,0FFH
;0 1 2 3 4 5 6 7 8 9 - 关
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -