汇编语言串口通信接收发送的程序题
更新时间:2023-09-23 22:49:01 阅读量: IT计算机 文档下载
例2 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。 解:1、计算计数初值X:
由于晶振为12 MHz,所以机器周期Tcy为1 ?s。 所以:
N=t/ Tcy =10×10-3 / 1×10-6=10000 X=65536-10000=55536=D8F0H 即应将D8H送入TH0中,F0H送入TL0中 2、求T0的方式控制字TMOD:
M1M0=01,GATE=0,C/T=0,可取方式控制字为01H; ORG 0000H
LJMP MAIN ;跳转到主程序 ORG 000BH ;T0的中断入口地址 LJMP DVT0 ;转向中断服务程序 ORG 0100H
MAIN:MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0D8H ;装入计数初值 MOV TL0,#0F0H
SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0
SJMP $ ;等待中断 DVT0:CPL P1.0 ;P1.0取反输出 MOV TH0,#0D8H ;重新装入计数值 MOV TL0,#0F0H
RETI ;中断返回
END ? 2、串行口方式1的发送和接收
例7-4:89C51串行口按双工方式收发ASCII字符,最高位用来作奇偶校验位,采用奇校验方式,要求传送的波特率为1200b/s。编写有关的通信程序。
解:7位ASCII码加1位奇校验共8位数据,故可采用串行口方式1。
89C51单片机的奇偶校验位P是当累加器A中1的数目为奇数时,P=1。如果直接把P的值放入ASCII码的最高位,恰好成了偶校验,与要求不符。因此,要把P的值取反以后放入ASCII码最高位,才是要求的奇校验。 ? ?
2、串行口方式1的发送和接收
双工通信要求收、发能同时进行。收、发操作主要是在串行接口进行,CPU只是
把数据从接收缓冲器读出和把数据写入发送缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是RI置位还是TI置位来决定CPU是进行发送操作还是接收操作。 发送和接收都通过调用子程序来完成,设发送数据区的首地址为20H,接收数据区的首地址为40H,fosc为6MHz,通过查波特率初值(表7-2)可知定时器的初装值为F3H。定时器T1采用工作模式2,可以避免计数溢出后用软件重装定时初值的工作。 ?
2、串行口方式1的发送和接收
主程序
MOV TMOD ,#20H ;定时器1设为模式2
MOV TL1 , #0F3H ;定时器初值 MOV TH1 ,#0F3H ;8位重装值
SETB TR1 ;启动定时器1 MOV SCON ,#50H ;设置为方式1, ;REN=1 MOV R0 ,#20H ;发送数据区首址 MOV R1 ,#40H ;接收数据取首址 ACALL SOUT ;先输出一个字符 SETB ES
SETB EA
SJMP $ ;等待中断 ?
2、串行口方式1的发送和接收
发送子程序
SOUT: CLR TI
MOV A , @R0 ;取发送数据到A
MOV C ,P ;奇偶标识赋予C CPL C ;奇校验 MOV ACC.7, C
INC R0 ;修改发送数据指针 MOV SBUF ,A ;发送ASCII码
RET ;返回 ? 2、串行口方式1的发送和接收 ? 例7-7:利用串行口和堆栈技术发送字符串常量。 ? 上面两个例子中,发送和接收的都是一些变量数据,且存放在内部RAM单元中。现说明如何利用堆栈技术发送存放在程序存储器内的字符串常量。 ? 下面的例子中,这些字符串是发送给CRT终端的,以回车符(CR)和换行符(LF)开始,以换码符(ESC)为结尾。下面是程序片断: ? 2、串行口方式1的发送和接收
CR EQU 0DH ;ASCII回车符
LF EQU 0AH ;ASCII换行符 ESC EQU 1BH ;ASCII换码符
……
MOV TMOD ,#20H ;设置定时器T1为模式2
MOV TL1 ,#0FDH ;设波特率位9600b/s
;(fosc=11.059MHz) MOV TH1 ,#0FDH
SETB TR1 ;启动T1运行 MOV SCON ,#01000000B ;设置串行口方式1 ACALL XSTRING
DB CR ,LF
DB ‘NU&BIAA’ ;字符串常量 DB ESC MOV B, #01H
…… ? ?
3、串行口方式2、方式3的发送和接收
串行口方式 2与方式 3基本一样(只是波特率设置不同),接收/发送 11位信息:
开始为l位起始位(0),中间8位数据位,数据位之后为1位程控位(由用户置SCON的TB8决定),最后是1位停止位(1)。只比方式l多了一位程控位。 3、串行口方式2、方式3的发送和接收
例7-8:用第9个数据位作奇偶校验位,编制串行口方式2的发送程序。
解:设计一个发送程序,将片内RAM 50H~5FH中的数据串行发送;串口设定为方
式2,TB8作奇偶校验位。在数据写入发送缓冲器之前,先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用。 程序清单如下:
TRT: MOV SCON ,#80H ;方式2设定
MOV PCON ,#80H ;取波特率为fosc/32 MOV R7 ,#10H ;数据长度10H→R7 LOOP: MOV A ,@R0 ;取数据→A MOV C ,PSW.0 ;P→TB8
MOV TB8 ,C
MOV SBUF ,A ;数据→SBUF,启动发送 WAIT: JBC TI ,CONT ;判断发送中断标志 SJMP WAIT CONT: INC R0
DJNZ R7 ,LOOP RET ? 3、串行口方式2、方式3的发送和接收
例7-9 编制一个串行口方式2接收程序,并核对奇偶校验位。
在方式2、方式3的发送过程中,将数据和附加在TB8中的奇偶位一块发向对方。因此,作为接收的一方应设法取出该奇偶位进行核对,相应的接收程序段为: RRR: MOV SCON ,#90H ;选方式2,并允许接收(REN=1) LOOP: JBC RI ,RECEIV ;等待接收数据并清RI
SJMP LOOP
RECEIV: MOV A ,SBUF ;将接收到的字符取出后,送到ACC。 ;传送指令影响PSW, 产生接收端的奇偶值
JB PSW.0 ,ONE ; P=1, 转判RB8 JB RB8 ,ERR ; P=0, 判RB8
? ?
SJMP RIGHT ; P=0, RB8=0接收正确 ONE: JNB RB8 ,ERR ; P=1, RB8=0转错误处理 RIGHT: ERR: ?
…… ; P=1, RB8=1接收正确 ……
…… ;接收有错
3、串行口方式2、方式3的发送和接收
例7-10:编制一个发送程序,将片内RAM中50H—5FH的数据串行发送。串行口设定为工
作方式2,TB8作奇偶校验位。 ? 解:在数据写入发送SBUF之前,先将数据的奇偶标志P写入TB8,此时,第9位
数据便可作奇偶校验用。可采用查询和中断两种方式发送。
(1)采用查询方式的程序段 MAIN:
ORG 0000H
AJMP MAIN ;上电,转向主程序 ORG 0100H ;主程序 MOV SCON ,#80H ;设工作方式2
MOV PCON ,#80H ;取波特率为fosc/32
MOV R0 ,#50H ;首址50H送R0 MOV R7 ,#10H ;数值长度送R7 LOOP: MOV A ,@R0 ;取数据 MOV C ,PSW.0 ;P→C
MOV TB8 ,C ;奇偶标志送TB8 MOV SBUF ,A ;发送数据 WAIT: JBC TI ,CONT
AJMP WAIT
;等待中断标志TI=1
CONT: INC R0
DJNZ R7 ,LOOP ;数值尚未发送完, 继续发送下一个数据 SJMP $ END
(2)采用中断方式的程序段
ORG 0000H
AJMP MAIN ;上电,转向主程序 ORG 0023H ;串行口的中断入口地址 AJMP SERVE ;转向中断服务程序 ORG 0100H ;主程序 MAIN:
MOV SCON ,#80H MOV PCON ,#80H
MOV R0 ,#50H MOV R7 ,#0FH
SETB ES ;允许串行口中断 SETB EA ;CPU允许中断 MOV A , @R0
MOV C , PSW.0 ;P→C MOV TB8 ,C
MOV SBUF ,A ;发送第一个数据 SJMP $ ? 3、串行口方式2、方式3的发送和接收
例7-11:编制一个接收程序,将接收的16B数据送入片内RAM的50H—5FH单元中。设串
行口工作于方式 3,波特率为2400b/s。 ?
解:方式3为11位异步通信方式,波特率取决于TI的溢出率。查 表7-2可知,
当晶振为11.059MHz,波特率为2400b/s时,可取SMOD=0。 源程序如下:
MAIN: MOV TMOD ,#20H ;设TI工作于模式2 MOV TH1 ,#0F4H ;赋循环计数初值
MOV TL1 ,#0F4H ;赋计数值
SETB TR1 ;启动定时器TI MOV R0 ,#50H ;首地址送R0 MOV R7 ,#10H ;数据长度送R7
MOV SCON ,#0D0H ;串行口工作于方式3,可接收 MOV PCON ,#00H ;设SMOD=0
WAIT: JBC RI ,PR1 ;接收完一帧数据,清RI,转PR1 SJMP WAIT ;否则等待 PR1: MOV A ,SBUF ;读入数据 JNB P ,PNP
;P=0,转PNP
JNB RB8 ,PER ;P=1,RB8=0,转出错处理 SJMP RIGHT
PNP: JB RB8 ,PER ;P=0,RB8=1,转出错处理 RIGHT: MOV @R0 ,A ;数据送内存
INC R0 ;修改地址指针
DJNZ R7 ,WAIT ;数据未接收完,继续接收下一个数据 CLR PSW.5 ;置正确接收完毕标志F0=0 RET
PER: SETB PSW.5 RET
1.MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?
答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。
2.已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤) 答:定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是1388H TMOD的值是00000001B,TH0=13H;TL0=88H。
3.MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。
答:MCS51系列单片机上有1个8位CPU、128B的RAM、21个SFR、4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM;8051内有4KB的掩膜ROM;8751内有4KB的EPROM。 简述行列式非编码键盘的工作原理。
答:行线通过电阻接+5V。没有键闭合时,行线呈高电平; 某键闭合时,该键对应的行线和列线被短路。此时行线电平由列线电位所决定。在某一时刻只让一条列线处于低电平,其他列线处于高电平。当这一列邮件按下时,该键所在的行电平将有高电平变成低电平,可判断该列相应的行是否有键按下。同理,逐列扫描各列,便可识别所有按键的动作。 1.
答: ?
对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,亦简述MCS-51系列单片机I/O口的功能。
正在阅读:
汇编语言串口通信接收发送的程序题09-23
强奸案侦破纪实高平公安局破获系列持械入室抢劫、强奸案纪实10-18
2018年华侨大学823信号与系统考研专业课真题硕士研究生入学考试试题10-13
《无问西东》观后感02-06
商品编码 第2讲 讲义、习题10-09
Spark实验报告04-15
《静电屏蔽》教学案例资料03-08
马克思主义哲学辨析题12-28
- 供应商绩效评价考核程序
- 美国加州水资源开发管理历史与现状的启示
- 供应商主数据最终用户培训教材
- 交通安全科普体验教室施工方案
- 井架安装顺序
- 会员积分制度
- 互联网对美容连锁企业的推动作用
- 互联网发展先驱聚首香港
- 公司文档管理规则
- 机电一体化系统设计基础作业、、、参考答案
- 如何选择BI可视化工具
- 互联网产品经理必备文档技巧
- 居家装修风水的布置_家庭风水布局详解
- 全省基础教育信息化应用与发展情况调查问卷
- 中国石油--计算机网络应用基础第三阶段在线作业
- 【知识管理专题系列之五十八】知识管理中如何实现“场景化协同”
- 网络推广方案
- 中国石油--计算机网络应用基础第二阶段在线作业
- 汽车检测与维修技术专业人才培养方案
- 详解胎儿颈透明层
- 汇编语言
- 串口
- 接收
- 发送
- 通信
- 程序
- 开题报告-会计内部控制与社会监督
- 浙江省2016年主治医师(全科)职称试题
- 桌上型饮水机市场现状分析及前景预测报告(目录) - 图文
- 2009级要的《大学物理II》期中考试试卷-A卷 - 2010 - 11 - 3 -
- 研发项目管理之组合方法
- 液态金属铸造成形
- 高中英语听力教学设计与反思
- 中国军衔等级(图片)
- 01太祖高皇帝实录(清朝勒德洪等)
- 2012年济宁市专业技术人员培训-信息化能力建设教程带答案--4套题
- 丽水瓯江流域治理 - 图文
- 河北工业大学研究生英语期末考试样题--2012.6
- 雷克萨斯LS400汽车电控悬架系统控制原理与检修
- 银行ATM存取款机系统设计与实现数据库课程设计
- 测控技术与仪器专业导论大作业
- 素质教育评语
- 城内小学少先队大队委竞选笔试试题
- 幼儿园小班读本故事
- 57 南方电网设备标准技术标书-220kV主变保护标准技术标书
- 一个很好的励志故事(2000字)