⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 89c51.asm

📁 89c51的端口巡检及于pc机的串口通讯例子
💻 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 + -