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

📄 51doule.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	40H,#00H
	MOV	41H,#00H
	MOV	42H,#00H
	MOV	43H,#00H
	MOV	44H,#00H
	MOV	TMOD,#20H	;设置T1为方式2
	MOV	TH1,#0FDH	;设置波特率为9600
	MOV	TL1,#0FDH
        MOV	SCON,#50H	;设置串口位方式1
	MOV	PCON,#00H
	SETB	TR1

UP:
	ACALL	DISPLAY

	JB	RI,URXD
	SETB	KDKEY
	MOV	A,#00H
	ACALL	TXDBYTE
	JB	KDKEY,UP
	ACALL	KEY
UTXD:	
	MOV	A,R1
	MOV	SBUF,A
WAIT:	JBC	TI,UP
	AJMP	WAIT
	AJMP	UP

URXD:	MOV	A,SBUF
RXDRET:
	MOV	40H,A
	MOV	41H,A
	MOV	42H,A
	MOV	43H,A
	MOV	44H,A
	CLR	RI
	AJMP	UP

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											

KEY:	
	SETB		KDKEY
	MOV		R1,#00H		;赋初值
	MOV		A,#0FEH		;是,则判断其键值
KEYZHI:	ACALL		TXDBYTE		;是此键吗?
	JNB		KDKEY,KEYRET	;是,则保存退出
	RL		A		;否则检测下一个键
	INC		R1
	CJNE		A,#7FH,KEYZHI	;检测完了吗?
KEYRET:	
	MOV		FRIT,#0FFH
	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 + -