单片机实验指导书文档格式.docx
《单片机实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
大约1KHZ
如用于4KHZ以上的超低频时钟系统,如32.768KHZ加CKDIV8编程
注意:
1、当您选择AT89S51/52时,你的系统可能不支持TURBO模式,建议选择FAST以下的模式进行编程。
2、选择TURBO模式可以获得最快的编程速度,但对系统的要求会高,如果出现进入不了编程模式或校验出错,请降低编程速度。
在器件选择框中可以选择合适的编程器件,SLISP已经支持的器件有:
系列
型号
AT89S
AT89S51、AT89S52、AT89S53、AT89S8252
ATTINY
ATTINY12、ATTINY13、ATTINY15、ATTINY26、ATTINY2313
AT90S
AT90S2324、AT90S2343、AT90S1200、AT90S2313、AT90S8515、AT90S8535
ATMEGA
ATMEGA8、ATMEGA48、ATMEGA88、ATMEGA168、ATMEGA8515、ATMEGA8535、ATMEGA16、ATMEGA162、ATMEGA163、ATMEGA169、ATMEGA32、ATMEGA64、ATMEGA128
SLISP编程软件会不断加入ATMEL新推出的所有可串行编程的FLASH存贮器的MCU,但对已经停产的MCU不再进行支持。
二、文件管理操作
文件管理区分成FLASH存贮器和EEPROM存贮器两个部分,FLASH存贮器的文件按键可以选择并打开程序数据文件,SLISP支持INTELHEX格式的数据文件和二进制数据文件。
注意IAREWAVR系统编译后生成的HEX文件有时是以A90为扩展名的,但其仍属于INTELHEX格式文件。
EEPROM存贮器的文件是用于选择并打开写入到EEPROM存贮器的数据文件的,同样支持INTELHEX格式的数据文件和二进制数据文件,注意AVRSTUDIO、ICCAVR产生的EEPROM数据文件都是以EEP为扩展名的。
两个文件按键左边的文本框中显示成功打开文件的路径信息。
三、重载和编辑
重载按键可以实现数据文件的自动重载和刷新,在您进行了新的一次编译后,没有必要每次都重新打开文件。
单击编辑按键可以打开数据缓冲区窗口,如图5。
图5数据缓冲区窗口
在这个窗口,可以对数据缓冲区中的数据进行修改、填充或清零,在窗口右侧还有一个窗口还有一个校验和显示窗口,可以显示缓冲区中数据的校验和,以检查数据有没有改变。
使用保存按键,可以将缓冲区中的数据保存成二进文件或INTELHEX格式数据文件,也可以生成char类型的数组,以方便用户的使用。
四、编程选项
在编程选项中,有重载文件、序列号、擦除、校验芯片ID码、FLASH、EEPROM、内部RC校准、配置熔丝、加密、轮询方式等单选钮,在单击编程按键时,SLISP会对选中的编程选项进行操作,没有选中的选项是不会被执行的。
编程选项中的所有项目,打钩表示选中,不打钩表示没有选中。
AT90S系列芯片,加密后的芯片ID码是无法读出的(总读为000102),因此用户在编程时可以取消ID码校验或先擦除一下,以使编程操作能顺利进行。
如果你选择了需要进一步设置的编程选项,会自动弹出相应的设置窗口,如RC校准窗口(图6),在这个窗口你可设置需要校准的频率和保存的位置及地址。
图6RC校准窗口
图7为配置熔丝窗口:
图7为配置熔丝窗口
在熔丝编程窗口中,检查框打钩表示编程,不打钩表示不编程。
注意对于AVR系列MCU由于0表示编程,所以打钩表示0,在窗口上方也有熔丝设置对应的十六进制数显示。
由于串行编程受SPIEN、RSTDISBL、DWEN等熔丝影响,所以在配置熔丝窗口中这些熔丝是禁止操作的。
五、加密
加密下拉列表框可以选择对芯片的不同加密方式:
AT89S系列:
LockMode1
不加密
LockMode2
禁止外部MOVC指令
LockMode3
禁止外部MOVC指令、校验
LockMode4
禁止外部MOVC指令、校验、EA引脚
对AVR系列:
禁止再编程
禁止再编程、校验
对ATMEGA系列,还有BLB0和BLB1可以选择,用于设置BOOT区和用户区的保密等级:
BLB0Mode1
用户区允许读写
BLB1Mode1
BOOT区允许读写
BLB0Mode2
用户区只读
BLB1Mode2
BOOT区只读
BLB0Mode3
用户区禁止读写
BLB1Mode3
BOOT区禁止读写
BLB0Mode4
用户区只写
BLB1Mode4
BOOT区只写
六、信息及进度条
信息栏中可以显示编程是产生的各种信息,进度条反映当前操作的进度状况。
七、操作按键
擦除:
擦除当前芯片中的程序。
编程:
按照编程选项中的操作,对芯片进行批处理操作。
校验:
用数据缓冲区中的数据对芯片中的内容进行校验。
读取:
读取芯片内容到数据缓冲区。
中止/退出:
在编程时显示为中止,此时单击此键可中止编程的进行;
当编程结束后显示为退出,此时单击此键可以退出SLISP程序。
第二部分Keil软件使用说明
利用KeilSoftware可以开发所有8051系列单片机的嵌入式应用。
KeilSoftware
的8051开发工具提供以下程序,可以用它们来编译C源码,汇编源程序,连接和
重定位目标文件和库文件,创建HEX文件,调试目标程序。
一、uVision2集成开发环境
uVision2IDE是一个基于Window的开发平台,包含一个高效的编辑器,一个项目管理器和一个MAKE工具。
uVision2支持所有的KEIL8051工具,包括C编译器,6过程:
◆全功能的源代码编辑器。
◆器件库用来配置开发工具设置。
◆项目管理器用来创建和维护项目o
◆集成的MAKE工具可以汇编,编译和连接嵌入式应用。
◆所有开发工具的设置都是对话框形式的。
◆真正的源代码级的对CPU和外围器件的调试器。
◆高级GDI(AGDl)接口用来在目标硬件上进行软件调试,以及和Monitor-51
进行通信。
◆与开发工具手册和器件数据手册和用户指南有直接的链接。
二、关于开发环境
uVision2界面提供一个菜单,一个工具条以便快速选择命令按钮,另外还有源
代码的显示窗口,对话框和信息显示。
uVision2允许同时打开浏览多个源文件。
1、项目管理
工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。
一个单一的uVision2工程能够产生一个或多个目标程序。
产生目标程序的源文件构成“组”。
开发工具选项可以对应目标,组或单个文件。
uVision2包含一个器件数据库(devicedatabase),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。
此数据库包含:
片上存储器和外围设备的信息,扩展数据指针(extradatapointer)或者加速器(mathaccelerator)的特性。
uVision2可以为片外存储器产生必要的连接选项:
确定起始地址和规模。
2、集成功能
uVision2的强大功能有助于用户按期完工。
✧集成源极浏览器利用符号数据库使用户可以快速浏览源文件。
用详细的符号信息来优化用户变数存储器。
✧文件寻找功能:
在特定文件中执行全局文件搜索。
✧工具菜单:
允许在V2集成开发环境下启动用户功能。
✧可配置SVCS接口:
提供对版本控制系统的入口。
✧PC-LINT接口:
对应用程序代码进行深层语法分析。
✧Infineon的EasyCase接口:
集成块集代码产生。
✧Infineon的DAVE功能:
协助用户的CPU和外部程序。
DAVE工程可被直接输入uVision2。
三、编辑器和调试器
1、源代码编辑器
uVision2编辑器包含了所有用户熟悉的特性。
彩色语法显像和文件辩识都对C源代码进行和优化。
可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。
2、断点
uVision2允许用户在编辑时设置程序断点(甚至在源代码未经编译和汇编之前)。
用户启动V2调试器之后,断点即被激活。
断点可设置为条件表达式,变量或存储器访问,断点被触发后,调试器命令或调试功能即可执行。
在属性框(attributescolumn)中可以快速浏览断点设置情况和源程序行的位置。
代码覆盖率信息可以让你区分程序中已执行和未执行的部分。
3、调试函数语言
uVision2中,你可以编写或使用类似C的数语言进行调试。
1).内部函数:
如printf,memset,rand及其它功能的函数。
2).信号函数:
模拟产生CPU的模拟信号和脉冲信号。
3).用户函数:
扩展指令范围,合并重复动作。
4、变量和存储器
用户可以在编辑器中选中变呈来观察其取值。
双层窗口显示,可进行以下调整:
1).当前函数的局部变量
2).用户在两个不同watch窗口页面上的自定义变量
3).堆栈调用(callstack)页面上的调用记录(树)(calltree)
4).不同格式的四个存储区
四、创建应用
如何创建一个新的工程?
按如下步骤可建立一个新的工程
1、首先打开Keil软件的开发环境,如下图所示。
2、点击菜单project,选择newproject:
3、输入工程文件的名字,选择你要保存的路径,比如保存到Keil目录里,工程文件的名字为test,如下图所示,然后点击保存。
4、这时弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51内核的单片机,例如,选择Atmel公司的AT89C51,可以选择ATMELAT89C51,然后点击确定。
5、点击确定后,弹出一个对话框,如下:
询问是否复制标准8051启动代码并将其加入已建工程中。
按“是“,进入下一步。
6、接下来要创建一个源程序文件,建立一个汇编或.C文件,如果你已经有源程序文件,可以忽略这一步,点击菜单FileNew:
7、输入一个简单的程序,如下:
8、选择菜单FileSave
9、选择你要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,如果是C程序文件,扩展名为.C,如果是汇编文件,扩展名为.asm(或.a51),如果是ini文件,扩展名为.ini,其他文件类型,比如注解说明文件,可以保存为.txt的扩展名。
这里将文件保存为asm结尾的源程序文件,所以扩展名为.asm,保存为test.asm的名字,点击保存。
10、点击Target1前面的+号,展开里面的内容sourceGroup1:
11、用鼠标右键点击SourceGroup1(注意用鼠标右键),弹出一个菜单,选择AddFilestoGroup
‘SourceGroup1’。
选择刚才编写的文件test.asm
如果在上述目录下看不到该文件,文件类型选Allfiles(*.*),将显示该目录下的所有文件。
12、点击Add按钮,将文件加入工程。
在类型Type一栏,选Assemblylanguagefile。
然后,点击OK按钮,把文件加入工程。
点击CLOSE按钮,关闭该对话框。
出现如下画面。
13、双击test.asm文件,可以打开文件,程序出现变色显示,说明程序已被系统辨识。
五、参数设置
1、接着上图,用鼠标右键点击Target1,选择OptionsforTarget‘Target1’,出现下图:
Xtal(Mhz):
是设置单片机的工作的频率,默认是24.OMHZ,如果单片机的晶振用的是1l.0592Mhz,那么在框里输入ll.0592(单位是Mhz,所以带小数点)。
UseOn-chipROM(0x0—0xfff):
这个选项是使用片上的FlashRom,我们知道At89C51有4k的flashRom,取决于你的应用系统,你的单片机的EA接高电平的话,请选中这个选项,如果单片机的EA接低电平,表示使用外部Rom,不要选中该项。
我们在这里选中它。
Off-chipCodememory:
表示你在片外接的Rom的开始地址和大小,如果你没有外接程序存储器,那么不要填任何数据.我们在这里假设使用一个片外的Rom,地址从Ox8000开始(不要填成8000,如果是8000,是10进制的数,一般填16进制的数),Size为外接Rom的大小.假设接了一块0x1000字节的rom。
最多可以外接3块Rom,如果还用了别的地址,就添上。
Off-ChipXdataMemory:
那么可以填上你外接的Xdata(外部数据存储器的起始地址和大小,一般的应用是接一个62256,我们在这里特殊的指定Xdata的起始地址为Ox2000,大小为Ox8000;
CodeBanking:
是使用CodeBanking技术.keil可以支持程序代码超过64k的情况,最大可以有2兆的程序代码。
如果代码超过64k,那么就要使用CodeBanking技术,以支持更多的程序空间.CodeBanking是一个高级的技术,支持自动的Bank的切换,是建立一个大型系统的需要,比如要在单片机里实现汉字字库,实现汉字输入法,都要用到该技术.我们在这里不选中它。
MemoryModel:
用鼠标点击MemoryModel的下拉箭头,会有3个选项。
Small:
变量存储在内部ram里.
Compact:
变量存储在外部ram里,使用页8位间接寻址
Large:
变量存储在外部Ram里,使用16位间接寻址.
一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX@Ri,A或MOVXA,@Ri指令。
如果超过256字节,那么要不断地进行切换的话,就比较麻烦。
Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVXA,@DPTR或MOVX@DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:
也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:
unsignedcharxdataa;
那么变量a就存储在外部的ram.
unsignedchara;
变量存储在内部ram.
假如用Large的模式:
unsignedcharxdataa:
变量存储在外部ram.
这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsignedchara.
那么我们最好选择Small.
CodeRomSize:
用鼠标点击下拉箭头,将有3个选项:
program2KOrless:
适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALLAJMP这些短跳转指令,而不会使用LCALL,LJMP指令,如果你的代码跳转超过2k,那么会出错。
Compact:
2kfunctions,64kprogram:
表示每个子函数的程序大小不超过2k,整个工程可以有64k代码.就是说在main()里可以使用LCALL,LJMP指令,但在子程序里只会使用ACALL,AJMP指令.除非你确认你的每个子程序不超过2k,否则不要用Compact方式。
Large:
64Kprogram:
表示程序或子函数都可以大到64k.使用codebank还可以更大.通常我们都选用该方式.CodeRomSize选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.这里选择Large方式.
Operating:
点击下拉箭头有3个选项:
None:
表示不使用操作系统
RTX—51TinyReal—Time0s:
表示使用Tiny操作系统
RTX—51FullReal—Time0s:
表示使用Full操作系统
Keilc51提供了tiny系统(demo版没有tiny系统,正版软件才有),Tiny是一个多任务操作系统,使用定时器0来做任务切换.一般用11.0592Mhz时,切换任务的速度为30毫秒.如果有10个任务同时运行,那么切换时间为300毫秒.同时不支持中断系统的任务切换.也没有优先级.因为切换的时间太长,实时性大打折扣,多任务情况下(比如5个),轮一次就要150毫秒,150毫秒才处理一个任务,连实现键盘扫描这些事情都不行.更不要说串口接收,外部中断等.同时切换需要大概1000个机器周期,对cpu的浪费很大,对内部ram的占用也很厉害.实际上用到多任务操作系统的情况少之又少.关键是不适用.多任务操作系统一般适合于16位,32位的cpu,不适合8位cpu.
Keil的多任务操作系统的思想值得学习,特别是任务切换的算法,如何切换任务和保存堆栈等,有一定的研究价值.如果熟悉了其切换的方法,可以编写更好的切换(比如将一次切换的时间从30毫秒改为3毫秒,实用性会好一些。
2、编译输出设置(产生.HEX文件)
在上图中,点击OUTPUT,弹出如下界面:
SelectFolderforObjects:
为最后生成的可执行文件,选择文件夹。
NameofExecutable:
对生成的可执行文件进行命名。
CreateHexFile:
选中小方框,编译输出将产生用于最后烧录的Hex文件,不选中,则不会产生。
六、程序调试与仿真
[程序调试]
完成以上工作后,就可以对程序进行调试与仿真了。
具体步骤如下:
1、进行编译,ProjectBuildTarget(RebuildAllTargetFiles,工程包含文件不止一个)。
2、有错误出现,在编译窗口,对错误类型和出错原因有详细说明,双击错误标号,就会定位在程序的相应处,修改错误,保存,再进行编译,直到全部通过为止。
编译完全通过后,就可以进行功能仿真了。
[程序仿真]
1、DebugStart/StopDebugSession
图中,从左边方框中可观察程序运行时,R0—R7,A,B,SP,PC,PSW等特殊功能寄存器的值,便于及时了解运行结果的对错。
还可以观察内部RAM的运行值,例如30H,
VIEWmemorywindow,在地址窗口输入要观察地址,内部RAM(I:
0X00—0X7F)30H单元,I:
0X30H.从下图可以看出,运行结果为3。
外部存储器单元(X:
0X000000—0X00FFFFH)。
除此之外,仿真环境还可以观察、仿真实际外设的运行情况,比如,定时/计数器,串口,P0,P1,P2,P3口,中断等。
观察外设窗口:
点击Peripherals按钮,弹出如下菜单,包含5个功能菜单:
Interrupt:
中断设置与激活。
调试技巧:
外部中断INT0对应于P3.2口线,因此,用鼠标单击PORT3窗口从右向左数第三位(P3.2口线对应的位),每单击两次,触发一次中断,原因是外部中断是下降沿或低电平有效的。
外部中断INT1的试验方法与外部中断INT0基本相似。
I/O-ports:
包含四个端口,即P0、P1、P2、P3。
单击PORT0,将弹出具体窗口,可以观察运行的结果。
用鼠标可对其进行设置,更改运行时的数据。
Serial:
可对串口进行设置,具体如下:
Timer:
对定时器/计数器进行设置。
单击Timer0,出现如下画面。
第三部分实验指导书
实验1、熟悉单片机开发环境
目的:
熟悉单片机的开发环境,掌握掌握单片机的编程和调试方法。
内容:
(1)由拨码开关输入开关量到单片机。
单片机根据不同的开关量输出相应的信号,点亮或熄灭LED发光管。
(2)让小灯进行多种方式显示。
向单片机端口发送不同的数据,点亮LED灯。
所需设备:
51单片机主控模块。
实验原理1:
实验步骤:
连接单片机模块P1口与LED灯的连线,以及P2口与拨码开关模块的连线。
将P2定义为输入,接至拨码