ImageVerifierCode 换一换
格式:DOCX , 页数:136 ,大小:626.55KB ,
资源ID:11289218      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11289218.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理与接口技术实验指导c语言版.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机原理与接口技术实验指导c语言版.docx

1、单片机原理与接口技术实验指导c语言版实验1 Keil软件的使用1.1 创建一个Keil C51应用程序开发单片机的第一步就是用Keil C51软件编写程序,并形成最终的“*.hex”目标文件,然后用编程器将该文件烧写到单片机中,最后将烧写好的单片机插到电路板上,接通电源就可以工作了。 在 Keil C51集成开发环境下使用工程的方法来管理文件的,而不是单一文件的模式。所有的文件包括源程序(包括 C 程序,汇编程序)、头文件、甚至说明性的技术文档都可以放在工程项目文件里统一管理。在使用 Keil C51 前,用户应该习惯这种工程的管理方式。对于使用 Keil C51 的用户来讲,一般可以按照下面

2、的步骤来创建一个自己的 Keil C51 应用程序。1新建一个工程项目文件;2为工程选择目标器件(例如选择SST的SST89C58);3为工程项目设置软硬件调试环境;4创建源程序文件并输入程序代码; 5保存创建的源程序项目文件;6把源程序文件添加到项目中。下面以创建一个新的工程文件 Led_Light.V2 为例,详细介绍如何建立一个Keil C51的应用程序。(1) 双击桌面的 Keil C51 快捷图标,进入如图1.1所示的 Keil C51 集成开发环境。或许打开 Keil C51 界面有所不同,这是因为启动Vision2 后,Vision2 总是打开用户前一次正确处理的工程,可以点击工

3、具栏的 Project 选项中的 Close Project 命令关闭该工程。图 1.1 Keil C51 集成开发界面(2)点击工具栏的 Project 选项,在弹出如图1.2 所示的下拉菜单中选择New Project命令,建立一个新的Vision2 工程,这时可以看到如图 2.10 所示的项目文件保存对话框。图 1.2 新建工程项目下拉菜单在这里需要完成下列事情:为工程取一个名称,工程名应便于记忆且文件名不宜太长; 选择工程存放的路径,建议为每个工程单独建立一个目录,并且工程中需要的所有 文件都放在这个目录下; 选择工程目录 F:示范程序Led_Light 和输入项目名 Led_Ligh

4、t 后,点击保存返回。点击选择工程存放路径 填写新建工程的名称 图1.3 新建工程项目对话窗口在工程建立完毕以后,Vision2 会立即弹出如图1.4 所示的器件选择窗口。器件选择的目的是告诉Vision2 最终使用的 80C51 芯片的型号是哪一个公司的哪一个型号, 因为不同型号的 51 芯片内部的资源是不同的。,Vision2 可以根据选择进行 SFR 的预定义, 在软硬件仿真中提供易于操作的外设浮动窗口等。图1.4 器件选择窗口由图1.4可以看出,Vision2 支持的所有 CPU 器件的型号根据生产厂家形成器件组,用户可以根据需要选择相应的器件组并选择相应的器件型号,如 Philips

5、 器件组内的 P80/P87C52X2 CPU。另外,如果用户在选择完目标器件后想重新改变目标器件,可点击工具栏project选项,在弹出的如图 1.5 所示的下拉菜单中选择是select device for target target 1命令。也将出现如图 1.4所示的对话窗口后重新加以选择。由于不同厂家的许多型号性能相同或相近,因此如果用户的目标器件型号在Vision2 中找不到, 用户可以选择其它公司的相近型号。图1.5 器件选择命令下拉菜单(4)到现在用户已经建立了一个空白的工程项目文件,并为工程选择好了目标器件,但是这个工程里没有任何程序文件。程序文件的添加必须人工进行,但如果程序

6、文件在添加前还没有建立,用户还必须建立它。点击工具栏的File选项,在弹出的如图 1.6所示的下拉菜单中选择New命令。这时在文件窗口会出现如图1.7所示的新文件窗口Text1,如果多次执行New命令则会出现 Text2,Text3等多个新文件窗口。图 1.6 新建源程序下拉菜单图 1.7 源程序编辑窗口(5)现在 Led_Light.V2 项目中有了一个名为 Text1 新文件框架,在这个源程序编辑 框内输入自己的源程序 Led_Light.asm。下面是完整的 Led_Light.asm 源程序代码,用户可以输入。 ORG 0000H JMP MAIN ORG 0100H MAIN: MO

7、V A,#0FEH ;流水灯向左移动 LEFT_MOV: MOV P1,A CALL DELAY RL A CJNE A,#0FEH,LEFT_MOV MOV A,#7FH ;流水灯向右移动RIGHT_MOV: MOV P1,A CALL DELAY RR A CJNE A,#7FH,RIGHT_MOV JMP MAIN;-延时子程序-DELAY: MOV R2,#250DEL: MOV R3,#250 NOP DJNZ R3,$ DJNZ R2,DEL RET END (6) 输入完毕后点击工具栏的File选项,在弹出的下拉菜单中选择是save命令存盘源程序文件。这时会弹出如图1.8所示的存

8、盘源程序文件画面,在文件名栏内输入源程序的文件名,在此示范中把Text1 保存成 Led_Light.asm。注意文件的扩展名不能省略,而且必须是.asm(如果是C则保存为*.c)。保存完毕后请注意观察,保存前后源程序有哪些不同,关键字变成蓝颜色了吗?这也是用户检查程序命令行的好方法。图1.8 源程序存盘对话框(7) 需要特别提出的是,这个程序文件仅仅是建立了而已,Led_Light.asm 文件到现在为止跟 Led_Light.V2 工程还没有建立起任何关系。此时用户应该把 Led_Light.asm源程序填加到Led_Ligh. V2工程中,构成一个完整的工程项目。在project win

9、dow窗口内,选中source group1后点击鼠标右键,弹出如图1.9所示的快捷菜单中选择Add Files to GroupSource Group1(向工程中加入源程序)命令。图1.9添加源程序快捷菜单此时会出现如图1.10所示的添加源程序文件窗口,选择刚才创建编辑的源程序文件Led_Light.asm。单击Add命令即可把源程序文件添加到项目中。由于添加源程序文件窗口中的默认文件类型是C Source File(*.c),这样在搜索显示区中则不会显示刚才创建的源程序文件( 由于它的文件类型是 *.asm) 。改变搜索文件类型为 All File(*.*),选择 Led_Light.a

10、sm 源程序文件后点击Add命令将弹出如图1.11所示的文件类型确认窗口,在type下拉菜单中选择assembly language file后确认返回图1.10添加源程序文件窗口,此时点Add命令即可将源程序添加进项目工程中。图1.10 添加源程序文件窗口图1.11 文件类型确认窗口1.2 程序文件的编译、连接(1) 编译环境的设置工程建立好后,还要对工程进行进一步的设置,以满足要求。首先单击左边窗口的Target,然后选择options for TargetTarget1 参考图1.12。这时即出现如图1.13所示的调试环境设置窗口。图1.12 调试环境设置窗口下拉菜单点击 Output

11、选项卡在出现的窗口中选中 Create Hex File 选项,在编译时系统将自动生成目标代码文件*.HEX。选择 Debug 选项会出现如图1.14所示的工作模式选择窗口,在此窗口中我们可以设置不同的仿真模式。图1.13 Keil C51 调试环境设置窗口图1.14 Debug 设置窗口从图1.14可以看出,Vision2 的 2 种工作模式分别是:Use Simulator(软件模拟) 和 Use(硬件仿真)。其中 Use Simlator 选项是将Vision2 调试器设置成软件模拟仿真模式,在此模式下不需要实际的目标硬件就可以模拟 80C51 微控制器的很多功能,在准备 硬件之前就可以

