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

📄 51single-1.asm

📁 周立功试验板上的一个程序
💻 ASM
字号:
SDA	BIT		P1.0
CLK	BIT		P1.1
KDKEY	BIT     	P1.2		;定义键盘检测位
FRIT	EQU     	P1              ;定义P1口

DBUF0   DATA		40H             ;显示缓冲区首址
DBUF1	DATA		41H
DBUF2   DATA		42H
DBUF3   DATA		43H
DBUF4   DATA		44H
BUF     EQU		45H             ;存放中间变量
LENTH   EQU		05H             ;显示缓冲区长度

	ORG	0000H
	AJMP	MAIN

	ORG	0100H
MAIN:
	MOV	SP,#60H
	MOV	30H,#00H
	MOV	31H,#0dH
	MOV	32H,#10H
	MOV	33H,#05H
	MOV	34H,#01H
	MOV	TMOD,#20H	;设置T1为方式2
	MOV	TH1,#0FDH	;设置波特率为9600
	MOV	TL1,#0FDH
        MOV	SCON,#50H	;设置串口位方式1
	MOV	PCON,#00H
	SETB	TR1

UP:
	MOV	R0,#30H
	MOV	R7,#05H
	ACALL	SENDU		;发送d-51
	MOV	R0,#35H
	MOV	R7,#05H
	ACALL	RDS			
	MOV	40H,35H
	MOV	41H,36H
	MOV	42H,37H
	MOV	43H,38H
	MOV	44H,39H		;接受5个数据
TENDUP:	
	ACALL	DISPLAY
	AJMP	TENDUP	

;串口发送子程序,R7中存放数据个数,数据首地址存放在R0中
SENDU:
	MOV	A,@R0
	MOV	SBUF,A
SENDWT:
	JBC	TI,SENDNEXT
	AJMP	SENDWT
SENDNEXT:
	INC	R0
	DJNZ	R7,SENDU
	RET
;串口接受子程序,R7中存放数据个数,接受存放到首地址R0中
RDS:
	SETB	REN
RDWAIT:	JBC	RI,RDNEXT
	AJMP	RDWAIT
RDNEXT:	MOV	A,SBUF
	MOV	@R0,A
	INC	R0
	DJNZ	R7,RDS
	RET		
	
TXDBYTE:
	PUSH	   PSW
	PUSH	   ACC	
	MOV	   R3,#08H
TXDUP:	RLC	   A
	MOV	   SDA,C
	CLR	   CLK
	SETB	   CLK
	DJNZ	   R3,TXDUP
	POP	   ACC
        POP	   PSW
	RET											

DISPLAY:  
           MOV     R2,       #7FH     ;给位码初值
           MOV     R0,       #DBUF0   ;给显示缓冲区首值
ZCQ:       MOV     A,        @R0
           LCALL   TAB                ;查表取段码
           ACALL   TXDBYTE		      ;送段码输出
           MOV     BUF,      FRIT
           ANL     BUF,      #07H
           MOV     A,        R2       ;保证不影响其它位送位码
           ORL     A,        BUF       
           MOV     FRIT,     A
           LCALL   DELAY              ;调延时子程序
 	   MOV	   FRIT,#0FFH
           INC     R0
           MOV     A,        R2
           RR      A
           MOV     R2,       A
           CJNE    R0,       #45H,  ZCQ;5位显示完吗?
           MOV     R0,       #40H
           MOV     R2,       #7FH
	   MOV	   FRIT,     #0FFH
           RET
;延时子程序
DELAY:     MOV     R7,      #50H     ;12M时钟下延时1MS	
DELAY0:    MOV     R6,      #10H
DELAY1:    DJNZ    R6,      DELAY1
           DJNZ    R7,      DELAY0
           RET
;查表子程序
TAB:       INC     A	             ;基地址加一
           MOVC    A,       @A+PC    ;查段码表,取其相应的段码
           RET
DB         0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,80H,090H,088H,083H,0c6H,0a1H,86H,8eH,0bfH,89H,8CH
	   ;(0-9 A-F)共阳段码表						
	   END

⌨️ 快捷键说明

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