最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机串口电路

来源:动视网 责编:小OO 时间:2025-09-23 18:24:05
文档

单片机串口电路

单片机串口电路串口实验的源程序如下所示:;这是一个S51单片机实验开发板向PC机的串口单向发送数据AF的演示程序;采用MAX232专用芯片作RS232/TTL电平转换.;通讯波特率为4800KBPS,只要按下一次K1(就是P3.6引脚变成低电平);就发送一个16进制的AF字符ORG0000HMOVSCON,#50H;设置成串口1方式MOVTMOD,#20H;波特率发生器T1工作在模式2上MOVPCON,#80H;波特率翻倍为2400x2=4800BPSMOVTH1,#0F3H;预置初值(按照波
推荐度:
导读单片机串口电路串口实验的源程序如下所示:;这是一个S51单片机实验开发板向PC机的串口单向发送数据AF的演示程序;采用MAX232专用芯片作RS232/TTL电平转换.;通讯波特率为4800KBPS,只要按下一次K1(就是P3.6引脚变成低电平);就发送一个16进制的AF字符ORG0000HMOVSCON,#50H;设置成串口1方式MOVTMOD,#20H;波特率发生器T1工作在模式2上MOVPCON,#80H;波特率翻倍为2400x2=4800BPSMOVTH1,#0F3H;预置初值(按照波
单片机串口电路 

 

 

 

 

串口实验的源程序如下所示:

;这是一个S51单片机实验开发板向PC机的串口单向发送数据AF的演示程序

;采用 MAX232专用芯片作RS232/TTL电平转换.

;通讯波特率为4800KBPS,只要按下一次K1(就是P3.6引脚变成低电平)

; 就发送一个16进制的AF字符

ORG 0000H 

MOV SCON,#50H;设置成串口1方式

MOV TMOD,#20H;波特率发生器T1工作在模式2上

MOV PCON,#80H;波特率翻倍为2400x2=4800BPS

MOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)

MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)

SETB TR1;启动定时器T1

;以上完成通讯初始化设置

WRIT:JB P3.6,$;判断K1是否按下,如果没有按下就等待

ACALL DELAY10;延时10毫秒消触点抖动

JB P3.6,WRIT;去除干扰信号

JNB P3.6,$;等待按键松开

MOV A,#0AFH;将16进制的字符AF发送到串口去

MOV SBUF,A;将AF通过串口发送出去

AJMP WRIT

;10 毫秒延时子程序

DELAY10:MOV R4,#20

D2:MOV R5,#248

DJNZ R5,$

DJNZ R4,D2

RET

END

;=============两机串口通讯程序(主机)=====================

;

; 功 能: 使用串行中断,接收数据并显示

; 硬件环境: 自制单片机实验板

; 软件环境: 伟福 V3.20

; Create date: 2004_07_26

; First Modify: 2004_07_26

; second Modify:

; Last Modify: 2004_07_26

; Author: Sujiande

;

;===========预定义===================

LED0 EQU 40H ;预定义数码管

LED1 EQU 41H ;预定义数码管

LED2 EQU 42H ;预定义数码管

LED3 EQU 43H ;预定义数码管

LED4 EQU 44H ;预定义数码管

LED5 EQU 45H ;预定义数码管

LED6 EQU 46H ;预定义数码管

LED7 EQU 47H ;预定义数码管

SDA BIT P0.1 ; 定义数据线引脚定义

SCL BIT P0.0 ; 定义时钟线引脚定义

;---------------------------

ORG 0000H ;主程序入口

AJMP MAIN ;跳转到主程序

ORG 0100H ;主程序在ROM中存放位置

;===============主程序=====================

MAIN:

MOV LED0,#00H ;赋初值

MOV LED1,#00H

MOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭

MOV LED3,#16

MOV LED4,#16

MOV LED5,#16

MOV LED6,#16

MOV LED7,#16

;--------------------

;MOV DPTR,#TABLE ; 赋显示代码首地址

MOV R1,#00H ; 给R1赋初值00H

ACALL DISPLAY ; 调显示子程序

MOV SP, #30H ; 给堆栈指针赋初值

;--------------------------

; 使用定时器1,作为波特率发生器,设定波特率=9600,

; 定时器初值为:FAH

; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,

; RB8=0,TI=0,RI=0 即0101 0000B

; 波特率加倍

;-----------------------------

MOV TMOD,#20H ;设置定时器1,工作方式2

MOV TH1,#0FAh ;赋初值: FA

MOV TL1,#0FAh ;赋初值: FA

MOV SCON, #50h ;设置串行口控制寄存器

MOV PCON, #80h ;设置电源控制寄存器, 让波特率加倍(2X)

SETB TR1 ;启动定时

;***************** 主程序结束************************

LP8: MOV A,R1 ;将R1的数据装到A中

;-----------------------

MOV SBUF,A ;将A的数据送到缓冲区

JNB TI,$ ;等待数据发送完毕

CLR TI ;清发送中断标志

;-----------------------

INC R1

CJNE R1,#99,LP3

MOV R1,#00H

LP3: ACALL SEPERATE ;调拆分程序

ACALL DISPLAY ;调显示子程序

ACALL DELAY_1S ;调延时子程序

AJMP LP8

;================= 拆分程序=====================

SEPERATE: ANL A,#0Fh ;与操作得到个位数据

MOV LED0,A ;个位送LED0

MOV A,R1

ANL A,#0F0H ;与操作得到十位数据

SWAP A

MOV LED1,A ;十位送LED1

RET

;===============显示子程序======================

DISPLAY:

MOV DPTR,#TABLE ; 赋显示代码首地址

MOV A,LED0 ;查表数据送A

MOVC A,@A+DPTR ;查表,得到显示代码

ACALL SHIFT ;调移位子程序

MOV A,LED1

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED2

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED3

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED4

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED5

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED6

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED7

MOVC A,@A+DPTR

ACALL SHIFT

RET

;---------显示代码表 ---------

TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9,

DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,灭,-

;================移位子程序============================

SHIFT: PUSH A ; 进栈暂存A值

MOV R0,#8 ; 循环8次

CLR C ;清进位标志

CLR SCL ;时钟线,先钳位为0

LP2: RLC A

MOV SDA,C

NOP

NOP

SETB SCL

NOP

NOP

CLR SCL

NOP

NOP

DJNZ R0,LP2

POP A ; 出栈恢复A值

RET

;=============延时子程序===============

DELAY_1S:

MOV R7,#0ffH

LOOP7: MOV R6,#0ffH

LOOP6: NOP

NOP

NOP

NOP

NOP

NOP

DJNZ R6,LOOP6

DJNZ R7,LOOP7

RET

;------------------------------

END

;============= 两机串口通讯程序(从机)=====================

;

; 功 能: 使用串行中断,接收数据并显示

; 硬件环境: 自制单片机实验板

; 软件环境: 伟福 V3.20

; Create date: 2004_07_26

; First Modify: 2004_07_26

; second Modify:

; Last Modify: 2004_07_26

; Author: Sujiande

;

;===========预定义===================

LED0 EQU 40H ;预定义数码管

LED1 EQU 41H ;预定义数码管

LED2 EQU 42H ;预定义数码管

LED3 EQU 43H ;预定义数码管

LED4 EQU 44H ;预定义数码管

LED5 EQU 45H ;预定义数码管

LED6 EQU 46H ;预定义数码管

LED7 EQU 47H ;预定义数码管

SDA BIT P0.1 ; 定义数据线引脚定义

SCL BIT P0.0 ; 定义时钟线引脚定义

;---------------------------

ORG 0000H ;主程序入口

AJMP MAIN ;跳转到主程序

ORG 0023H ;中断入口地址

AJMP S_INT ;跳转到中断程序

ORG 0100H ;主程序在ROM中存放位置

;==============主程序========================

MAIN:

MOV LED0,#00H ;赋初值

MOV LED1,#00H

MOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭

MOV LED3,#16

MOV LED4,#16

MOV LED5,#16

MOV LED6,#16

MOV LED7,#16

;------------------------------

MOV DPTR,#TABLE ; 赋显示代码首地址

ACALL DISPLAY ; 调显示子程序

MOV SP, #30H ; 给堆栈指针赋初值

;--------------------------------------------

; 使用定时器1,作为波特率发生器,设定波特率=9600,

; 定时器初值为:FAH

; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0,

; RB8=0,TI=0,RI=0 即0101 0000B

; 波特率加倍

;---------------------------------------------

MOV TMOD,#20H ;设置定时器1,工作方式2

MOV TH1,#0FAh ;赋初值: FA

MOV TL1,#0FAh ;赋初值: FA

MOV SCON, #50h ;设置串行口控制寄存器

MOV PCON, #80h ;设置电源控制寄存器, 让波特率加倍(2X)

;---------------------------------------

SETB EA ; 启动总中断

SETB ES ; 启动串行中断

SETB TR1 ;启动定时

AJMP $ ; 等待中断

;***************** 主程序结束************************

;===============中断服务程序=============================

S_INT:

MOV R1, SBUF ;将缓冲区的数据送到R1

ACALL SEPERATE ;调拆分程序

ACALL DISPLAY ;调显示子程序

CLR RI ;清接收中断标志

RETI ;中断返回

;=================拆分程序=====================

SEPERATE: MOV A,R1

ANL A,#0Fh ;与操作得到个位数据

MOV LED0,A ;个位送LED0

MOV A,R1

ANL A,#0F0H ;与操作得到十位数据

SWAP A ;

MOV LED1,A ;十位送LED1

RET

;=============== 显示子程序======================

DISPLAY:

MOV A,LED0 ;查表数据送A

MOVC A,@A+DPTR ;查表,得到显示代码

ACALL SHIFT ;调移位子程序

MOV A,LED1

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED2

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED3

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED4

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED5

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED6

MOVC A,@A+DPTR

ACALL SHIFT

MOV A,LED7

MOVC A,@A+DPTR

ACALL SHIFT

RET

;--------- 显示代码表---------

TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9,

DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,灭,-

;================移位子程序============================

SHIFT: PUSH A ; 进栈暂存A值

MOV R0,#8 ; 循环8次

CLR C ;清进位标志

CLR SCL ;时钟线,先钳位为0

LP2: RLC A

MOV SDA,C

NOP

NOP

SETB SCL

NOP

NOP

CLR SCL

NOP

NOP

DJNZ R0,LP2

POP A ; 出栈恢复A值

RET

;=============延时子程序===============

DELAY_1S:

MOV R7,#0ffH

LOOP7: MOV R6,#0ffH

LOOP6: NOP

NOP

NOP

NOP

NOP

NOP

DJNZ R6,LOOP6

DJNZ R7,LOOP7

RET

;------------------------------

END

文档

单片机串口电路

单片机串口电路串口实验的源程序如下所示:;这是一个S51单片机实验开发板向PC机的串口单向发送数据AF的演示程序;采用MAX232专用芯片作RS232/TTL电平转换.;通讯波特率为4800KBPS,只要按下一次K1(就是P3.6引脚变成低电平);就发送一个16进制的AF字符ORG0000HMOVSCON,#50H;设置成串口1方式MOVTMOD,#20H;波特率发生器T1工作在模式2上MOVPCON,#80H;波特率翻倍为2400x2=4800BPSMOVTH1,#0F3H;预置初值(按照波
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top