单片微机原理及应用 丁元杰版_第1页
单片微机原理及应用 丁元杰版_第2页
单片微机原理及应用 丁元杰版_第3页
单片微机原理及应用 丁元杰版_第4页
单片微机原理及应用 丁元杰版_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片微机原理及应用机械工程系机电一体化实验室授课教师:梁蔓安电话论单片机的概念:

发展:三类单片机实物微芯公司的3类单片机玩具小车的单片机系统直流伺服电机的单片机控制第1章基本概念电子计算机广泛应用的原因(1)高速度(2)具有记忆功能(3)具有逻辑判断功能(4)高精度,高可靠性计算机基本结构1、结构如图P5图1-1,四部分:(1)CPU(2)存储器(3)外围设备(4)接口2、概念:主机,外围设备,CPU,字长微型计算机硬件结构1、结构如图P5图1-2,由以下组成:微处理芯片存储器芯片

I/O接口电路2、芯片之间用总线连接微处理器由以下组成:

算术逻辑部件,工作寄存器,控制部件。存储器有许多存储单元组成,如图P6图1-3。

在访问(读或写)存储器时,为明确所要访问的存储器单元,需要给每个存储器单元一个编号,即为地址。输入输出(I/O)接口电路

接口的作用:P6总线概念;P6

图1-4

总线冲突;三态门缓冲器图1-5,1-6

地址,数据,控制总线微型计算机软件计算机要实现自动控制,除了硬件外,还需将控制想法、逻辑、算法,以软件的形式送入微型计算机。软件由各种程序组成,而程序是由一条条指令组成。指令、程序的概念语言:一种操作人员与计算机交流的方式。机器语言、汇编语言、高级语言8952单片机的C程序程序地址机器语言汇编程序计算机中的数(1)进制、各进制数之间的转换(2)代符号的数的表示(3)定点数、浮点数(4)ASCII码参考P365附录ABCD码BCD码(BinaryCodedDecimal)二进制代码表示的十进制数。例:求十进制数876的BCD码[876]BCD=100001110110运算器由ALU、A、TR、F组成参考P22

图1-14其中ALU、A是主要部件,各自作用是……控制器工作寄存器程序计数器PC

(ProgramCounter)概念:复位//单片机复位后,PC=0。程序计数器作用:记录下一条将要执行的程序指令的地址,起着管理程序执行次序的作用。程序的两种执行方式:顺序、跳转。程序计数器(PC)的复位、计数、直接置数计算机指令执行过程

复位取指令PC+1执行指令存储器只有将所需要的程序和数据存入存储器,计算机才能够脱离人的直接干预自动工作。存储器的分类:ROM程序存储器

RAM

数据存储器存储器的读和写(访问)P26图1-16,1-18单片机程序烧写器(编程器)堆栈(1)概念(2)作用(3)概念:断点地址、现场、现场保护和恢复(4)入栈、出栈、堆栈指针输入输出接口(1)作用:1、2、3、4、5、6(2)分组后的I/O接口称为端口(PORT)(3)端口的地址(4)数据传送的方式:1)无条件传送2)查询传送3)中断传送(5)中断系统

1)用途:数据传送、故障紧急处理、人机交互

2)特点:

3)中断的过程

4)中断的优先级5)CPU对中断的响应后的自动执行工作第2章MCS-51硬件结构MCS-51的主要功能(1)主要功能参考P39

(2)内部结构框图参考P40外部引脚说明(1)工作电源:VCC、VSS(2)复位信号/后备电源输入端:RST/VPD

输入10ms以上高电平脉冲,单片机复位。

VPD使用后备电源,可实现掉电保护。复位方法: 1)上电复位 2)外部信号复位单片机RSTK+5V200Ω1K30μF(3)外接晶体振荡器:XTAL1,XTAL2

晶体振荡器频率范围要求在1.2MHz~12MHz之间。(4)I/O端口功能:4个8位并行I/O端口P0~P3

XTAL1

单片机

XTAL2(5)控制线:

ALE:访问外部存储器时,地址锁存允许信号端

PSEN:外部程序存储器读选通信号端

