📄 89c51.asm
字号:
; 足球项目 主板
; 2002-12-13 Design By Zhou-xiaomin
DATIN BIT P3.7 ;4067-DATE INPUT/OUTPUT
CPL1 BIT P3.2 ;主机1-16片选
CPH1 BIT P3.3 ;主机17-32片选
KZ BIT P3.4 ;从机控制位
LED BIT P3.5
;----------------------------------------------------
ORG 0000H
MAIN:
SETB DATIN ;数据口复位
SETB CPL1 ;关断主机4067选通
SETB CPH1
SETB KZ ;关断另一机控制位
LCALL UART
LCALL FM
LCALL YS8S
;SCANL扫描1-16位
START: CLR CPL1 ;主机1-16选通
SETB CPH1 ;关主机17-32选通
SETB KZ ;关断另一机控制位
MOV R0,#010H ;扫描位数16字节
MOV R1,#00H ;从通道1#到16#共16位
SL: MOV A,R1
MOV P1,A
INC A
LCALL YS1MS
JNB DATIN,DTOUT ;检测输出端口DATIN
INC R1
DJNZ R0,SL
LCALL YS5MS
;SCANH扫描17-32位
CLR CPH1 ;主机17-32选通
SETB CPL1 ;关主机1-16选通
MOV R0,#010H ;扫描位数16字节
MOV R1,#00H ;从通道17#到32#共16位
SH: MOV A,R1
MOV P1,A
INC A
ADD A,#010H
LCALL YS1MS
JNB DATIN,DTOUT ;检测输出端口DATIN
INC R1
DJNZ R0,SH
AJMP START
;-----------------------
DTOUT: LCALL YS10MS
JNB DATIN,DT1 ;检测输出端口DATIN
AJMP START ;发送一字节,地址在A内
;lcall fm
DT1: MOV R0,A ;端口地址暂存R0
MOV A,#20H
CLR C
SUBB A,R0 ;32减端口地址
JNC DT2 ;无借位转移
CLR C ;借位标志有借位复位
AJMP START
DT2: MOV A,R0 ;端口地址回存A
CLR KZ ;开另一机控制位
;LCALL UART
LCALL SENT1 ;发送端口地址,地址在A内
WT1: LCALL RECV1 ;串口接收一字节.接收内容在A中
CJNE A,#80H,WT1
AJMP START
;==========================
UART: ;串口初始化
MOV SCON,#50H ;串口方式1,SM2=0,REN=1
MOV 87H,#00H ;PCON=0,SMOD=0
MOV TMOD,#20H ;定时器1方式2
MOV TH1,#0FAH ;初值--->T1,波特率=4800,11.0592M晶振
MOV TL1,#0FAH
SETB TR1 ;T1开始计数
RET
;============================
FM: CLR LED ;开LED
LCALL YS100
SETB LED
RET
;----------------------------
;串口发送一字节.发送内容在A中
SENT1:
MOV SBUF,A ;发送一字节
WAIT: JBC TI,S01 ;发送中断标志TI置位转移并复位
SJMP WAIT
S01: RET
;----------------------------
;串口接收一字节.接收内容在A中
RECV1:
WAIT2: JBC RI,REC1 ;接收中断标志RI置位转移并复位
SJMP WAIT2
REC1: MOV A,SBUF ;接收一字节
RET
;-----------------------------------------
YS10MS: MOV R5,#10
AJMP EE1
YS5MS: MOV R5,#5 ;延时5MS
AJMP EE1
YS1MS: MOV R5,#1 ;延时1MS
AJMP EE1
YS100: MOV R5,#100
AJMP EE1
YS200: MOV R5,#200
AJMP EE1
YS250: MOV R5,#250 ;延时250MS
EE1: MOV R6,#250 ;延时1MS
EE2: DJNZ R6,EE2
DJNZ R5,EE1
RET
;--------------------------------------------------
YS1S: MOV R4,#4
FD: LCALL YS250
DJNZ R4,FD
RET
YS2S: MOV R4,#8 ;延时2S
FDD: LCALL YS250
DJNZ R4,FDD
RET
;-------------------------------------------------
YS8S: LCALL YS2S ;延时8S
LCALL YS2S
LCALL YS2S
LCALL YS2S
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -