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

📄 w77e58demo.asm

📁 华邦单片机W77E516 双串口范例源代码
💻 ASM
字号:
;****************************************************
;W77E58双串口演示程序
;CHENWEN   2006-6-12
;****************************************************
SCON0  EQU	 98H
SCON1  EQU	 0C0H
RCAP2H EQU	 0CBH
RCAP2L EQU	 0CAH
SBUF0	EQU	99H
SBUF1	EQU	0C1H
TL2   EQU 0CCH
TH2   EQU 0CDH
T2CON   EQU 0C8H
;T2MOD   EQU 0C9H
RCLK   BIT T2CON.5
TCLK   BIT T2CON.4
TR2    BIT T2CON.2
REN_1  BIT SCON1.4
TI_1   BIT SCON1.1
RI_1   BIT SCON1.0
;ES    BIT IE.4
ES1    BIT IE.6
PMR   EQU 0C4H

UART0_DATA	EQU	0100H		;测试 1K SRAM
UART1_DATA	EQU	0200H

                ORG     0000H
                LJMP    START
                ORG		0023H
                AJMP 	UART0
                ORG     003BH
                AJMP 	UART1
                ORG     100H
START:
                MOV     SP,#5FH          ;初始化堆栈
				ORL     PMR, #00000001B    ; DME0位设置为”1”,允许使用1K SRAM
;串口0
                MOV     SCON0,#01000000B ;串口0工作于方式1               
                MOV     RCAP2H,#0FFH
                MOV     RCAP2L,#0B8H     ;9600波特, 22.1184M;
                MOV     TH2,#0FFH
                MOV     TL2,#0B8H        ;9600波特, 22.1184M;
                MOV     PCON,#00H
                SETB    RCLK             ;把定时器T2设置为波特率产生器
                SETB    TCLK
                SETB    TR2
                SETB	REN
                SETB	ES
         
;注意事项:串口0可以用定时器1或定时器2作波特率发生器,串口1只能用T1作波特率发生器。
;当2个串口波特率相同时,可以使用一个定时器T1作波特率发生器。

;串口1
                MOV     TMOD,#00100000B ;定时器T1设置为方式2作波特率发生器
                MOV     TH1,#0E8H       ;1200波特定时初值:11.0592M
                MOV     TL1,#0E8H
                SETB    TR1             ;定时器T1开始运行。
                MOV     SCON1,#01000000B ;串口1工作于方式1
                SETB	ES1
                SETB	REN_1
                SETB	EA
MAIN:
				CLR		ES1
				MOV     A,#55H
				MOV		SBUF1,A			;从串口发送回PC
				JNB		TI_1,$
				CLR		TI_1
				SETB	ES1
				
				AJMP 	MAIN			;等待串口中断;                
				
;********************************************************************************               
UART0:
				CLR		RI
				MOV		A,SBUF0			;接收串口数据
				MOV		DPTR,#UART0_DATA
				MOVX	@DPTR,A				;用外部1K SRAM
				CLR		A
				NOP
				CLR		ES
				MOVX	A,@DPTR
				MOV		SBUF0,A			;从串口发送回PC
				JNB		TI,$
				CLR		TI
				SETB	ES
				RETI
UART1:
				CLR		RI_1
				MOV		A,SBUF1			;接收串口数据
				MOV		DPTR,#UART1_DATA
				MOVX	@DPTR,A			;用外部1K SRAM
				CLR		A
				NOP
				MOVX	A,@DPTR
				NOP
				CLR		ES1
				MOV		SBUF1,A			;从串口发送回PC
				JNB		TI_1,$
				CLR		TI_1
				SETB	ES1
				RETI
                END

⌨️ 快捷键说明

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