EA/VPP:程序存储器选择信号端/编程电源输入端微处理器(1)运算器

ALU(算术逻辑单元)

A(累加器)

PSW(程序状态字或状态寄存器F)B(B寄存器)(2)控制器(3)振荡器(频率中:K=103,M=106)(4)CPU时序(参见P45图2-5)

时钟周期(振荡器2分频)

机器周期(6个时钟周期)指令周期(一条指令所需的机器周期数)

X字节Y周期指令:表示这个指令占用ROM的长度是X字节;所耗执行时间是Y个机器周期。

1s=103ms=106us=109ns存储器MCS-51的程序与数据分为两个独立存储器逻辑空间,分开编址。(称为哈佛结构)51子系列和52子系列的存储器容量区别:51子系列:4K的ROM

128字节的用户RAM+128字节的SFR(特殊功能寄存器)52子系列:8K的ROM

256字节的用户RAM+128字节的SFR(特殊功能寄存器)

用户RAM:其存放内容的意义可由用户自己定义。SFR(特殊功能寄存器):存放内容有特殊意义,参见P50表2-7。程序存储器1、片内程序存储器4K或8K。2、程序存储器扩展后最大的寻址空间:64K。(因为PC是16位的计数器,最大可指向的地址是216=64K)3、外部电路让EA引角为高电平时,复位后先执行片内ROM中的程序。地址超过0FFFH

或1FFFH后才去自动转去执行片外ROM的程序。(参考P46图2-6)外部电路让EA引角为低电平时,不管有无片内ROM,复位后都只执行片外的ROM内的程序。(参考P46图2-6)4、7个特殊地址单元地址:0000H:复位后PC=0000H,即:计算机系统复位后将从地址0000H处开始执行程序。

6个中断入口地址(或称:中断向量)参见P47

表2-45、ROM除了可以存放程序,还可以用来存储程序中用到的常量或常量表格。数据存储器1、51子系列的片内数据存储器具有

128字节的用户RAM+128字节的SFR

它们的地址不重叠。(参见P46图2-6)2、52子系列的片内数据存储器具有

256字节的用户RAM+128字节的SFR

它们的部分地址重叠。(参见P47图2-7)对重叠部分地址的访问由于使用的指令不同,不会引起混乱。对SFR的访问使用直接寻址:例如:MOVA,80H(P0)

将地址为80H的P0端口内容送入A。对与SFR地址重叠的用户RAM的访问使用间接寻址的方式:例如:MOVR1,#80H

MOVA,@R1

将地址为80H的用户RAM的内容送入A。3、数据存储器扩展后最大的寻址空间:64K。(因为数据指针积存器DPTR是16位,最大可指向的地址是216=64K)

访问片内的RAM使用MOV指令;访问片外的RAM使用MOVX指令;

访问ROM中的常量和常量表格使用MOVC指令。4、片内数据存储器(1)工作寄存器地址:00H~1FH,32个字节。分为4组,每组8个字节,分别为:R0,……,R7。

任一时刻只有一组工作寄存器工作,可通过PSW

中的RS0、RS1选择当前工作的寄存器组。(2)位寻址区地址:20H~2FH,16个字节。其中每一位都有各自的“位地址”,如图2-8。在位寻址指令中使用。如:

SETB07H;

将RAM20H单元的D7位置1,而该单元其它位不变。常用于存放逻辑型变量。(3)数据缓冲区地址:30H~7FH,80个字节。其用途完全有编程人员决定。由于工作寄存器区、位寻址区和数据缓冲区统一编址,因此工作寄存器、位寻址单元也可以当成数据缓冲单元一样使用。例如:MOVA,30H;;将数据缓冲区30H单元的内容放入A。MOVA,20H;

;将位寻址区20H单元的内容放入A。MOVA,00H;

