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

📄 jieshou.asm

📁 实现了单片机间的多种通讯模式
💻 ASM
字号:
Z8279 EQU 0FF82H;
D8279 EQU 0FF80H;
LEDCLS EQU 0D1H;
LEDWRO EQU 90H;
LEDFEQ EQU 34H;
LEDMOD EQU 10H;
;---------------------------
    	ORG 0000H
    	AJMP START
    	ORG 0050H
START:
   	MOV SP,#60H;    8279的初始化
    	LCALL INIT8279
    	LCALL INIT_CPU

       	MOV TMOD,#20H          ;把定时器1设置在模式2
       	MOV SCON,#70H          ;串行口工作在方式1
       	MOV PCON,#80H
	MOV TH1,#0FDH          ;波特率为9.6kbs
       	MOV TL1,#0FDH
       	SETB TR1
      
LOOP:
	JNB   RI,$           ;等待接受结束
      	CLR   RI
 	MOV   A,SBUF         ;接收数据 
       
       	CJNE A,#03H,NEX;若收到是3,则是成组接收,
       	AJMP LOO
NEX:
        CJNE A,#02H,NEXX
	AJMP LOOO;若收到是2,是发送回复
NEXX:          
       MOV 37H,36H
    	MOV 36H,35H
    	MOV 35H,34H
    	MOV 34H,33H
    	MOV 33H,32H
    	MOV 32H,31H
    	MOV 31H,30H
    	MOV 30H,A
 	LCALL DISP_NUM	
       	AJMP LOOP
;---------------------------
;承租接收,3+4
LOO:  	MOV 37H,#13H
	MOV 36H,#13H
	MOV 34H,#13H
	MOV 35H,#13H
	MOV 33H,#13H
	MOV 32H,#13H
	MOV 31H,#13H
	MOV 30H,#13H

	JNB RI,$
	CLR RI
	MOV A,SBUF
	MOV R0,A;数据个数存在R0

	MOV R1,#30H
LO1:	JNB RI,$
	CLR RI
	MOV A,SBUF
	MOV @R1,A
	INC R1
	DJNZ R0,LO1
 	LCALL DISP_NUM
	AJMP LOOP;重新来过
;--------------------------------------------------------
;2号功能接收,发送+回复	
LOOO:
	JNB RI,$
	CLR RI
	MOV A,SBUF
	CJNE A,#23H,LOOP;若不是23则返回初始状态
	
	JNB RI,$
	CLR RI
	MOV A,SBUF
	MOV R0,A;数据个数存在R0
	
	MOV R1,#30H

	MOV 37H,#13H
	MOV 36H,#13H
	MOV 34H,#13H
	MOV 35H,#13H
	MOV 33H,#13H
	MOV 32H,#13H
	MOV 31H,#13H
	MOV 30H,#13H

LO:	JNB RI,$
	CLR RI
	MOV A,SBUF
	MOV @R1,A
	INC R1
	DJNZ R0,LO
 	LCALL DISP_NUM;数据已接收完

LOOOO:	MOV DPTR,#Z8279
    	MOVX A,@DPTR
    	ANL A,#0FH
    	JZ LOOOO
    	
    	MOV DPTR,#D8279
    	MOVX A,@DPTR
	CJNE A,#02H,FANHUI;若A=2,则发送23,启动回复,按任意键返回
	MOV A,#23H
	MOV SBUF,A
	JNB TI,$
	CLR TI
	
	MOV 37H,#13H
	MOV 36H,#13H
	MOV 34H,#13H
	MOV 35H,#13H
	MOV 33H,#13H
	MOV 32H,#13H
	MOV 31H,#13H
	MOV 30H,#13H

	MOV R1,#30H
	MOV R4,R1
	MOV R0,#00H;数据个数
LOOOOO:	MOV DPTR,#Z8279
    	MOVX A,@DPTR
    	ANL A,#0FH
    	JZ LOOOOO
    	
    	MOV DPTR,#D8279
    	MOVX A,@DPTR
	CJNE A,#02H,NEE;若A=2则启动发送
		
	MOV A,R0
	MOV SBUF,A;发送数据个数
	JNB TI,$
	CLR TI
	MOV R1,R4
LOO1:
     
	MOV A,@R1
	MOV SBUF,A
	JNB TI,$
	CLR TI
	INC R1
	DJNZ R0,LOO1
	AJMP LOOO;在当前模式下循环
NEE:
	MOV @R1,A;把数据存入显示单元
	INC R1
	INC R0
	LCALL DISP_NUM
	AJMP LOOOOO;继续输入数据
FANHUI: MOV A,#22H
	MOV SBUF,A
	JNB TI,$
	CLR TI
	LJMP  LOOP;若输入的是任意键,则把22H发送过去,跳回默认的初始状态
;--------------------------------------------
INIT_CPU:
      MOV A,#00H;
      MOV R0,#30H
      MOV R2,#08H
INIT_CPU1:
      MOV @R0,A
      INC R0
      DJNZ R2,INIT_CPU1
      RET
;---------------------------------------------
INIT8279:
      MOV DPTR,#Z8279
      MOV A,#LEDCLS
      MOVX @DPTR,A
INIT82791:
      MOVX A,@DPTR
      JB ACC.7,INIT82791
      MOV A,#LEDMOD
      MOVX @DPTR,A
      MOV A,#LEDFEQ 
      MOVX @DPTR,A
      MOV A,#LEDWRO
      MOVX @DPTR,A
      MOV DPTR,#D8279
;TEST
      MOV A,#3FH
      MOVX @DPTR,A
      MOV A,#3FH
      MOVX @DPTR,A
      MOV A,#3FH
      MOVX @DPTR,A
      MOV A,#3FH
      MOVX @DPTR,A
      MOV A,#3FH
      MOVX @DPTR,A
      MOV A,#3FH
      MOVX @DPTR,A
      MOV A,#3FH
      MOVX @DPTR,A
      MOV A,#3FH
      MOVX @DPTR,A
      RET
;-------------------------------------------------
;SHOW
;ENTRANCE 30H-37H FROM THE RIGHT SIDE TO THE LEFT SIDE
DISP_NUM:
      MOV DPTR,#D8279
      MOV R0,#30H
      MOV R2,#08H
DISP_NUM1:
      MOV A,@R0
      MOV DPTR,#LEDSEG
      MOVC A,@A+DPTR
      MOV DPTR,#D8279
      MOVX @DPTR,A
      INC R0
      DJNZ R2,DISP_NUM1
      RET
;-------------------------------------------------
;SHOWSEG LIST
LEDSEG: DB 3FH,06H,5BH,4FH,66H;0,1,2,3,4
        DB 6DH,7DH,07H,7FH,6FH,77h;5,6,7,8,9
        DB 7CH,39H,5EH,79H,71H;
        DB 3EH,40H,08H,00H,30H,3FH,73H
        END
;-----------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -