单片机实验课题有助于单片机的学习

上传人:仙*** 文档编号:29460226 上传时间:2021-10-07 格式:DOC 页数:21 大小:822.01KB
返回 下载 相关 举报
单片机实验课题有助于单片机的学习_第1页
第1页 / 共21页
单片机实验课题有助于单片机的学习_第2页
第2页 / 共21页
单片机实验课题有助于单片机的学习_第3页
第3页 / 共21页
点击查看更多>>
资源描述
实验一 Keil Vision的使用一、实验目的掌握Keil Vision的使用;掌握单片机汇编程序的调试方法。二、实验原理Keil Vision是美国Keil Software公司出品的单片机集成开发环境,具有单片机C语言或汇编语言程序编辑、编译或汇编、连接、调试等功能,允许设置断点,查看程序存储器、数据存储器和SFR的内容,以图形的方式显示SFR或变量内容随时间的变化,是目前单片机开发最常用的软件工具。运行Keil Vision后,程序窗口如图1-1所示。其中项目窗口用于管理工程项目所包含的文件,源程序窗口用于程序编辑,编译信息窗口输出编译或汇编的状态信息。各个窗口可以悬浮(Floating)在主窗口之上,也可以停泊(Docking)在主窗口中,单击程序主窗口Window菜单的Rest View to Defaults命令,将窗口恢复成默认状态。编译信息窗口源程序窗口项目窗口图1-1 Keil Vision程序窗口三、实验环境Windows XP;Keil Vision 4;四、实验内容1建立项目双击桌面Keil Vision图标或单击开始菜单的Keil Vision命令运行程序,出现图1-1所示的程序窗口。在主程序菜单栏单击Project菜单的New Vision Project命令,出现创建新文件对话框,为项目文件命名并选择存放路径(建议为每一个项目建立独立的文件夹)。单击保存按钮,出现图1-2所示器件选择对话框,在Data base列表中选择Atmel公司的AT89C52,作为项目使用的单片机。当出现如图1-3所示的添加启动代码对话框时,单击否。图1-2 器件选择对话框图1-3 添加启动代码对话框2程序编辑单击File菜单的New命令,出现源程序编辑窗口,在源程序编辑窗口中输入汇编程序并保存(扩展名为asm)。ORG 0000Hmain:MOV P1,#00Hloop:INC P1SJMP loopEND在项目窗口中用鼠标右键单击Source Group 1,在弹出的快捷菜单中选择Add Files to Group Source Group 1命令,将刚才保存的源程序文件添加到项目中。3程序调试在项目窗口中用鼠标右键单击Target 1,在弹出的快捷菜单中选择Options for Target Target 1命令,出现图1-4项目选项对话框。在选项对话框中,将晶振频率改为12MHz。单击主程序窗口的Build工具或按快捷键F7,对源程序进行汇编。如果程序有错,根据输出信息修改源程序,重新进行汇编,直到错误为零。单击主程序窗口Debug菜单的Start/Stop Debug Session命令,进入调试状态。调试状态的主程序窗口如图1-5所示。寄存器窗口可以查看和修改寄存器的值,反汇编窗口可以查看指令代码及其在程序存储器中的地址。单击主程序窗口View菜单的Analysis Windows子菜单的Logic Analyzer命令,打开Logic Analyzer窗口,可以观察SFR或变量的值随时间的变化,各个子窗口排列可以通过鼠标拖动或右键单击标题栏选择弹出的子菜单命令加以改变。单击Logic Analyzer窗口的Setup按钮,出现Setup Logic Analyzer对话框(如图1-6),在对话框中单击右上角的Insert按钮,将P1添加到待分析信号中。图1-4 项目选项对话框在主程序窗口中单击Run工具或按快捷键F5运行程序,然后单击Stop工具或Debug菜单的Stop命令,停止程序运行,观察逻辑分析窗口中P1寄存器内容随时间的变化,应如图1-5所示呈锯齿形变化。五、思考题1修改程序,使P1的值在0100之间变化。2修改程序,使P1的值随时间呈三角形变化(如图1-7所示)。图1-5 调试状态主程序窗口New(Insert)按钮图1-6 设置待分析信号图1-7 P1随时间呈三角形变化实验二 汇编语言程序设计一、实验目的熟悉单片机指令、伪指令的使用;掌握单片机汇编程序的设计、调试方法。二、实验原理1汇编语言汇编程序由指令语句、伪指令语句和宏指令语句构成。指令语句即机器指令,由标号、指令助记符、操作数和注释四部分组成,单片机的指令长度为13个字节,大部分为单周期指令,少部分为双周期指令,只有乘法、除法指令为四周期指令。伪指令语句定义程序结构和符号,在程序中起指示或说明作用,不产生机器码。宏指令是通过将一段指令序列定义成一个宏,每次用到该指令序列可以用宏名代替。适当使用宏指令,可以大大简化程序设计,增强程序的可读性。2两字节乘除运算单片机字长8位,一次只能完成8位乘8位或8位除8位运算,要进行16位乘除运算,需按运算规则编程实现。16位乘法运算如图2-1所示,由四次8位乘法运算组成,四次乘法运算的乘积经错位相加,形成32位乘积。R1(8位)R0(8位)R3(8位)R2(8位)R2R0(16位)R3R0(16位)R2R1(16位)R3R1(16位)Product(32位)图2-1 两字节乘法运算16位除16位无符号整数除法运算如图2-2所示。设除数有n位前导0,则对除数循环左移n次,商为n+1位。被除数减除数,够减时商为1,不够减时商为零,每减一次,除数右移一位,重复n+1次。三、实验环境Windows XP;Keil Vision 4;四、实验内容1程序设计双击桌面Keil Vision图标或单击开始菜单的Keil Vision命令运行程序,在主程序中单击Project菜单的New Vision Project命令,为项目文件命名并选择存放路径,选择Atmel89C52作为项目所使用的单片机。单击File菜单的New命令,出现源程序编辑窗口,在源程序编辑窗口中输入汇编程序并保存(扩展名为asm)。被除数0?上商=1上商=0除数右移重复次数=0?图2-2 两字节除法流程16位乘法运算用R3、R2存放16位被乘数,R1、R0存放16位乘数,R7、R6、R5、R4存放32位乘积。ORG 0000HLJMP MAINMULT MACRO X,Y;宏定义MOV A,XMOV B,YMUL ABENDMMAIN:MULT R2,R0;R2R0 MOV R4,A MOV R5,B MULT R3,R0;R3R0 ADD A,R5 MOV R5,A MOV A,B ADDC A,#0 MOV R6,A MOV A,#0 ADDC A,#0 MOV R7,A MULT R2,R1;R2R1 ADD A,R5 MOV R5,A MOV A,B ADDC A,R6 MOV R6,A MOV A,R7 ADDC A,#0 MOV R7,A MULT R3,R1;R3R1 ADD A,R6 MOV R6,A MOV A,B ADDC A,,R7 MOV R7,,A END2程序调试单击主程序窗口的Build工具或按快捷键F7,对源程序进行汇编。单击主程序窗口Debug菜单的Start/Stop Debug Session命令,进入调试状态。在寄存器窗口通过双击工作寄存值,将被乘数R3、R2设为B754H,乘数R1、R0设为A360H,通过按F10单步运算程序。程序执行后,检查乘积R7、R6、R5、R4的值,应为74FF3B80H。修改被乘数和乘数,重新运行程序,检查结果是否正确。五、思考题1不用宏指令MULT,原程序该如何写?2分析下列16位除法程序,用不同的被除数和除数验证运算结果是否正确。ORG 0000HLJMP MAIN被除数高8位被除数低8位除数高8位除数低8位42H商高8位商低8位40H44Hdividend DATA 40H;存放被除数和余数division DATA 42H;存放除数quotient DATA 44H;存放商RRC16 MACRO TEMP;两字节右移宏定义MOV A,TEMPRRC A;高字节右移MOV TEMP,AMOV A,TEMP+1RRC A;低字节右移MOV TEMP+1,AENDMRLC16 MACRO TEMP;两字节左移宏定义MOV A,TEMP+1RLC A;低字节左移MOV TEMP+1,AMOV A,TEMPRLC A;高字节左移MOV TEMP,AENDMMAIN: MOV dividend,#0FEHMOV dividend+1,#1AH;设被除数为FE1AH(65050)MOV division,#00HMOV division+1,#0E6H;设除数为00E6H(230)MOV quotient,#00HMOV quotient+1,#00H;商清零MOV B,#00HMOV A,divisionADD A,division+1JNZ L0SETB OVSJMP EXIT;除数为零,则退出L0:MOV A,division;计算除数前导0的位数JB ACC.7,L1CLR CRLC16 division;两字节除数左移1位INC BSJMP L0L1:INC BL2:CLR CMOV A,dividend+1SUBB A,division+1MOV A,dividendSUBB A,divisionJC L3 ;不够减,商为0MOV A,dividend+1SUBB A,division+1MOV dividend+1,AMOV A,dividendSUBB A,divisionMOV dividend,ASETB C;够减,商为1SJMP L4L3:CLR CL4:RLC16 quotient;两字节商左移1位CLR CRRC16 division;两字节除数右移1位DJNZ B,L2EXIT:SJMP $END实验三 C51程序设计与Proteus仿真一、实验目的掌握C51程序设计调试方法;掌握Proteus仿真软件的使用;加深对单片机工作原理及外部引脚的理解。二、实验原理1Proteus简介Proteus ISIS是英国Labcenter公司开发的电路分析与仿真软件。该软件将单片机仿真和SPICE电路仿真相结合,支持单片机程序的编辑、汇编和调试,可以全速、单步、带断点运行程序,可以查看各个寄存器、变量的值,同时支持第三方的编译和调试软件,如Keil Vision。目前支持的单片机有:68000系列、8051系列、AVR系列、PIC系列、HC11系列、以及ARM7TDMI系列。Proteus ISIS具有原理图绘制功能。通过在原理图设计窗口放置元件,利用鼠标操作,实现元件之间的连线,完成原理图设计。Proteus ISIS提供各种虚拟仪器,如示波器、信号发生器、逻辑分析仪等,方便电路的分析和仿真。计算机安装了Proteus后,在“开始”菜单中增加了Proteus 7 Professional程序项,单击ISIS 7 Professional启动程序后,出现图3-1所示的程序窗口。库管理按钮原理图设计窗口器件选择按钮图3-1 Proteus程序窗口2C51存储器类型汇编语言产生的代码少、速度快,但程序可读性差,编程困难。C语言具有良好的可读性、可移植性和基本的硬件操作能力,利用C51进行程序设计,可以专注于程序的逻辑结构和算法实现,大大提高程序设计的效率。C51根据单片机存储器的结构,将存储器分为不同的类型(如表3-1所示)。C51在定义变量时,可以指定存储器类型。如:unsigned char data i;表3-1 C51存储器类型类别存储器类型地址范围code程序存储器0000HFFFFHdata内部可直接寻址数据存储器00H7FHidata内部可间接寻址数据存储器00HFFHbdata内部可位寻址数据存储器20H2FHxdata外部数据存储器0000HFFFFHpdata外部数据存储器(一页)00HFFHsfr内部特殊功能寄存器80HFFH由于单片机字长只有8位,运算能力较弱,因此变量尽量采用无符号字符型(unsigned char),存储器类型尽量使用片内数据存储器(data、idata、bdata),以提高程序执行速度。3LED扫描显示LED数码管是单片机最常见的数据显示器。当数码管位数较多时,一般采用动态扫描方式,以节省单片机的I/O引脚,降低LED显示功耗。单片机每次输出七段显示码,同时使1位数码管的公共端为有效电平(共阳数码管为高电平,共阴数码管为低电平),则该显示码所对应数字显示在所选中的1位LED上。适当延时,输出下一位显示码,实现扫描显示。为使显示稳定无闪烁,延时时间一般为几毫秒或十几毫秒。三、实验环境Windows XP;Keil Vision 4;Proteus 7.8。四、实验内容1电路设计启动ISIS 7 Professional,在主程序器件选择窗口单击器件选择按钮或在原理图设计窗口单击右键选择Place “放置”命令,选择Component“元件”子命令,出现图3-2所示器件选择对话框。在Microprocessor ICs类别中选择80C52,在原理图设计窗口中单击鼠标,将单片机放入设计窗口,在Optoelectronics类别中选择7SEG-MPX4-CC,将4位共阴数码管放入设计窗口。通过单击器件引脚,完成电路连线(如图3-1所示)。单片机P2口输出七段显示码,P3.0P3.3用于选择显示位,当P3.0为低电平时,最左边的数码管亮,P3.3为低电平时,最右边的数码管亮。为实验新建一个文件夹,将电路设计文件保存在新建的文件夹中。实际电路设计时单片机P2.0P2.7需串联限流电阻,否则可能因电流过大损坏单片机,LED数码管的位选择1、2、3、4需采用缓冲器(四个三极管或74LS07),仿真时可省略。图3-2 器件选择对话框2程序设计启动Keil Vision,单击Project菜单的New Vision Project命令,出现创建新文件对话框,为项目文件命名并选择存放路径(选择与Proteus文件相同的文件夹),并选择Atmel公司的AT89C52作为本项目使用的单片机。单击File菜单的New命令,出现源程序编辑窗口,在源程序编辑窗口中输入C语言程序并保存(扩展名为.c)。主程序完成四位数字的显示,子程序实现延时。#include void Delay(unsigned char);unsigned char code dispcode=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;void main()unsigned char minute=12,second=0;while(1) P3=0xF7; P2=dispcodesecond%10; Delay(5); P3=0xFB; P2=dispcodesecond/10; Delay(5); P3=0xFD; P2=dispcodeminute%10; Delay(5); P3=0xFE; P2=dispcodeminute/10; Delay(5); void Delay(unsigned char time)unsigned char j;while(time0) for(j=0;j255;j+);time-;单击Keil Vision程序窗口Project菜单的Options for Target “Target 1”命令,在出现的Options for Target“Target 1”对话框中选择Output选项卡,选中Create HEX File。单击Build工具或Project菜单的Build命令,编译源程序。如编译出现错误,根据输出信息修改程序,重新编译,直至错误为零。3程序仿真在Proteus程序窗口双击单片机原理图符号,出现图3-3编辑元件属性对话框。单击Program File的打开文件按钮,选择编译生成的HEX文件作为单片机的程序文件。单片机的主频设为12MHz。单击Proteus窗口左下角的程序运行按钮,运行单片机程序,观察数码管的显示。打开文件按钮图3-3 编辑元件属性对话框五、思考题1头文件reg51.h有哪些内容?2修改程序,实现动态显示两位数的分和两位数的秒。实验四 中断与定时/计数器一、实验目的掌握单片机中断结构;掌握单片机定时/计数器的应用。二、实验原理1中断源和中断控制寄存器MCS-51单片机有五个中断源,每个中断源可通过编程设为高优先级或低优先级,各中断源名称及对应的中断入口地址如表4-1所示。表4-1 中断入口地址中断序号中断源入口地址0INT00003H1T0000BH2INT10013H3T1001BH4串行口0023H单片机与中断相关的特殊功能寄存器是中断允许寄存器IE和中断优先级寄存器IP。中断允许寄存器IE的字节地址为A8H,其各位的定义如下:EA-ESET1EX1ET0EX0中断优先级寄存器IP的字节地址为B8H,其各位的定义如下:-PSPT1PX1PT0PX02定时/计数器的工作方式与控制寄存器MCS-51单片机内部包含两个十六位的定时/计数器T0和T1,当被设为定时方式时,实际上是对机器周期计数,每个机器周期计数器加1。当被设为计数方式时,是对T0(P3.4)或T1(P3.5)引脚上的外部脉冲计数。单片机中与定时/计数器相关的特殊功能寄存器是定时/计数器控制寄存器TCON和定时/计数器模式寄存器TMOD。模式寄存器TMOD的字节地址为89H(不可位寻址),其各位的定义如下: GATEC/TM1M0GATEC/TM1M0T1控制T0控制M1M0工作模式00模式013位定时/计数方式01模式116位定时/计数方式10模式28位自动重装载方式11模式3对T0:分为一个8位的定时/计数器TL0和一个8位的定时器TH0对T1:停止计数C/=0,为定时器方式;C/=1,为计数器方式。GATE=0,定时/计数器的启动和停止完全由TCON的TR位控制。GATE=1,只有当TR=1并且引脚为高电平时才启动计数器。控制寄存器TCON的字节地址为88H,其各位的定义如下:TF1TR1TF0TR0IE1IT1IE0IT0定时/计数器外中断控制TRx:定时/计数器启停控制,TRx=1启动定时/计数器(当GATE=0时)。TFx:定时/计数器溢出标志,当定时/计数器溢出时,由硬件置位,CPU响应中断时,自动清零。3定时初值的计算当单片机的振荡频率为fOSC,则机器周期为12/fosc,设定时初值为TC,则定时周期t为:其中L为计数器的位数,模式0时L=13,模式1时L=16,模式2、模式3时L=8。三、实验环境Windows XP;Keil Vision 4;Proteus 7.8。四、实验内容1定时器的应用利用定时/计数器T0的定时功能(工作方式1),使P1.0输出1KHz的方波,并用虚拟示波器观测输出波形。启动Proteus仿真软件,在原理图设计窗口放置AT89C52单片机,右击原理图设计窗口,在弹出的快捷菜单中选择Place命令的Virtual Instrument子命令,选择OSCILLOSCOPE,将虚拟示波器放入设计窗口,将P1.0输出信号送示波器A通道(如图4-1所示)。图4-1 定时器应用实验原理图设单片机的振荡频率为12MHz,定时初值为:15汇编参考程序如下(请自行补充完整):ORG 0000HLJMP MAINORG 000BH;T0中断入口地址CPL P1.0MOV TH0,#0FEHMOV TL0,#0CHRETIORG 0100HMAIN:MOV IE,#82H;允许T0中断MOV TMOD,#01;T0方式1定时MOV TH0,#0FEHMOV TL0,#0CHSETB TR0SJMP $ENDC语言参考程序如下:#include sbit P10=P10;void main ()IE=0x82;TMOD=0x1;TH0=0xFE;TL0=0x0C;TR0=1;while(1);void T0_isr () interrupt 1TH0=0xFE;TL0=0x0C;P10=!P10;用汇编语言设计程序,可以单击Proteus程序窗口Source菜单的Add/Remove Source file命令,出现图4-2所示对话框,在对话框中单击New按钮,为单片机建立汇编源程序,然后编辑、编译程序。用C语言设计程序,可使用Keil编辑和编译源程序,最后生成HEX文件,在Proteus程序窗口双击单片机原理图符号,将编译生成的HEX文件作为单片机的程序文件。最后运行程序,出现图4-3所示虚拟示波器窗口,观察示波器中的波形并读取周期和频率。图4-2 添加/移除汇编源程序对话框图4-3 虚拟示波器2实时时钟单片机外接四位LED数码管用于显示分和秒(如图4-4所示),定时/计数器T0设为工作方式2,定时时间200S,当单片机主频为12MHz时定时初值为56,每5000次中断秒加1,每60秒分加1。用汇编或C语言写出相应的程序(LED扫描显示可参照实验三)。图4-4 实时时钟电路编译运行程序,观察LED显示的时间和Proteus窗口的ANIMATING时间,比较两者的误差。五、思考题1影响实时时种计时精度的因素有哪些,如何进一步提高计时精度?实验五 串行口一、实验目的掌握单片机串行口的内部结构和工作方式;掌握单片机串行口的应用;二、实验原理1串行口的工作方式及其控制寄存器MCS-51系列单片机内含一个16位全双工串行口,有四种工作方式,既可以用于扩展单片机的输入/输出口,也可以实现单片机与单片机、单片机与微机的串行通信。与串行口相关的特殊功能寄存器(SFR)有串行口控制寄存器SCON、串行口数据寄存器SBUF及电源控制寄存器PCON。串行口控制寄存器SCON的字节地址为98H,其各位的定义如下:SM0SM1SM2RENTB8RB8TIRISM0SM0SM1工作模式00方式0同步移位寄存器方式(波特率为fosc/12)01方式110位异步通信方式(UART)(波特率可编程)10方式211位异步通信方式(UART)(波特率为fosc/64或fosc/32)11方式311位异步通信方式(UART)(波特率可编程)SM2在方式2和方式3时,作为多机通信的使能位,SM2=1时,只有当收到的第九个数据位为1时,才会使RI置位。REN为接收允许位。REN=1时允许接收。TB8为方式2或方式3时发送的第九个数据位。RB8为方式2或方式3时接收的第九个数据位。TI为发送中断标志。由硬件置位,需由软件清除。RI为接收中断标志。由硬件置位,需由软件清除。串行口数据寄存器SBUF实际上包含两个独立的寄存器:发送数据寄存器和接收数据寄存器。写SBUF访问发送数据寄存器并启动一次串行发送;读SBUF访问接收数据寄存器,它们的字节地址均为99H。电源控制寄存器PCON的字节地址为87H,其最高位为波特率系数控制位,当SMOD=1时,波特率加倍。PCON各位的定义如下:SMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMOD-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-RENGF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF0PDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIGF1、GF0为通用标志位。PD为掉电方式位,PD=1进入掉电方式。IDL为待机方式位,IDL=1进入待机方式。2串行口波特率的计算当单片机的振荡频率为fOSC、定时/计数器的溢出速率为F时,串行口的波特率分别为:方式0:波特率=方式2:波特率=方式1和方式3:波特率=若定时器工作在8位自动重装载方式(方式2),定时初值为TC,则溢出速率F=3串行口的应用方式0主要用于输入/输出口的扩展,方式1主要用于单片机与单片机之间、单片机与微机之间的串行通信(每次通信传输8个数据位),方式2和方式3主要用于多机通信或一次通信需要9个数据位(如带奇偶校验)的情况。三、实验环境Windows XP;Proteus7.5。四、实验内容1串行口方式0实验串行口工作在方式0时,可通过外接移位存储器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率1/12。由软件置位串行控制寄存器SCON的REN后才能启动串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据传输完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。实验连线如图5-1所示,图中数码管采用“7SEG-COM-ANODE”共阳数码管。图5-1 串并转换实验电路图使数码管轮流显示0-9的数字的参考程序如下:ORG 0000MOV SCON,#00H;串行口方式0,禁止接收。MOV DPTR,#CDATALOOP:MOV R0,#0LP: MOV A,R0 MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R0 LCALL DELAY CJNE R0,#0AH,LP SJMP LOOPDELAY:MOV R5,#5DE2: MOV R6,#0DE1: MOV R7,#0 DJNZ R7,$ DJNZ R6,DE1 DJNZ R5,DE2 RETCDATA: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H END写出C语言程序并运行,观察并记录结果。2双机串行通信实验实验原理图如图5-2所示,要求单片机U1的外接开关DIPSW_8可控制单片机U2的外接LED灯LED-BARGRAPH-GRN的亮暗。图5-2 双机串行通信实验原理图单片机U1发送数据参考程序如下:ORG 0LJMP MAINORG 23HCLR TIMOV A,P1MOV SBUF,ARETIORG 30HMAIN: MOV SCON,#40H;串行口方式1,禁止接收MOV TMOD,#20HMOV TL1,#0E0HMOV TH1,#0E0HSETB TR1MOV IE, #90HMOV A,P1MOV SBUF,ASJMP $END单片机U2接收参考程序如下:ORG 0LJMP MAINORG 23HCLR RIMOV A,SBUFMOV P2,ARETIORG 30HMAIN: MOV SCON,#50H;串行口方式1,允许接收MOV TMOD,#20HMOV TL1,#0E0HMOV TH1,#0E0HSETB TR1MOV IE, #90HSJMP $END写出C语言程序,编译后分别添加到单片机U1和U2。(如果用汇编编程,可直接选择单片机U1,单击源代码菜单的添加/删除源文件命令,为U1添加源程序。选择单片机U2,再次单击源代码菜单的添加/删除源文件命令,为U2添加源程序)。运行程序,单击DIP开关,改变U1单片机P1口的输入状态,观察U2单片机P2口LED的变化。五、思考题1实验内容1不使用延时程序,而利用定时器实现1秒定时,程序应如何修改?2实验内容2通信的波特率为多少?
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!