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

📄 接收带发送2.asm

📁 是我在电子竞赛期间写的一些单片机汇编程序
💻 ASM
字号:
BUF     DATA    45H
DBUF0	  EQU     30H
DATA_SL DATA    80H		;定义位码变量
LED_ADDR	EQU	0A0H		;定义LED数码管的数据段地址

 	ORG	0000H
 	AJMP	MAIN
    	ORG     0100H
MAIN:
 	MOV	SP,#60H
      MOV	TMOD,#20H	;设置T1为方式2
	MOV	TH1,#0FDH	;设置波特率为9600
	MOV	TL1,#0FDH
	SETB	TR1
      MOV	SCON,#40H	;设置串口位方式1
	MOV	PCON,#00H
UPUP:
      MOV     R0,#30H
      MOV     R7,#4		;连续接收5个数据
RRU:
     	SETB    REN
RRUP:	JBC     RI,RRD   ;接受一位
     	AJMP    RRUP
RRD:  MOV     A,SBUF
      MOV     @R0,A
      INC     R0
      DJNZ    R7,RRU

      MOV     R0,#30H
      MOV     R7,#4
UP:   CLR     REN
      MOV     A,@R0
      MOV     SBUF,A  ;把它发送出去
NEXT: JBC     TI,DOWN
      AJMP    NEXT
DOWN: INC     R0
      DJNZ    R7,UP
DIP:  ACALL   DISPLAY
      AJMP    DIP


DISPLAY:
	MOV	R7,#04			;给R7赋初值,存放数码管的个数
	MOV	R0,#30H		;把显示缓冲区首地址送R0
	MOV	DATA_SL,#0F7H
LOOP:
	MOV	A,@R0			;取若显示的数据
	ANL	A,#0FH			;由于接收的数据是ASCII码,显示前先转换成BCD码?
	ACALL	TABLE			;查段码表,得出该数据对应的段码
	MOV P2,A			;LED数码管地址送DPTR
	MOV	A,DATA_SL		;位码送A            
	MOV	P0,A			;输出位码
	ACALL	DELAY			;调延时子程序
	MOV	P0,#0FFH		;输出位码
	Rl	A			;取下一个数码管
	MOV	DATA_SL,A		;保存该位码值
	INC	R0			;取下一个数据显示
	DJNZ	R7,LOOP		;6位数据显示完否?	
	RET

;**************
;延时子程序
;**************
DELAY:	
	MOV	R6,#10H
DELAY0:	MOV	R5,#40H
DELAY1:	DJNZ	R5,DELAY1
	DJNZ	R6,DELAY0
	RET

;查表子程序
TABLE:  INC     A	          ;基地址加一
        MOVC    A,       @A+PC    ;查段码表,取其相应的段码
        RET

DB      0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,80H,090H	;0-9的段码
DB	088H,083H,0c6H,0a1H,86H,8eH,0bfH,89H,8cH		;A-F、-、P的段码
	;
	END

⌨️ 快捷键说明

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