收藏 分销(赏)

单片机课件-C语言.ppt

上传人:仙人****88 文档编号:14194043 上传时间:2026-07-09 格式:PPT 页数:81 大小:2.40MB 下载积分:10 金币
下载 相关
单片机课件-C语言.ppt_第1页
第1页 / 共81页
单片机课件-C语言.ppt_第2页
第2页 / 共81页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机原理,实验一:程序设计,1,、实验目的,(,1,)学习,WAVE,仿真软件的编辑、编译、排错、调试方法,(,2,)学习单步、断点、自动跟综,/,单步、全速执行等各种方法,(,3,)学习汇编语言的编程方法,2,、实验步骤,(,1,)运行,WAVE,软件(点击,WAVE,图标,)进入编辑窗口,(,2,)设置环境,点击仿真器,仿真器设置,选,E6000/L,选,POD-8X5XP,选,8752,设晶体频率为:,12000000,使用伟福软件模拟器,好,好,再点击仿真器,仿真器设置,语言,设好编译器路径,C:comp51c51,Keil,C(V4,或更低),英特尔,PL/M51,(点击),好,好,(,3,)输入源文件,选文件,/,新建文件,/,输入源程序,保存文件后:,点击:项目编译或,F9,生成:文件名,.HEX,可执行文件,单步跟踪:,按,F8,单步跟踪,观察:(,1,)数据窗口,点数据窗口边的,图标,可选择:,DATA ;,内部数据窗口,CODE,XDATA;,外部数据窗口,PDATA ;,外设数据窗口,BIT,(,2,)点击,CPU,窗口,弹出:,SFR,project watch,此时,PDATA,中的数据为全,1,。即,FF,FF,FF,.,跟踪前先要单步执行一条语句后,再将数据添加到数据区的响应地址中。,每按一步,F8,则观察以下几个窗口:,SFR,PDATA,DATA,project watch,2,、仿真调试软件,WAVE,仿真调试软件,WAVE(,或,Keil,),用来完成对用户编制的,汇编源,程序或,C,语言,应用程序进行编辑、编译、软件仿真调试,并生成,.HEX,目标文件以供烧写。,先进行仿真器设置,对,89S52,单片机选,8752CPU,型号,,选择使用,WAVE,软件模拟器,打开文件,出现文件编辑窗口,编译,编译(,C,语言和汇编语言使用同一按钮),信息窗口,打开信息窗口,显示生成了。,HEX,文件,打开,DATA,窗口,观察,内部,RAM,根据需要,打开欲观察的窗口,选择执行方法,观察窗口数据的变化,实验二:并行接口实验,1,、实验目的,(,1,)熟悉,51,单片机并行口的输入方式、输出方式的编程,(,2,),熟悉,51,单片机并行口应用编程软件仿真调试方法,(,3,)学会在线烧写单片机程序(在线编程,ISP,)方法,1.ISP,单片机实验板介绍,所谓可在线编程(,ISP,),就是单片机在实验板上进行擦除和编程(烧写),而不是象传统方式那样,从实验板上拔下单片机,插到编程器上擦除和烧写,烧写完毕,再从编程器上拔下单片机,插到实验板上运行,这样不但费时费工,而且容易损坏芯片。,可在线编程单片机多功能实验板上有在线编程电路,实验者可通过带锁按压开关方便地实现系统编程状态和程序运行状态之间的转换,带锁按压开关按下,运行,ISP,编程软件进行编程,将目标程序写入单片机内,FLASH,程序存储器,并且可以反复地擦除和编程。再次按带锁按压开关,开关弹起,直接观察编程后的运行结果,.,可在线编程单片机多功能实验板(以下简称实验板)核心为增强型,51,单片机,89S52,,该单片机和,8051/52,、,89C51/52,完全兼容,内含,256B RAM 8KB FLASH EEPROM,、,3,个,16,位定,/,计数器,并有看门狗。,实验板上有多个短接块,通过改变跳线的位置改变接口的设计安排。同时也留由,P0,、,P1,、,P2,的,24,插孔和,P3,的,RD,和,WR,插孔供用户做更深入开发时接到其它面包板或目标板上。,:,1,.,晶,振,频,率,为,1,2,M,H,z,各,I,/,O,口,线,的,安,排,如,下,:,P,0,开,关,输,入,P,2,段,选,I,N,T,0,中,断,P,3,.,2,数,码,管,位,选,P,1,.,0,P,1,.,5,P,1,.,6,P,1,.,7,串,行,I,C,E,E,P,R,O,M,I,S,P,I,串,行,D,/,A,P,3,.,3,P,3,.,4,P,3,.,5,(,改,变,跳,线,),P,3,.,0,P,3,.,1,U,A,R,T,串,行,口,P,1,.,4,P,1,.,5,P,2,.,7,(,改,变,跳,线,),S,P,I,串,行,A,/,D,图,中,为,带,锁,按,压,开,关,,,按,下,或,弹,起,分,别,接,通,不,同,的,点,。,3,.,不,8,9,C,5,1,/,5,2,能,在,线,编,程,,,需,另,用,专,用,编,程,器,编,程,,,但,实,验,内,容,不,变,。,2,.,图,中,为,短,接,块,,,改,变,短,接,块,位,置,可,改,变,相,应,I,/,O,口,线,的,安,排,。,4,.,T,0,计,数,脉,冲,P,3,.,4,44,矩阵键盘接在,P0,口,当拨动开关,K0-K7,全置于,OFF,时,可对矩阵键盘进行编程,按面板印的字,各字对应的键编码如图所示,键值各用户也可以自行定义,如键,C D E F,分别定义为,等,实验板就可以设计一个计算器。也可以把按键定义成具有两个音阶的琴键,利用板上的扬声器,实验板可以设计为一个电子琴。,4*4,键盘,89S52,电源插座,扬声器,中断,请求,D/A,A/D,计数,脉冲,EEPROM,用户并行口预留焊孔、插针,通过串行线连另一实验板或,PC,电脑,作双机串行通信,通过下载线连电,脑完成在线编程,执行,/,编程,选择,跳线,用户扩展板,拨动开关,K1-K8,模拟电压调节,下载线,串行通信线,5V,直流电源,可在线编程(,ISP,)单片机多功能实验板附件,44,键盘,1616 LED,点阵显示屏,162 LCD,显示器,连接线,选购附件有,:,1616 LED,点阵显示屏,162 LCD,显示器,44,键盘(第一版的实验板上没有键盘的可选购),因为附件和,ISP,实验板两边都有插针,所以通过连接线插能方便地将这些附件方便地连到连到,ISP,实验板上。,2.,多功能实验板涉及到的软件介绍,单片机可在线编程多功能实验板只是给你创造了硬件平台,没有软件是无济于事的,.,它涉及的软件是:,1,在线编程软件,Microcontroller ISP Software,(简称,ISP,软件),完成在线编程(烧录)功能,2,编辑、编译、跟踪调试集成软件包,WAVE,(自带汇编器)或其他调试集成软件包(如,Keil,),完成对用户程序编辑、汇编(或编译)、软件仿真调试,并生成,.HEX,目标文件以供烧写。,3,用户自行用,汇编,或,C,语言,编制的应用程序。,4,随板综合测试的机器码(,TESTALL.HEX,)。,1,、在线编程软件,Atmel Microcontroller ISP Soft,选择器件,初始化成功,打开文件后选择自动编程,编程进行,红线闪动,*,Auto,Programing,Device*,Erasing the chip.,Success,Writing to the chip.,加密选择,每次重写时先要初始化(点击下图红圈),如果初始化不成功,会出现下面画面,此时检查下载线是否接好,,执行,/,编程,按键是否按下。,烧写程序:,进入,Micricont,ISP software,软件,点击图标:,AIMEL,(1),选,options/select port,选,LPT1 /OK,(2),选,options/select Device,选,AT89/AT89S52/,Byte Mode,注意:在做这项选择时要将,EXE/SP,按下,然后开始烧写程序。,操作过程:,(,1,)选,FILE/,打开,XXXX.HEX,文件,(,2,)点击 图标(初始化),/,确定,(,3,)点击 图标(开始烧写程序),/OK,/OK,烧写完后,将按键按起来,开始执行程序,.,A,归纳如下:,P0,口为输入口,输入开关的状态,P1,为输出口,控制,6,个数码管的哪一个点亮(位控),P2,为输出口,控制数码管的哪一段点亮(段控),P,0.0,P,0.1,P,0.2,P,0.3,P,0.4,P,0.5,P,0.6,P,0.7,K,0,K,1,K,2,K,3,K,4,K,5,K,6,K,7,P,1.0,P,1.1,P,1.2,P,1.3,P,1.4,P,1.5,哪一位亮,哪一位置,1,P,2.6,P,2.5,P,2.4,P,2.3,P,2.2,P,2.1,P,2.0,g f,e,d c b a,a,b,c,e,f,d,g,哪一段亮,哪一段置,1,P,2.6,P,2.5,P,2.4,P,2.3,P,2.2,P,2.1,P,2.0,g f,e,d c b a,1 0 0,,,1 1 1 1,4 F,例:显示:,34FH,a,b,c,e,f,d,g,P,2.6,P,2.5,P,2.4,P,2.3,P,2.2,P,2.1,P,2.0,g f,e,d c b a,1 1 0,,,1 1 0 1,6 D,a,b,c,e,f,d,g,例:显示:,56DH,实验二、并行接口实验,例程,1,:,在,WAVE,环境下,先将程序输入、存盘、编译、生成,.HEX,文件后方可烧写。,输入程序:,1.C,语言,#include ,main(),P1=0 x01;,修改,P1,的赋值分别为:,0X02,0X08,0X20,0X03,0X07,0X15,0X2a,并烧进单片机,观察实验现象。,#include ,main(),P2=0 x01;,修改,P2,的赋值分别为:,0X02,0X08,0X20,0X03,0X07,0X56,0X6d,并烧进单片机,观察实验现象。,在,WAVE,环境下,先将程序输入、存盘、编译、生成,.HEX,文件后方可烧写。,输入程序:,#include ,main(),P1=0 x01;,P2=0 x01;,修改,P1,的赋值分别为:,0X02,0X08,0X20,0X03,0X07,0X15,0X2a,并烧进单片机,观察实验现象。,修改,P2,的赋值分别为:,0X02,0X08,0X20,0X03,0X07,0X56,0X6d,并烧进单片机,观察实验现象。,实验程序,:,一个数码管是由,8,个发光二极管,LED,组成的,有下列程序,#include,void,delay(unsigned,int,t),unsigned,int,i;,for(i,=0;i,t;i,+);,main(),char k;,P1=0 x01;,for(k,=0;k=5;k+),delay(20000);,P1=1;,存盘:文件名,.ASM,预分析程序的执行过程和执行结果,第二次实验内容,自编程序并在板上执行通过。,P256,(1)(2),第三次实验内容,自编程序并在板上执行通过。,P256,(3)(4),选做,(5),。初始化,。设外循环次数,。,设内循环次数,左移一位,送,P1,调延时子程序,右移一位,送,P1,调延时子程序,判内循环次数是否为,0,?,左移一位,左移一位,判外循环次数是否为,0,?,恢复初始位,无条件跳转到开始,并口练习(,2.1),方法一:左移加,1,,右移减,1,方法二:查表法,。,并口练习(,2.2),+,5,V,I,N,T,0,(P3.2),T,0,(,P3.4),7,4,L,S,0,0,1,K,1,K,J,5,W,2,计,数,中,断,T,0,&,&,中断信号产生电路,实验四、中断实验,1,、实验目的,了解中断的产生及响应过程,掌握中断程序的编制。,2.,实验连线,3,、设计原理,1,)中断源,基本型,8XX51,有,5,个中断源,增强型,8XX52,有,6,个中断源,它们在程序存储器中有固定的中断服务程序入口地址(称为矢量地址),当,CPU,响应中断时,硬件自动形成各自的入口地址,由此进入中断服务程序,从而实现正确的转移。,0023H,串行通信完成一帧数据发送或接收引起中断,串行口中断,TI/RI,002BH,定时器,2,中断(,TF2,或,T2EX,)信号,定时器,2,中断,T,2,001BH,定时器,/,计数器,1,计数回零溢出,定时器,1,中断,T,1,000BH,定时器,/,计数器,0,计数回零溢出,定时器,0,中断,T,0,0013H,P3.3,引脚的低电平或下降沿信号,外部中断,1,INT,1,0003H,P3.2,引脚的低电平或下降沿信号,外部中断,0,INT,0,中断服务程序入口地址,中断引起原因,名称,中断源符号,8XX51/8XX52,的中断源,2,)中断控制的有关寄存器,用户对中断的管理体现在两个方面:,(,1,)中断能否进行,即对构成中断的双方进行控制,这就是是否允许中断源发出中断和是否允许,CPU,响应中断,只有双方都被允许,中断才能进行。,这是通过对特殊功能寄存器,IE,进行管理的。,(,2,)当有多个中断源有中断请求时,用户控制,CPU,按照自己的需要安排响应次序。,用户对中断的这种管理是通过对特殊功能寄存器,IP,的设置完成的。,中断的允许和禁止,中断控制寄存器,IE,8XX51/52,的一个中断源对应,IE,寄存器的一位,如果允许该中断源则该位置“,1”,,禁止该中断源中断则该位置“,0”,。此外还有一个总控位,格式如下:,INT,0,允,/,禁,T,0,允,/,禁,INT,1,允,/,禁,T,1,允,/,禁,串行口,允,/,禁,T,2,允,/,禁,不用,中断总控,允,/,禁,EX,0,ET,0,EX,1,ET,1,ES,ET,2,_,EA,说明:,EA=1 CPU,开中断;,EX0=1,允许,INT0,中断,EA=0 CPU,关中断;,EX0=0,禁止,INT0,中断,ET,0,=1,允许,T0,中断,ET,0,=0,禁止,T0,中断,中断请求标志及外部中断方式选择寄存器,TCON,寄存器,TCON,的格式如下:,INT,0,方式,下沿,/,低电平,INT,0,有,/,无,INT,1,下沿,/,低电平,INT,1,方式,有,/,无,T,0,请求,启,/,停,T,0,请求,有,/,无,T,1,请求,启,/,停,T,1,请求,有,/,无,IT,0,IE,0,IT,1,IE,1,TR,0,TF,0,TR1,TF,1,说明:,(,1,),TF1,TF0,IE1,IE0,分别为中断源,T1,T0,INT1,INT0,的中断请求标志,若中断源有中断请求,该中断标志置,1,,无中断请求,该中断标志置,0,。,(,2,),IT0,和,IT1,为外中断,INT0,和,INT1,中断触发方式选择,若下降沿触发则,IT,相应位置,1,;若低电平触发,,IT,相应位置,0,。,说明:,(,3,),TR1,和,TR0,为定时器,T1,和,T0,工作启动和停止的控制位,与中断无关。,(,4,)串行口的中断标志在特殊功能寄存器,SCON,的,RI,和,TI,位。,3,)、中断响应过程,中断请求,中断响应,中断服务,中断返回,4,)中断实验内容,实验程序例,1,:,#include,In0v()interrupt 0 /*,中断服务*,/,P2=1;,main(),EA=1;/*,开中断*,/,EX0=1;/*,允许,INT0,中断*,/,IT0=1;/*,边缘触发中断*,/,P1=0 x04;/*,第三个数码管*,/,P2=0 x01;/*,亮一段*,/,while(1)/*,等待中断*,/,(,1,)分析该程序的功及实验现象,(,2,)将该程序烧进单片机并运行,观察执行的现象是否和估计,一致。,自编程序题,P257,(1)(2),选做:(,3,)(,4,),+,5,V,I,N,T,0,(P3.2),T,0,(,P3.4),7,4,L,S,0,0,1,K,1,K,J,5,W,2,计,数,中,断,T,0,&,&,计数脉冲产生电路,实验五:定时,/,计数器实验,1,、实验目的,了解定时,/,计数器的应用,掌握其应用编程方法。,2,、实验连线,3,、设计原理,8XX51,有两个,16,位的定时,/,计数器,T0,T1;,增强型,8XX52,有,3,个,16,位的定时,/,计数器,T0,T1,,,T2,,均是可变成定时,/,计数器。,8XX51,单片机的定时,/,计数器,T1,由寄存器,TH1,,,TL1,组成,定时,/,计数器,T0,由寄存器,TH0,,,TL,组成,它们均为,8,位寄存器,在特殊功能寄存器中占地址,08AH8DH,。它们用于存放定时或计数的初始值。,内部:有一个,8,位的方式寄存器,TMOD,有一个,8,位的控制寄存器,TCON,用于选择定时,/,计数器的工作。,定时,/,计数器实质上是一个加,1,计数器,它可以工作于定时方式,也可以工作于计数方式两种工作方式实际是对脉冲计数,只不过所计脉冲的来源不同。,定时,/,计数器,T0,的内部结构和控制信号如图所示,振荡器,TF0,TH0,TL0,1,1,&,12,T0,引脚,GATE,INT0,TR0,C/T=1,C/T=0,K,中断,S,(,1,)定时方式,C/T=0,开关,S,打向上,,计数器,TH0,TL0,的计数脉冲来自振荡器的,12,分频后的脉冲,即对系统的机器周期计数,当开关受控合上时,每过一个机器周期,计数器,TH0,TL0,加,1,,当计满预设的个数,,TH0,TL0,回零,置位定时,/,计数器溢出中断标志位,TF0(,或,TF1),产生溢出中断。,定时,/,计数器实质上是一个加,1,计数器,它可以工作于定时方式,也可以工作于计数方式两种工作方式实际是对脉冲计数,只不过所计脉冲的来源不同。,(,2,)计数方式,C/T=1,开关,S,打向下,,计数器,T0,T0,的计数脉冲分别来自于,T0,或,T1,上的外部脉冲,当开关受控合上时,计数器对此外部脉冲的下降沿进行加,1,计数,直到计满预定值回零,置位定时,/,计数器中断标志位,TF0(,或,TF1),产生溢出中断。,由于检测一个由“,1”,到“,0”,的跳变需要两个机器周期,前一个机器周期测出“,1”,后,后一个机器周期测出“,0”,,故计数脉冲的最高频率不得超过,fosc/24,。,定时,/,计数器的寄存器,(,1,)定时,/,计数器方式寄存器,TMOD,TMOD,寄存器格式如图所示:,方式选择,定时,/,计数,门控,开,/,关,方式选择,定时,/,计数,门控,开,/,关,M0,M1,C/T,GATE,M0,M1,C/T,GATE,T1,T0,说明:,GATE:,门控信号。,GATE=0,TR,X,=1,时即可启动定时,/,计数器工作,是一种自启动的方式;,GATE=1,TRX=1,,,INT,X,=1,时才可启动定时,/,计数器工作。是一种外启动的方式。,C/T:,定时、计数选择。,C/T=1,为计数方式;,C/T=0,为定时方式。,M,1,M,0,:,工作方式选择位,定时,/,计数器的,4,种工作方式由,M1M0,设定。,00,工作方式,0,(,13,位方式),01,工作方式,1,(,16,位方式),10,工作方式,2,(,8,位自动装入计数初值方式),11,工作方式,3,(,T0,为,2,个,8,位方式),(,2,)定时,/,计数器控制寄存器,TCOD,TCOD,寄存器格式如图所示:,INT,0,方式,下沿,/,低电平,INT,0,请求,有,/,无,INT,1,方式,下沿,/,低电平,INT,1,请求,有,/,无,T,0,工作,启,/,停,T,0,请求,有,/,无,T,1,工作,启,/,停,T,1,请求,有,/,无,IT,0,IE,0,IT,1,IE,1,TR,0,TF,0,TR1,TF,1,说明:,在,TCON,寄存器中,定时,/,计数器的控制仅用了其中的高,4,位,其意义如下:,TF1,:,T1,溢出中断请求标志。,TF1=1,T1,有溢出中断请求。,TF1=0,T1,无溢出中断请求。,TR1:T1,运行控制位。,TR1=1,启动,T1,工作。,TR1=0,停止,T1,工作。,TF0,:,T0,溢出中断请求标志。,TF0=1,T0,有溢出中断请求。,TF0=0,T0,无溢出中断请求。,TR0:T0,运行控制位。,TR0=1,启动,T0,工作。,TR0=0,停止,T0,工作。,定时,/,计数器的应用程序设计,1,、,定时,/,计数器的计数初值,C,的计算和装入,计数初值,C,的计算:,计算方式:,C=,模,-X,(其中,X,为要计的脉冲的个数),定时方式:,C=t/MC,补,=,模,-t/MC,其中:,t,为欲定时时间,MC,为,8XX51,的机器周期,,MC=12/f,0sc,当采用,12MHz,晶振时,,MC=1us,当采用,6MHz,晶振时,,MC=2us,(,1,)查询方式,ORG 0000H,.,NEXT:.,MOV TMOD,#06H,;,MOV TH1,#3CH,MOV TL1,#0B0H ;,定时,100ms,SETB TR0 ;,启动,T0,工作,As :JBC TF0,SS1 ;100MS,到,TF0=1,转,ss1,并请,TF0,SJMP AS ;,不到,100ms,继续查,TF0,.,GATE,C/T,M1,M0,GATE,C/T,M1,M0,0,1,1 0,(,2,)中断方式,ORG 0000H,AJMP MAIN ;,单片机,ORG 000BH,AJMP TV1,ORG 0030H,MAIN:,MOV TMOD,#06H,;,MOV TH1,#3CH,MOV TL1,#0B0H ;,定时,100ms,SETB EA,SETB ET0,SETB TR0 ;,启动,T0,工作,WAIT:SJMP WAIT,TV1:,MOV TH1,#3CH ;,MOV TL1,#0B0H,RETI,GATE,C/T,M1,M0,GATE,C/T,M1,M0,0,1,1 0,定时,/,计数器的应用程序设计,参看,P118,应用编程,参看,P119,例,7-1,自编程序题,P279 (1)(2),选做:(,3,)(,4,),实验六:定时,/,计数器实验(,2,),我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单,片,机某个口线的,“,高,”,电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制,“,高,”“,低,”,电平的持续时间,就能改变输出频率,从而改变音调。,实验程序:简易电子琴(图看书,259,页),原理:已知各调的频率就可知其周期,每过半个周期,,P1.0,取反,送到,P1.0,接的喇叭上,喇叭即发出该音调的声音。设计拨动按键,K0K7,分别发出,1i8,个音调。,按键,Kn,1,2,3,4,5,6,7,8,音调,Do,Re,Mi,Fa,So,La,Xi,Dou,频率,(Hz),262,294,330,349,392,440,494,523,计数值,(H,),F88C,F95C,FA15,FA68,FB05,FB90,FC0C,FC44,音调的频率、对应的按键和计数值,ORG 0000H,SJMP MAINI,ORG 001BH,LJMP TINT1,MAINI:MOV P1,#04H,MOV TMOD,#10H,SETB EA,SETB ET1,SETB TR1,ATEST:SETB C,MOV R0,#0,MOV P0,#0FFH,DO:MOV A,P0,R0R:RRC A,;,查是哪键按下,JNC MUS,;有按键拨上,转,MUS,INC R0,CJNE R0,#08,R0R,SJMP ATEST,MUS:MOV A,R0,MOV DPTR,#LEDAB;,显示键号,MOVC A,A+DPTR,MOV P2,A,MOV DPTR,#TAB,;,查音律表,MOV A,R0,RL A,PUSH ACC,MOVC A,A+DPTR,MOV TH1,A,POP ACC,INC A,MOVC A,A+DPTR,MOV TL1,A,ACALL DAY,JMP ATEST,TINT1:CPL P1.0,;中断服务程序,POP DPH,POP DPL,MOV DPTR,#ATEST,PUSH DPL,PUSH DPH,RETI,DAY:MOV R2,#0F0H,DL2:MOV R3,#0F0H,DL1:NOP,NOP,DJNZ R3,DL1,DJNZ R2,DL2,RET,TAB:DW 0F88CH,0F95CH,0FA15H,0FA68H,0FB05H,DW 0FB90H,0FC0CH,0FC44H,;音律表,LEDAB:DB 06H,5BH,4FH,66H,6DH,7DH,07H,06H,;显示字符表,END,实验七 串行通信实验,一、串行口的功能,全双工串行口,异步通信串行口和同步移位寄存器,字符帧格式,8,位、,10,位、,11,位,软件编程,设置波特率和实现双机、多机通信,二、串行口的结构,1.,组成:,输入,SBUF,、输出,SBUF,、输入移位寄存器、输出控制门、接收控制寄存器、发送控制寄存器、波特率发生器、两个控制寄存器,SCON,、,PCON,写,SBUF,操作,,一方面修改发送寄存器,同时启动数据串行发送。,读,SBUF,操作,就是读接收寄存器,完成数据的接收。,串行口的控制寄存器,SCON,:,用以存放串行的控制和状态信息。,根据对其写的控制字决定工作方式,从而决定波特率发生器的时钟源是来自系统时钟还是来自定时器,T1,。,电源控制寄存器,PCON,:,PCON,的字节地址为,87H,串行通信中只用了其中的最高位;,SMOD,波特率加倍位。,三、工作原理,甲机,CPU,向,SBUF,写入数据,就启动了发送过程。,在发送控制器的控制下,按设定的波特率,每来一个移位时钟,数据移出一位,由低位到高位一位一位发送到电缆线上,移出的数据位通过电缆直达乙机。,当一帧数据发送完毕,硬件置位发送中断标志位,TI,该位可作为查询标志;如果设置为允许中断,将引起中断,甲的,CPU,方可发送下一帧数据。,CPU,并,行,数,据,SBUF,TI,串行口,移位时钟,甲机,CPU,并,行,数,据,SBUF,RI,串行口,移位时钟,乙机,串行传送示意图,串行数据,乙机按设定的波特率,每来一个移位时钟移入一位,由低位到高位一位一位移入到,SBUF,。,需预先置位,REN(SCON.4),即允许接收,对方的数据按设定的波特率由低位到高位顺序进入乙的移位寄存器;,当一帧数据到齐,硬件自动置位接收中断标志,RI(SCON.0),该位可作为查询标志;如设置为允许中断,将引起接收中断,乙的,CPU,方可通过读,SBUF,,将这帧数据读入,从而完成一帧数据的传送。,三、波特率的设定,8xx51,的波特率发生器的时钟来源有两种:,一是来自于系统时钟的分频值,由于系统的时钟的频率是固定的,所以此种方式的比特率是固定的。,另一种是由定时器,T1,提供,波特率由,T1,的溢出率控制,,T1,的计数初值是可以用软件改写的,因此是一种可变波特率方式,此时,T1,工作于定时方式,2,(,8,位自动重装入方式)。,波特率是否提高一倍由,PCON,的,SMOD,值确定,,SMOD=1,时波特率加倍。,串行口的工作方式中,方式,0,和方式,2,采用固定波特率,方式,1,和方式,3,采用可变波特率。,串行口的控制寄存器,1.,串行控制寄存器,SCON,SCON,98H,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,7,6,5,4,3,2,1,0,SM0,、,SM1,:,串行口工作方式选择位。,SM0 SM1,工作方式,功能说明,0 0,0,同步移位寄存器,波特率,固定,为,fosc/12,0 1,1,10,位,UART,;,波特率,可变,1 0,2,11,位,波特率,固定,为,fosc/n,,,(n=32,或,64),1 1,3,11,位,UART,,,波特率,可变,SCON,98H,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,7,6,5,4,3,2,1,0,SM2,:,多机通信控制位。,方式,2,和方式,3,中,SM2=1,,则,RB8=1,时,接收数据有效,,RI=1,;,RB8=0,时,接收数据无效,,RI=0,;,SM2=0,,则无论,RB8=0,或,1,,接收数据都有效,,RI=1,在方式,0,中,,,SM2,必须为,0,在方式,1,中,,若,SM2=1,,则只有接收到有效的停止位,置,RI=1,SCON,98H,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,7,6,5,4,3,2,1,0,REN,:,允许接收位。,用于对串行数据的接收进行控制:,REN=0,,禁止接收;,REN=1,,允许接收。该位由软件置位或清零。,TB8,:,方式,2,和方式,3,中要发送的第,9,位数据。,一般作为奇偶校验位;在多机通信中,以,TB8,位的状态表示主机发送的是地址还是数据:,TB8=0,表示数据,,TB8=1,表示地址。该位由软件置位或复位。,RB8,:,方式,2,和方式,3,中要接收的第,9,位数据。,该数据来自发送机的,TB8,。,其帧格式为:,串行工作方式,1,方式,1,是波特率可变,10,位异步串行通信方式,以,TXD,为串行数据的发送端,,RXD,为数据的接收端。每帧数据包括,1,个起始位,,8,个数据位和一个停止位。,起始,D0,D1,D2,D3,D4,D5,D6,D7,停止,发送时只要将数据写入,SBUF,,在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由,TXD,端串行输出。一帧数据发送完毕,将,SCON,中的,TI,置,1,。,1,、数据发送,接收时,在REN=1前提下,当采样到RXD从1向0跳变状态时,就开始接收数据。随后在移位脉冲的控制下,将串行接收数据移入SBUF中。一帧数据接收完毕,将SCON中的RI置1,表示可以从SBUF取走接收到的一个字符。,2,、数据接收,3,、波特率,方式,1,波特率由定时,/,计数器,T1,的计数溢出率来决定,。,波特率,=2,SMOD,(,T1,溢出率),/32,实验程序:单机自发自收通信实验,#include,#define,uchar,unsigned char,#define,uintunsigned,int,uint,j;,uchar,i;,Uchar,code tab16=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7d,0 x6f;,Main(),TMOD=0 x20;/*T1,方式,2*/,TH1=0 xcc;TL1=0 xcc;/*,设波特率*,/,TR1=1;/*,初始化,T1*/,SCON=0 x50;/*,串行口工作在方式,1*/,P1=0 xff;,实验程序:单机自发自收通信实验,while(1),TI=0;,for(i,=0;i10;i+),SBUF=,tabi,;/*,发送显示码*,/,while(RI,=0);/*RI=0,等待*,/,RI=0;/*RI=1,清,RI*/,P2=SBUF,;/*,接收数据并送显示*,/,while(TI,=0),;,/*TI=0,等待*,/,for(j,=0;j20000;j+);/*,延时*,/,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服