;将工作寄存器区00H单元的内容放入A。(4)堆栈存放用户RAM中有一部分区域可用做堆栈。但堆栈的栈底地址和大小并不固定。SFR中的SP用于存放栈顶的地址。称为栈顶指针。单片机复位后,SP默认为07H,将从08H单元开始存放堆栈信息。复位后初始化程序中可以将SP设置为2FH之后,以避免和工作寄存器冲突。(5)特殊功能寄存器SFR专门用于控制并行、串行I/O,定时器/计数器,中断等功能模块,不能移做它用。与用户RAM统一编址,既可以直接寻址,也可位寻址。

MOV8AH,A;将A的内容放入TL0中。

SETB8CH;将TR0置1。单片机能够控制外部设备(电机的开关、速度等;电磁阀、液压阀),或者将外界的信息(速度,压力)采集单片机内。这些功能除了需要有I/O接口电路,还依赖于单片机内部的一些功能模块。例如:使用并行I/O口显示两位BCD编码的数字;

串行口完成与其它设备之间的通讯;定时器/计数器对风扇、洗衣机的定时;中断响应紧急事故。端口P0RXD(10)TXD(11)并行I/O口、串行口、定时器/计数器、中断功能的使用实际上就是在程序中使用各种指令对各自对应的SFR进行操作。例如:

MOVP0,#01101000B;让上图中的数码管显示“68”;

MOVSBUF,A;将A中的内容通过串口向外发送;

MOVTL0,#55HMOVTH0,#0AAH;设定定时器0的时长

SETBTR0;定时器0开始计时外部设备可以通过并行I/O口、串行口、定时器/计数器、中断等功能由SFR来控制;用户RAM可以由编程人员决定存放用户自己的变量;控制程序实际上就是如何运用各种指令操作各种SFR和用户RAM以实现各种控制功能。第3章指令系统寻址方式1、立即寻址以常数(立即数)作为操作数直接跟在操作码的后边,不需要存储器存取。如:MOVA,#30H;直接将数30H放入A中。注意:在指令中为区别地址和立即数,应在立即数前用“#”标出。2、寄存器寻址寻址某个工作寄存器,从该寄存器中读取或存放操作数,以完成指令规定的操作。例如:ADDA,R2;从R2中读取操作数,和A相加后将结果存入A3、寄存器间接寻址定义:参见P80例如:MOV40H,#20H;将数20H放入RAM的40H单元

MOVR1,#40H

;将数40H放入R1

MOVA,@R1

;以R1存放的数40H为地址,将40H地址单元中的数20H放入A。注意:只有R0和R1可以间接寻址;且MOV用于访问片内RAM,MOVX访问片外RAM。4、直接寻址指令中直接给出操作数所在的存储单元地址,以供寻址取数或存放。对于51子系列,片内的128字节的用户RAM+128字节的SFR都是可以直接寻址的。对于52子系列,片内的前128字节的用户RAM(00H~7FH)+128字节的SFR都是可以直接寻址的。后128字节的用户RAM(80H~0FFH)只有寄存器间接寻址才可访问。5、基址寄存器+变址寄存器间接寻址以PC指针或DPTR作为基地址寄存器,累加器A作为变址寄存器,把它们的内容之和作为程序存储器的地址,对这个地址访问。这种寻址方式用于访问程序存储器。可方便的用于列表的查询。

例如若访问程序存储器单元0403H地址中的内容:

MOVDPL,#00H;MOVDPH,#04H;MOVA,#03H;MOVCA,@A+DPTR6、相对寻址专门用于程序转移指令中。用法请参见“程序转移指令”章节数据传送类指令这类指令用于在存储单元间传送数据,有29条。是数量最多,也是使用最频繁的一类指令。

(1)以累加器为一方(2)不以累加器为一方(3)用立即数置数(4)访问片外RAM(5)基址寄存器+变址寄存器间接寻址(6)交换指令(7)进出栈指令各指令所占用的ROM空间和指令周期参见P87表3-1算术操作指令进行算术运算操作,共24条。需要注意这累指令与PSW中各标志位之间的相互影响。C位:判断两操作数做无符加/减法运算时是存在进位/借位(即结果溢出>256或<0)。OV位:判断两操作数做有符加/减法运算时是存在结果溢出>127或<-128逻辑操作指令程序转移类指令位操作类指令汇编程序的格式和伪指令格式:标号:操作码操作数1,操作数2;注解伪指令:

ORGENDDBDWDSbit第2章并行输入输出口(I/O)MCS-51有32根输入/输出线,组成4个8位并行输入输出接口,分别称为P0,P1,P2,P3。既可以并行8位输入输出,也可按位使用,即:每根线都可以独立做输入/输出1、P1口(1)结构如图P59图2-15(2)功能只能作为通用输入/输出口输入、输出、端口操作3种工作方式。例如:MOVP1,#data;输出方式

MOVA,P1;输入方式

ANLP1,A;端口操作

先读后写注意:用做输入前,必须先用输出指令置Q=1,使V1截止。所以P1口称为准双向接口。单片机复位后,P1口状态为高电平,可直接用于输入。端口操作时,读的是端口锁存器Q端的数据,而非直接读端口。(3)负载能力做输出时,可以驱动4个TTL负载,做输入时,由于有内部上拉电阻,所以无须外部接上拉电阻P1.1,P1.0具有第二功能:计数/定时器T2的脉冲输入端。2、P2口用途:通用I/O接口时,使用和P1口相同。高8位地址总线。高8位地址总线:在访问片外ROM或RAM时,提供高8位地址。即:片外RAM时,DPTR的高字节;片外ROM时,PC的高字节。

P0口提供低8位地址。3、P3口用途:通用I/O接口时,使用和P1口相同。

第二功能引脚:RXD,TXD,INT等时,信号直接进入芯片内部。4、P0口(1)结构如图P61图2-18没有内部上拉电阻(2)功能作为通用输入/输出口,需要外接上拉电阻。

在访问片外ROM或RAM时,作为地址/数据分时复用总线。

注意:

(1)作为地址/数据分时复用总线时,信号经V1,V2送到引脚。

V1导通、V2截止为低电平;

V1截止、V2导通为高电平。(2)通用输入/输出口时,V2一直截止,由于没有内部上拉电阻,所以必须外加上拉电阻。定时器/计数器51子系列有2个定时器(T)/计数器(C);52子系列有3个定时器(T)/计数器(C);分别编号称为T0、T1、T2。做定时器时,对内部机器周期脉冲计数;做计数器时,分别对P3.4(T0)、P3.5(T1)、P1.0(T2)引脚上外部输入的脉冲进行计数。+1计数器溢出中断脉冲控制开关控制寄存器(控制字)TMOD(地址:89H)T1T01)功能选择位C/T:=0,定时功能,计数内部机器周期脉冲;=1,计数功能,计数引脚T0(T1)输入的负脉冲。2)方式选择位M1、M0:3)门控方式选择位GATE

计数器T0(T1)是否工作受引脚INT0(INT1)控制。

确定定时器工作方式指令:

MOVTMOD,#方式字例:设T0用方式2非门控定时,T1用方式1门控计数。

MOVTMOD,#0D2H;11010010B方式0:13位定时/计数器。THx8位和TLx低5位组成13位的加1计数器。方式1:16位定时/计数器。THx的8位和TLx的8位组成16位加1计数器。最大计数脉冲个数:1~65536(216)定时时长范围:(晶振12MHz即T=1s):1s~65536s=65.54ms方式2:自动重载,8位加1定时器/计数器;用于需要重复定时和计数的场合。

THx存放自动重载的8位;TLx为8位加1计数器,最大计数脉冲个数:256(28)定时时长范围:(晶振12MHz时T=1s):256s

方式3:

T0分成2个独立的8位定时器:

TL0定时器/计数器和TH0定时器

TL0占用T0控制位:C/T,TR0,GATE,TF0;TH0占用T1控制位:TR1,TF1。

此时,T1不能使用方式3工作;并且由于TR1和TF1被TH0定时器占用,所以不能申请溢出中断,只能用于串口的波特率发生器。控制寄存器(控制字)TCON(地址:89H)TRx:TRx=0时停止计数器/定时器工作;

TRx=1时计数器/定时器工作;由软件(程序)置1或清0。TFx:计数器/定时器溢出时由硬件自动置1;若中断允许,申请Tx的溢出中断,中断响应后硬件自动将TFx清0。若中断不允许,TFx可以用软件查询,也可用软件清0

计数功能时:

X=2n-计数值n:8/13/16

定时功能:

X=2n-t/T=2n–t*晶振频率/12t:定时时长(秒)T:机器周期 =12/晶振频率如:晶振为12MHz时,T=12/12MHz=12/(12×106)计数器THx,TLx初始值X的确定:例:由P1.0输出方波信号,周期为2ms,

设晶振频率为12MHz。2ms解:每隔1ms改变一次P1.0的输出状态,即形成方波,用T0非门控方式1定时。

计数器初始值:X=216-t/T=216–(1/1000)/10-6=65536-1000=64536=FC18H

ORG 0000H AJMP MAIN ORG 000BH

;T0中断硬件入口地址

AJMP PT0INT

;跳到中断服务程序

ORG 0030H

MAIN: MOV TMOD,#01H;中断方式

MOV TL0,#18H;计数初值

MOV TH0,#0FCH SETB EA;开放总中断

SETB ET0

;开放T0中断

SETB TR0;启动定时器

HERE: SJMP HERE;等待中断,相当于执行;其它任务

PT0INT:MOV TL0,#18H

;中断服务程序;置初值

MOV TH0,#0FCH CPL P1.0

;取反,产生方波

RETI;中断返回例

P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为12MHz。

长定时方法:增加一个软件计数器(如R7),记录中断次数,计满n个中断为1秒。ORG 0000H AJMP MAINORG 001BH

AJMP T1INTORG 0030HMAIN:MOVR7,#00H

MOVTMOD,#10H MOVTL1,#0F0H MOVTH1,#0D8HSETB EA SETB ET1 SETB TR1HERE:SJMPHERET1INT:MOVTL1,#0F0H MOVTH1,#0D8H INCR7CJNER7,#10,PENDMOVR7,#00HCPLP1.7PEND:RETI中断系统1、中断概念日常生活中的中断与计算机中断的比较:

某人看书 执行主程序 日常事务电话铃响 中断信号如INT=0

中断请求暂停看书

暂停执行主程序中断响应书中作记号当前PC入栈 保护断点电话谈话 执行中断程序 中断服务继续看书 返回主程序 中断返回日常事务程序中断服务程序2、中断的定义所谓“中断”,是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件,处理完毕后,CPU返回原程序的过程。3、与子程序的区别子程序是在预先安排好执行顺序中调用。;中断是在随机发生紧急的事件时调用。中断申请标志位:

TF1、TF0、IE1、IE0、RI、TI

用于标示各中断源当前是否请求中断=1,有中断请求;=0,无中断请求。CPU响应中断后,该中断标志自动清零。TI,RI标志必须软件清零。

外部中断触发方式选择位:

TCON中:IT0、IT1位

=1:负边沿触发中断请求;=0:低电平触发中断请求。中断允许寄存器:IE(地址:0A8H)=1;允许中断;=0;不允许中断。例:允许CPU响应INT0的中断请求

SETBEX0 SETBEA 中断优先寄存器:IP(地址:0B8H)MCS51只有2级优先级:=1为高优先级;=0为低优先级。同一优先级别按内部查询顺序排列优先级:高INT0、T0、INT1、T1、S、T2

低。MCS-51中断系统内部结构各中断源中断服务程序的入口地址某个中断请求被响应后,硬件将执行下列操作:(1)保存断点,即:PC入栈(2)清相应的中断申请标志(3)相应的中断入口地址送入PC现场保护工作应该在各中断程序中完成。中断程序的退出

必须使用RETI指令退出中断程序。对于串口中断,RI、TI必须在中断程序中清零。退出中断前要进行现场恢复。对于电平触发的外部中断,由于CPU没有对

INT0,INT1引脚的控制功能,为了防止重复进入外部中断程序,需要外部电路撤消外部中断请求。(例如:P73图2-29)要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。解:INT0输入按键信号,P1.0输出改变LED状态。跳变触发:每次跳变引起一次中断请求

ORG 0000H AJMPMAIN ORG 0003H ;中断入口

AJMP PINT0 ORG 0100H ;主程序

MAIN:SETB EA ;开总允许开关

SETB EX0 ;开INT0中断

SETB IT0;负跳变触发

Here:SJMP Here;自身循环

ORG 0200H ;中断服务程序

PINT0:CPLP1.0 ;改变LED RETI ;返回主程序单片机INT0P1.01+5V1.软件等待按键释放。2.硬件清除中断信号。电平触发:避免一次按键引起多次中断响应。单片机INT0P1.01+5V

ORG 0000H AJMPMAIN ORG 0003H ;中断入口

AJMP PINT0 ORG 0100H ;主程序

MAIN:SETB EA ;开总允许开关

SETB EX0 ;开INT0中断

CLR IT0;负跳变触发

Here:SJMP Here;自身循环

ORG 0200H ;中断服务程序

PINT0:CPLP1.0 ;改变LED

WAIT:JNBP3.2,WAIT;等按键释放

RETI ;返回主程序串行输入/输出接口基本概念:并行通信/串行通信串行通信中的:单工,双工,半双工串行通信中的:异步通讯方式,参见P63图2-20同步通讯方式,参见P63图2-21

波特率(BaudRate)异步通讯双方的两项约定(1)字符格式规定(一帧):起始位、数据位,校验位、停止位。(2)波特率(位/秒)对传送速率的规定例:要求每秒传送120个字符,每帧为10位解:Baud=120*10=1200bps

MCS-51串行I/O接口的功能:具有1个全双工串行接口,可同时进行发送和接收。串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)。

4种工作方式:参见P64表2-11方式0:移位寄存器工作方式用于并行I/O的扩展。方式1:8位通用异步接受/发送器用于双机通讯。方式2、3:9位通用异步接受/发送器用于多机通讯。串行接口控制1、数据缓冲器SBUF

发送SBUF和接收SBUF共用一个地址99H。

(1)发送SBUF存放待发送的8位数据,写入SBUF即自动启动发送。 发送指令: MOV SBUF,A(2)接收SBUF存放已接收成功的8位数据,供CPU读取。读。接收指令:MOVA,SBUF2、串行口控制/状态寄存器SCON(98H)SM0,SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:

发送中断标志,发送一帧结束,TI=1,必须软件清零RI:

接收中断标志,接收一帧结束,RI=1,必须软件清零3、节电控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。

SMOD=1,波特率加倍,

SMOD=0,则不加倍。1、方式0:同步移位寄存器方式。用于扩展并行I/O接口。(1)一帧8位,无起始位和停止位。(2)RXD:数据输入/输出端。

TXD:同步脉冲输出端,每个脉冲对应一个数据位。(3)固定波特率B=fosc/12

如:fosc=12MHz时,

Baud=1MHz,每位数据占1s。

(4)发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。

接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。串行接口的工作方式

发送时序写入SBUFRXD输出TXDTID0D1D2D3D4D5D6D7写REN=1RI=0RXD输入RI接收时序(a)(b)数据从RXD(P3.0)引脚串行输出,低位在先,高位在后;TXD(P3.1)引脚输出移位脉冲,其频率为foc/12;发送完毕后,中断标志位TI为1。如要发送数据,如下所示:

MOVSCON,#00H;串行口方式0

MOVSBUF,A;将数据送出

JNBTI,$;等待数据发送完毕移位寄存器方式举例2、方式1:8位数据异步通讯方式。(1)一帧10位:1个起始位(0)、8位数据位、1个停止位(1)。(2)RXD:接收数据端。TXD:发送数据端。(3)波特率:用T1作为波特率发生器,

B=(2SMOD/32)×T1溢出率。(4)发送:写入SBUF后立即自动启动发送,一帧发送结束,硬件将TI=1。

接收:REN=1,允许接收。接收完一帧,若RI=0,将接收数据装入SBUF,

并使RI=1;

否则丢弃接收数据,不置位RI。一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。(2)RXD:接收数据端,TXD:发送数据端。(3)波特率:方式2:B=(2SMOD/64)×fosc。

方式3:B=(2SMOD/32)×T1溢出率。2、方式1:9位数据异步通讯方式。(4)发送:先装入TB8,写入SBUF并启动发送,发送结束,硬件自动将TI=1。(5)接收:若REN=1,则允许接收。接收完一帧,若RI=0且第9位为1,将接收数据装入接收SBUF,第9位装入RB8,使

RI=1;若RI=1则丢弃接收数据。可变波特率时,用T1作波特率发生器。 波特率B=(2SMOD/32)×T1溢出率溢出时间:t=(2n-X)T=(2n-X)×12/fosc

溢出率=1/t=fosc/[12×(2n-X)] T:机器周期;X:定时器/计数器存储器初始值。

波特率B=(2SMOD/32)×fosc/[12×(28-X)]

T1做波特率发生器时,一般选择工作方式2(自动重载的8位定时器)。T1选方式1用于低波特率,需考虑T1重装时间对溢出时间的影响。串行口初始化编程格式:

MOVSCON,#控制状态字;写方式字且TI=RI=0(MOVPCON,#80H) ;波特率加倍(

MOVTMOD,#20H) ;T1作波特率发生器(

MOVTH1,#X);选定波特率(

MOVTL1,#X)(SETBTR1)

;T1开始计时(SETBEA)

;开串行口中断(

SETBES)发送程序(查询方式):;待发送的数据起始地址存放在R0中。SEND: MOVA,@R0 ;取数据

MOV SBUF,A ;发送一个字符WAIT: JBC TI,NEXT ;等待发送结束

SJMP WAITNEXT: INC R0 ;准备下一次发送

SJMP SEND

ORG 0023H

;串行口中断入口

AJMPSINTMAIN:

;初始化编程……TRAM: MOV A,@R0

;取数据

MOV SBUF,A

;发送第一个字符……;执行其它任务

SINT:CLRTI ;中断服务程序

INC R0 MOV A,@R0 ;取数据

MOV SBUF,A ;发送下一个字符

RETI发送程序中断方式:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。查询方式:

WAIT: JBC RI,NEXT ;查询等待

SJMP WAITNEXT: MOV A,SBUF ;读取接收数据

MOV @R0,A ;保存数据

INC R0 ;准备下一次接收

SJMP WAIT接收程序:异步通讯程序举例

1.发送程序:将片内RAM50H起始单元的16个数由串

行口发送。要求发送波特率为系统时钟

的32分频,并进行奇偶校验。MAIN:MOV SCON,#80H;串行口初始化

MOV PCON,#80H;波特率

SETB EA SETB ES ;开串行口中断

MOV R0,#50H ;设数据指针

MOV R7,#10H ;数据长度LOOP: MOV A,@R0 ;取一个字符

MOV C,P ;加奇偶校验

MOV TB8,C MOV SBUF,A ;启动一次发送HERE: SJMP HERE ;CPU执行其它任务

ORG 0023H ;串行口中断入口 AJMP TRANI

TRANI: PUSH A ;保护现场

PUSH PSW CLR TI ;清发送结束标志

DJNZ R7,NEXT ;是否发送完?

CLR ES ;发送完,关闭串行口中断 SJMP TEND NEXT: INC R0 ;未发送完,修改指针

MOV A,@R0 ;取下一个字符

MOV C,P ;加奇偶校验

MOV TB8,C MOV SBUF,A ;发送一个字符

POP PSW ;恢复现场

POP A TEND: RETI ;中断返回2.接收程序:串行输入16个字符,存入片内RAM的50H起

始单元,串行口波特率为2400(设晶振为11.0592MHz)。RECS: MOV SCON,#50H;串行口方式1允许接收 MOV TMOD,#20H;T1方式2定时 MOV TL1,#0F4H ;写入T1时间常数 MOV TH1,#0F4H SETBTR1 ;启动T1 MOV R0,#50H ;设数据指针 MOV R7,#10H ;接收数据长度 WAIT: JBC RI,NEXT ;等待串行口接收 SJMPWAIT NEXT: MOV A,SBUF ;读取接收字符 MOV @R0,A ;保存一个字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论