12、测试您的应用程序,这是很有用的。(2)程序的编译、连接、运行完成以上的工作就可以编译程序了。点击如图1.15所示的Rebuild All Target Files 命令,对所有的工程文件进行重新编译,此时会在“Output windows”信息输出窗口输出一些相关信息,如图1.16所示。图1.15 编译命令菜单图1.16 输出提示信息其中第二行 assembling Led_Light.asm 表示此时正在编译 Led_Light.asm 源程序,第三行 linking表示此时正在连接工程项目文件,第五行 Creating hex file fromLed_Light说明已生成目标文件 Led

13、_Light.hex,最后一行说明 Led_Light.V2 项目 在编译过程中不存在错误和警告,编译链接成功。若在编译过程中出现错误,系统会给出错 误所在的行和该错误提示信息,用户应根据这些提示信息,更正程序中出现的错误,重新编译直至完全正确为止。对源程序进行编译之后,还需要实际的运行来验证程序的正确性。点击如图1.17所示的start/stop debug session命令,将程序与硬件进行连接,如果与硬件连接正确,会在Output windows窗口出现如图1.18所示的提示信息,如果连接不正确,会出现如图1.19所示的信息,此时请复位硬件,然后重新编译、连接。图1.17 start/

14、stop debug session命令窗口图1.18 与硬件连接正确提示信息图1.19 与硬件连接不正确提示信息完成以上步骤,与硬件连接正确之后,用户就可以按图1.20所示的运行命令进行在线仿真了。图 1.20 运行命令窗口以下与实验内容无关,作为了解,可以跳过。在调试环境设置窗口的target页面下,(参考图1.13),xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高频率值。一般将其设置成为实际所使用的晶振频率值。Memory Model用于设置RAM使用情况,有3个选择项。 small :是所有变量都在单片机的内部RAM中,如果内部RAM空间不够,才会存到外部RAM中。这种数

15、据存储方式的好处在于运算速度最快,也是我们一般常选择的方式。 Compact :变量存储在外部RAM里,使用8位间接寻址。即将变量放在外部RAM的前256个字节里。Large: 变量放在外部RAM里,使用16位间接寻址。Code Rom size用于设置ROM空间的使用,也有3个选项。 Small:只用低于2K的程序空间,适用于AT89C2051这些芯片。Compact:单个函数的代码量不能超过2KB,整个程序可以使用64KB的程序空间。Large:可用全部64KB的空间,表示程序和子函数代码都可以大到64KB。Operating项是操作系统选择项,Keil C51提供了两种操作系统:Rtx

16、tiny和Rtx full。通常不使用任何操作系统,用该项的默认值:None(不使用任何操作系统)。Use on-chip ROM(0x0-0xfff)选择项,表示使用片上的ROM。该选项取决于单片机应用系统,如果单片机的EA接高电平,则选中,表示使用内部的ROM,如果单片机的EA接低电平,则不选中该选项,表示使用外部的ROM。Off-chip Code memory:表示片外ROM的开始地址和大小。如果没有外接程序存储器,那么不需要填任何数据。Off-chip Xdata memory:用于确定系统扩展RAM的地址范围,可以填上外接Xdata外部数据存储器的起始地址和大小。这些选择项必须根据

17、所用硬件来决定。在Output页面下,见图1.21。select Folder for objects:用来选择最终的目标文件所在的文件夹,默认则表示与工程文件在同一个文件夹中。Name of Executable:设置生成的目标文件的名字,默认情况下与项目的名字一样。Creat Executable:creat hex用于生成可执行代码文件,默认情况下该项未选中,如果要烧录芯片做硬件实验,就必须选中该项。图1.21 output设置窗口(3) 本实验当中编译环境的设置说明1在调试环境设置窗口的Device选项卡中器件选择SST89C58。(参考图1.4)2. 在调试环境设置窗口的Target

18、选项卡中xtal(Mhz)项填写12。选中Use on-chip ROM。其它项不必改动,具体设置参考图1.13。3 在调试环境设置窗口的debug设置窗口中选择keil monitor-51 drive仿真设置。(参考图1.14)用鼠标点击keil monitor-51 drive后的setting,将弹出1.22所示的窗口。在实验当中根据与计算机连接情况选择串口,波特率固定选择38400。图1.22 串口设置窗口实验2 C语言基本指令及程序设计1 实验目的(1)熟悉C语言基础知识(2)掌握单片机的C语言的编程方法2实验原理(1)C语言中的数据 1.数据类型 1)char:字符型数据,占一个

19、字节,分为有符号数和无符号数,有符号数的表示范围为-128 +127,采用二进制补码的表示形式,无符号数的表示范围为0255 2)int:整型数据,占两个字节。分为有符号数和无符号数,有符号数表示范围为-32768+32767,采用补码表示,无符号数表示范围为065535 3)long:长整型,4个字节,分为有符号数和无符号数 4)float:浮点型,f占用4个字节,符合IEEE标准 5)bit:位变量,用于进行位操作 6)sbit:定义位变量 7)sfr:单字节变量,范围为0255 8)sfr16:双字节变量,范围为065535 9)*:对象指针,13字节2.数据的存储类型 1)片内数据存储

20、器 片内RAM最大可达到256字节,可分为3个区域 Data:片内直接寻址区,位于片内RAM低128字节 Bdata:片内位寻址区,位于片内RAM位寻址区 Idata:片内间接寻址区,片内RAM所有字节 2)片外数据存储器 Xdata:外部存储器,为片外RAM的64KB空间 Pdata:外部存储器,片外RAM中的一页,为156字节在程序中定义变量类型是编程中首先遇到的问题。一个程序中肯定会有数据,首先要选择数据类型,一个变量可能有最大的数据,到底有几个字节才可以存下,这就要根据情况分析而定。在够用的情况下,尽量选则8位即一个字节的char类型。数据的存储类型是一个值得深讨的话题,只要条件满足尽

21、量选择内部直接寻址的存储器类型data,然后选择idata即内部间接寻址,对于经常使用的变量要使用内部寻址。在内部寄存器数量有限或不能满足要求的情况下才使用外部存储器,选择外部存储器时可先选择pdata类型,最后选择xdata类型。存储器的选择关系到程序的执行效率问题,在选择时要多加考虑。(2) C语言中的函数 函数是指程序中的一个模块,c语言就是由一个个的模块化函数构成的,main() 函数为程序的主函数,其他若干函数可以理解为一些子程序。Main()函数是程序运行的起点,程序员的任务就是编写一些列函数模块,并且在适当那个时候调用这些函数,实现程序所要实现的功能。 1. 函数 在C语言中编写

22、的函数包括函数声明和函数体。 (1)函数声明格式为: 函数返回值类型 函数名(形式参数1,形式参数2,); (2)函数体格式为: 函数返回类型 函数名(形式参数1,形式参数2,) 对于无返回值的函数,函数返回类型就是void,否则就根据返回值的类型确定函数返回类型,例如int型、char型。如果函数没有参数,在函数声明中参数写为void。下面是两个函数声明示例:bit busychk(char busybuf ) 函数返回值类型是bit型,参数类型为charvoid keyin(void) 函数无返回值,也没有参数 2. 函数调用 (1)简单调用 调用格式:函数名(实际参数1,实际参数2,)

23、(2)嵌套式调用 嵌套式调用就是调用的函数中又调用其它函数的语句。 (3)递归调用 函数的递归调用就是一个函数在其函数体内又调用自身,递归调用是一种特殊的循环结构。 注:在调用一个函数时要保持与该函数声明和函数体格式的一致:包括函数返回值类型、参数类型和个数。 (3) C语言中的运算操作 1赋值、指针、取指运算符运算符的类型可以分为:单目,双目,多目。单目运算符只有一个操作数,双目运算符有两个操作数,多目运算符则有多个操作数。符号运算符类型运算符注解=双目赋值*单目取指针&单目取地址 关于赋值、指针、取指运算可以举如下的例子供用户参考学习: #includevoid main() int da

24、ta nvar1,nvar2,*pvar,nresult; nvar1=5; nvar2=3; pvar=&nresult; /除法运算 *pvar=nvar1*nvar2; /取模运算 while(1);运行结果如下: 2. 算术运算符 符号运算符类型运算符注解+双目加法运算-双目减法运算*双目乘法运算/双目除法运算%双目取模运算 以上的运算符,对于+,-,*的操作比较熟悉,但是对于除法和取模运算就比较陌生,下面就一个例子来对这两种运算进行解释: #includevoid main() char data nvar1,nvar2,nresult1,nresult2; nvar1=5; nva

25、r2=3; nresult1=nvar1/nvar2; /除法运算 nresult2=nvar1%nvar2; /取模运算 while(1);运行后的结果是: “/”为除法运算,“%”为取模运算,运算符左侧为被除数,右侧为除数。5/3结果为1,而5%3结果为2,其实这两种运算可以理解为,“/”为取商,“%”为取余。 3. 关系运算符 符号 运算符类型 运算符注解 双目大于= 双目大于或等于3显然是成立的,结果为真,返回值为1,而33不成立,结果为假,返回值为0.最应该注意的是=和=3在关系上是对的,这些细节读者应该多多注意。 void main() int data nvar1,nvar2,n

26、var3,nvar4,nvar5,nvar6; nvar1=(53); nvar2=(33); nvar3=(5=3); nvar4=(3=3); nvar5=(5= =3); nvar6=(3= =3); while(1);运行结果如下: 4. 逻辑运算符 符号 运算符类型 运算符注解& 双目逻辑与| 双目逻辑或! 双目逻辑非 在逻辑运算中,最基本的是二值逻辑即真和假,而逻辑运算是以真假逻辑为对象的运算。 对于与运算,只有二者都为真时,结论才为真 对于或运算,只有二者都为假时,结论才为假 对于非运算,取反,真的非即为假,假的非即为真 具体的例子不再在这陈述,读者可仿照上面的例子,自行设计程序

27、对逻辑运算进行测试。 5. 位运算 符号 运算符类型 运算符注解& 双目按位与| 双目按位或 双目按位异或 双目按位取反 双目按位右移 这里的位指的是二进制位,计算机中的数据都是以二进制存放的,对于数据的操作也是按位进行的。 6. 复合运算符 符号运算符类型运算符类型+=双目加-=双目减*=双目乘/=双目除%=双目模&=双目与|=双目或=双目非=双目取反=双目右移?:双目问号运算 为了方便书写,C语言中有符合运算,使得语句的书写更加简洁,符号左边的变量既为源操作数也为目的操作数。 复合运算测试程序如下: void main() int xdata nvar1=1,nvar2=2,nvar3=3

28、,nvar4=4,nvar5=5,nvar6=6,nvar7=7,nvar8=8; nvar1*=3; /nvar1乘以3再放到nvar1中去 nvar2*=nvar1; /nvar2乘以nvar1再放到nvar1中去 nvar3=2; /nvar3左移2位再放到nvar3中去 nvar45? nvar5:nvar6; /35为假,故nvar6放到nvar7中去 nvar8=53? nvar5:nvar6; /53为真,故nvar5放到nvar8中去 while(1);运行结果是: 这段程序选择的变量存储类型为xdata,即变量存储在外部数据存储区,这与运行结果无关,只是在程序内部变量的操作上可能比较费时。 其它的复合运算符应该比较好理解,在此只对问号运算符做一解释:如果问号关系式是真的,那么就将“:”前的数据放入目的操作数,如果问号关系式为假,则将“:”后的放入目的操作数。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1