led.txt
字号:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TM1
ORG 0030H
MAIN: MOV A,#80H
MOV DPTR,#0FF2bH ;8255控制 口
MOVX @DPTR,A
A_BIT equ 20h ;数码管个位数存放内存位置
B_BIT equ 21h ;数码管十位数存放内存位置
TEMP equ 22h ;计数器数值存放内存位置
CLR P1.4 ;喇叭清0
MOV DPTR,#0FF2AH;8255的C口地址
MOV 24H,#08H;灯泡显示
AA1: MOV A,24H;将08h放入A中 第一个功能:灯泡循环亮
MOVX @DPTR,A
LCALL DELAY
RR A;右循环
MOV 24H,A
MOV A,#0FH
MOV P1,A ;P1口放置开关
MOV A,P1
ANL A,#0FH
SUBB A,#0FH
JZ AA1;如果A为0则没有开关按下,跳转到AA1
KEY: MOV DPTR,#0FF29H ;B口地址 判断开关情况
MOV A,#05H
MOVX @DPTR,A;让步进电机复位
MOV A,#0FFH
MOV P1,A ;P1口开关地址全部置1
MOV A,P1;读P1口
ANL A,#0FH
CLR C
SUBB A,#0EH
JZ LEW;如果第一个开关按下,则跳转至LEW
MOV A,#0FFH
MOV P1,A
MOV A,P1
ANL A,#0FH
CLR C
SUBB A,#09H;如果第二个和第三个开关都按下,则跳转至LEW2
JZ LEW2
MOV A,#0FFH
MOV P1,A
MOV A,P1
ANL A,#0FH
CLR C
SUBB A,#07H;如果第四个开关按下,则跳转至PP
JZ PP
RET
LJMP KEY
LEW: MOV R3,#50 ;正向循环步数 第二功能:单独按下开关1,步进电机正向慢走50,反向快走100步,依次循环
KEY1: MOV R4,#08
MOV R6,#00H
KEY10:CLR P1.4;喇叭清0
MOV A,R6
MOV DPTR,#PSTB;表首地址
MOVC A,@A+DPTR;把第一个数据赋给A
MOV DPTR,#0FF29H ;B口地址,送步进电机
MOVX @DPTR,A
KEY11:LCALL DEL
INC R6;依次将表中地址赋给A
DEC R3;走的步数减一
MOV A,P1;转的过程中判断有没有开关按下
ANL A,#0FH
SUBB A,#0FH
JNZ KEY;如果 有开关按下则跳回KEY
MOV A,R3;判断是否走完50步
JZ REW;如果走完就跳转到REW
DEC R4
MOV A,R4
JNZ KEY10;不等于0就继续赋值
LJMP KEY1;等于0就重新赋值
TM1:LJMP TM2
PP:LJMP PP1 第四个功能:单独按下开关4时,步进电机先慢走50步,扬声器响2声,停留50秒
KK:LJMP KEY
REW: MOV R3,#100;开始反转
L1: MOV R4,#08
MOV R6,#07H
L2: CLR P1.4
MOV A,R6
MOV DPTR,#PSTB
MOVC A,@A+DPTR
MOV DPTR,#0FF29H ;B口步进电机
MOVX @DPTR,A
DL1: LCALL DELAY
DEC R6
DEC R3
MOV A,P1
ANL A,#0FH
SUBB A,#0FH
JNZ KK
MOV A,R3
JZ LEW
DEC R4 ;100步未到,检查循环次数
MOV A,R4
JNZ L2;不等于0就继续
LJMP L1;等于0就跳转到L1
PP1:LJMP REW3
KK1:LJMP KK
LEW2:MOV R3,#100;走100步 第三功能:同时按下开关2,开关3时,步进电机来回走100步,然后扬声器发声10次,依次循环
KEY2: MOV R4,#08
MOV R6,#00H
KEY20:CLR P1.4
MOV A,R6
MOV DPTR,#PSTB
MOVC A,@A+DPTR
MOV DPTR,#0FF29H ;步进电机B口地址
MOVX @DPTR,A
KEY21:LCALL DELAY
INC R6
DEC R3
MOV A,P1
ANL A,#0FH
SUBB A,#0FH
JNZ KK
MOV A,R3
JZ REW2
DEC R4
MOV A,R4
JNZ KEY20
LJMP KEY2
KK2:LJMP KK1
REW2: MOV R3,#100
L12: MOV R4,#08
MOV R6,#07H
L22: CLR P1.4
MOV A,R6
MOV DPTR,#PSTB
MOVC A,@A+DPTR
MOV DPTR,#0FF29H ;B口
MOVX @DPTR,A
DL12: LCALL DELAY
DEC R6
DEC R3
MOV A,P1
ANL A,#0FH
SUBB A,#0FH
JNZ KK
CLR P1.4
MOV A,R3
JZ SO;跳转到喇叭的程序
DEC R4 ;100步未到,检查循环次数
MOV A,R4
JNZ L22
LJMP L12
TM2:LJMP TM3
SO: MOV R5,#10
SOUND1:MOV 27H,#03H
CCC2: MOV 26H,#0FFH
CCC1: CLR P1.4
LCALL DEE;延时
SETB P1.4;产生一个脉冲
DJNZ 26H,CCC1
DJNZ 27H,CCC2
LCALL DE
DJNZ R5,SOUND1;如果没响够10次则继续响
CLR P1.4;停止响喇叭
LJMP LEW2;跳到LEW2继续转
REW3: MOV R3,#50;慢转50步
L13: MOV R4,#08
MOV R6,#00H
L23: MOV A,R6
MOV DPTR,#PSTB
MOVC A,@A+DPTR
MOV DPTR,#0FF29H ;B口地址
MOVX @DPTR,A
DL13: LCALL DE
INC R6
DEC R3
MOV A,P1
ANL A,#0FH
SUBB A,#0FH
JNZ KK2
CLR P1.4
MOV A,R3
JZ SO2;转完50步,喇叭响两下
DEC R4 ;50步未到,检查循环次数
MOV A,R4
JNZ L23
LJMP L13
SO2: MOV R5,#02
SOUND2:MOV 27H,#03H
CCC4: MOV 26H,#0FFH
CCC3: CLR P1.4
LCALL DEE
SETB P1.4
DJNZ 26H,CCC3
DJNZ 27H,CCC4
LCALL DE
DJNZ R5,SOUND2
CLR P1.4
LJMP LIGHT
TM3:LJMP IT0P
LIGHT:MOV TEMP,#50 ;初始化计数器
STLOP:ACALL DISPLAY
; LCALL DE
DEC TEMP
MOV A,TEMP
CJNE A,#0,NEXT
LJMP REW3
NEXT: LJMP STLOP
DISPLAY:MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,A;十位在A
MOV A_BIT,B;个位在B
MOV DPTR,#NUMTAB;数码管数字的字型
DPLOP: LCALL PT0M2
LOOP: MOV C,F0
CLR P1.4
MOV A,A_BIT
MOV DPTR,#NUMTAB
MOVC A,@A+DPTR
MOV 25H,A
MOV DPTR,#0FF21H;选中字位口
MOV A,#01H
MOVX @DPTR,A
MOV DPTR,#0FF22H ; 8155字型口
MOV A,25H
MOVX @DPTR,A
LCALL DEE
MOV DPTR,#0FF21H;选中自位口
MOV A,#00H
MOVX @DPTR,A
MOV A,B_BIT
MOV DPTR,#NUMTAB
MOVC A,@A+DPTR
MOV 25H,A
MOV DPTR,#0FF21H
MOV A,#02H
MOVX @DPTR,A
MOV DPTR,#0FF22H
MOV A,25H
;CLR P2.6
MOVX @DPTR,A
LCALL DEE
MOV DPTR,#0FF21H
MOV A,#00H
MOVX @DPTR,A
;DJNZ R1,DPLOP
;DJNZ R0,DPLL
JNC LOOP
RET
PT0M2: MOV TMOD,#01H;方式1,16位定时计数器
MOV TL0,#0B0H
MOV B,#0AH
MOV TH0,#3CH
SETB TR0
SETB ET0
CLR F0
SETB EA
RET
IT0P: MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ B,LOOP1
CLR TR0
SETB F0
LOOP1: RETI
DE: MOV R2,#0FFH
DE_1: MOV R7,#0FFH
DE_2: DJNZ R7,DE_2
DJNZ R2,DE_1
DEL: MOV R2,#0FFH
DEL_1: MOV R7,#0FFH
DEL_2: DJNZ R7,DEL_2
DJNZ R2,DEL_1
DELAY: MOV R2,#0FFH
DELAY_1: MOV R7,#0FFH
DELAY_2: DJNZ R7,DELAY_2
DJNZ R2,DELAY_1
DEE:MOV R2,#0FFH
DEE1:DJNZ R2,DEE1
RET
PSTB: DB 05H,15H,14H,54H,50H,51H,41H,45H
NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -