📄 test.asm
字号:
;===============================================
;本程序为一个绕线机的程序,绕线机每转一圈显示值
;加一,如果线超出所需米数则绕线机每到转一圈显值
;减一
;编者:王海龙
;时间:2007-6-2下午16点30分至18点31分
;修改时间:2007-7-14------2007-7-15
;修改时间:2007-7-17清晨
;地点:承德市五岳公司
;===============================================
a_bit EQU 20H ;个位数存放处
b_bit EQU 21H ;十位数存放处
c_bit EQU 22H ;百位数存放处
TEMP EQU 23H ;应显示的米数
ORG 0000H
AJMP MAIN
ORG 0003H ;外部中断0的入口地址
AJMP INT_0
ORG 0013H ;外部中断1的入口地址
AJMP INT_1
ORG 0034H
MAIN:SETB IT0 ;外部中断0选择边沿触发方式
SETB EX0 ;允许INT0中断
SETB IT1 ;外部中断1选择边沿触发方式
SETB EX1 ;允许INT1中断
SETB EA ;CPU开中断
MOV SP,#30H ;设置栈底为 30H
MOV a_bit,#0 ;初始化个位数为 0
MOV b_bit,#0 ;初始化十位数为 0
MOV c_bit,#0 ;初始化百位数为 0
MOV TEMP,#0 ;初始化应显示的数为 0
MOV R2,#00H ;设置标志寄存器R2为 00H
MOV R3,#00H ;设置标志寄存器R3为 00H
LOOP: ACALL DISPLAY ;调用显示程序,如无中断产生则一直循环显示上一次的数
AJMP LOOP
X0: CJNE R2,#0,WAIT_I1 ;判断r2是否为255,若是跳到WAIT_I1(等待INT1中断)
CJNE R3,#0,WAIT_I0 ;判断r3是否为254,若是跳到WAIT_I0(等待INT0中断)
WAIT_I1:CJNE R3,#0,ADD_DLY ;INT0触发后等待INT1中断
LCALL DISPLAY ;否则循环显示上一次的数
AJMP WAIT_I1
WAIT_I0:CJNE R2,#0,DEC_DLY ;INT1触发后等待INT0中断
LCALL DISPLAY ;否则循环显示上一次的数
AJMP WAIT_I0
ADD_DLY:INC TEMP ;上一次显示的数加一
LCALL LOOP1
MOV R2,#0
MOV R3,#0
AJMP LOOP
DEC_DLY:DEC TEMP ;上一次显示的数减一
ACALL LOOP1
MOV R2,#0
MOV R3,#0
AJMP LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INT0 中断程序
INT_0:
MOV R2,#255
CJNE R3,#0,L0
MOV SP,#30H
MOV DPTR,#X0
PUSH DPL
PUSH DPH
L0: RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INT1 中断程序
INT_1:
MOV R3,#254
CJNE R2,#0,L1
MOV SP,#30H
MOV DPTR,#X0
PUSH DPL
PUSH DPH
L1: RETI
;;;;;;;;;;;;;;;;;;;;
LOOP1:MOV A,TEMP ;把 TEMP 分解为个位数、十位数、百位数
MOV B,#100
DIV AB
MOV c_bit,a
MOV A,B
MOV B,#10
DIV AB
MOV b_bit,A
MOV a_bit,B
ACALL DISPLAY
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY:MOV DPTR,#TAB ;屏蔽线所绕米数显示程序
MOV A,a_bit
MOVC A,@A+DPTR
MOV P1,A
CLR P2.0
ACALL DEL
SETB P2.0
MOV A,b_bit
MOVC A,@A+DPTR
MOV P1,A
CLR P2.1
ACALL DEL
SETB P2.1
MOV A,c_bit
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
ACALL DEL
SETB P2.2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DEL:MOV R5,#255
DJNZ R5,$
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;7段数码管各划的数字排列表
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -