KEILWord格式文档下载.docx
- 文档编号:22081710
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:26
- 大小:539.23KB
KEILWord格式文档下载.docx
《KEILWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《KEILWord格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。
点击图1-6中1的新建文件的快捷按钮,在2中出现一个名为“Textn”(其中n表示序号)的文档,或通过菜单File-New或快捷键Ctrl+N来实现。
图1-6新建程序文件
点击图1-6中的3保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存。
因是新文件所以保存时会弹出如图1-7的文件操作窗口,我们把第一个汇编语言编写的程序命名为test1.asm,保存在项目所在的目录中。
注意:
扩展名“.asm”不可省略。
图1-7保存新建的源程序文件
(4)添加源程序文件到工程中。
现在,一个空的源程序文件“test1.asm”已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系。
我们需要把它添加到工程中去。
单击KeilC51软件左边项目工作窗口“Target1”上的“+”,将其展开。
然后右击“SourceGroup1”文件夹,会弹出如图1-8所示的选择菜单。
单击其中的“AddFilestoGroup'
SourceGroup1'
”项,将弹出如图1-9所示的对话框。
图1-8把文件加入到项目文件组中
图1-9选择文件
请在文件类型下拉列表中选择Asmsourcefile源文件,再选择刚刚保存的文件“test1.asm”
,按ADD按钮(请不要多次点击“Add”按钮),最后按“Close”按钮,程序文件已加到项目中了。
这时可以点击SourceGroup1文件夹图标左边的“+”展开后查看。
(5)现在开始输入源程序。
先最大化“test1.asm”源程序窗口,然后请按实验一程序清单输入程序代码。
;
----------------入口程序-------------------
ORG0000H;
程序执行开始地址
LJMPSTART;
跳到标号START执行
---------------主程序-------------------
START:
MOVP1,#01111111B;
点亮最下面的LED,即P1_7口低电平
LCALLDELAY50;
延时50毫秒
MOVP1,#10111111B;
点亮下面第二个LED,即P1_6口低电平
MOVP1,#11011111B;
LED依次点亮(以下省略)
MOVP1,#11101111B
MOVP1,#11110111B
MOVP1,#11111011B
MOVP1,#11111101B
MOVP1,#11111110B
MOVP1,#11111111B;
完成第一次循环点亮,延时约0.25秒
AJMPSTART;
反复循环
-----------延时子程序,12M晶振延时约50毫秒---------------
DELAY50:
MOVR4,#5
L3:
MOVR2,#20
L1:
MOVR3,#248
DJNZR3,$
DJNZR2,L1
DJNZR4,L3
RET
END
(6)单击KeilC51工具栏的“
”图标,弹出名为“OptionsforTarget‘Target1’”的对话框。
单击“Output”标签页,选中“CreateHEXFile”项,然后“确定”。
参见图1-10。
图1-10编译环境设置
(7)我们先来看图1-11,图中1、2、3都是编译按钮,不同是1是用于编译单个文件;
2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的;
3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。
在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。
5是菜单中的它们。
这个项目只有一个文件,你按123中的一个都可以编译。
在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。
单击工具栏的按钮“
”编译当前源程序。
编译结果会显示在输出窗口4内。
如果是“0Error(s),0Warning(s).”就表示程序没有问题了(至少是在语法上不存在问题了)。
如果存在错误或警告,双击错误,在源程序的错误行前会出现
,修改后,再编译,直到通过为止。
图1-11编译程序
(8)编译后的结果会生成IntelHEX格式的程序文件“test1.hex”,如图1-12。
该文件可以被专门的芯片烧写工具(例如Top2004编程器)载入并最终烧录到具体的芯片中。
芯片安装到自己的电路板上,通电,就可以运行里面的程序了。
图1-12 编译信息窗口
至此,您可以把编译好的文件烧到了芯片上。
如何烧写片子,请看第三课。
第二课 在KeilC51下调试程序
KeilC51的调试功能非常强大,本章我们先做一个初步了解,等以后再慢慢体会。
现在仍然以实验一LED闪烁发光程序为例,来具体了解如何进行仿真操作。
2.1进入仿真状态
如果程序编译通过,就可以仿真了。
在仿真之前,有一项参数最好配置一下,仍然按“
”图标进入编译环境设置,如图2-1,找到“target”下的“Xtal(MHz)”项,填入合适的晶振频率,比如12。
最后点击“确定”。
进入仿真状态很简单,直接点击工具栏红色的“
”图标。
图2-1编译调式环境设置
2.2认识各个仿真窗口
1.源程序窗口
KeilC51调试界面的中间是源程序窗口。
黄色箭头“
”所指为当前即将执行的代码。
以深灰色标记的程序行是可以执行的代码(当然,在调试过程中未必一定要去执行)。
以浅灰色标记的程序行不可作为代码来执行,它们是注释、空行、标号或ROM数据表。
以绿色标记的程序行表示曾经执行过的代码。
如图2-2。
图2-2仿真窗口
2.寄存器窗口
KeilC51调试界面的左边是寄存器窗口。
8051的工作寄存器(R0~R7)和系统寄存器(a、b、sp、dptr、PC、psw)都列出来了。
Value栏显示的是寄存器的当前数值。
如果在调试过程中某个寄存器的值有变化,则会用蓝色的背景标记。
单击psw寄存器左边的“+”,展开后还可以看到其每一位的情况。
3.汇编窗口
单击工具栏的“
”图标,源程序窗口会自动切换成汇编窗口。
在汇编窗口里,我们可以看到每条指令的存储地址和编码等信息。
再次单击“
”,回到源程序窗口。
4.存储器窗口
”图标,将显示出存储器窗口。
51单片机的存储器分为多个不同的存储空间,如果要观察代码存储器,就在地址栏“Address:
”内输入“C:
地址”,例如:
C:
0080H;
如果要观察外部数据存储器,就输入“X:
地址”;
如果要观察内部数据存储器,则可以输入“I:
地址”。
拖动存储器窗口右边的滚动条还可以观察输入地址附近的存储单元。
存储器窗口有“Memory#1~Memory#4”共4个观察子窗,您可以用来分别观察代码存储器、内部数据存储器和外部数据存储器。
存储器的内容是可以修改的。
用鼠标右击打算要修改的存储单元,选择“ModifyMemoryat…”项,弹出修改对话框,可以随意修改存储单元的内容。
5.变量观察和堆栈窗口
”图标,将显示变量观察和堆栈窗口(Watch&
CallStackWindow)。
在Locals标签页,会自动显示局部变量的名称和数值。
在C语言程序的函数中,每一对花括号“{}”内定义变量都是局部变量,能够自动显示。
在“Watch”标签页内,先用鼠标点击一次“typeF2toedit”,再按功能键“F2”,输入所要观察的局部或全局变量的名称,回车后就能显示出当前数值。
在“CallStack”标签页内,可以实时地观察到堆栈的使用情况。
2.3程序的运行控制
KeilC51能够实现程序单步和全速运行,具体由工具栏上的按钮来实现:
●复位按钮“
”:
单击此图标,能够使程序复位,程序将从地址C:
0000H处执行。
●全速运行“
单击此图标,能够使程序全速运行。
●停止运行“
该图标原来是灰色(不可操作),在进入全速运行状态后会变成红色。
如果要停下来,则可以按此图标。
●单步进入“
按此图标可以实现程序的单步执行。
在遇到函数调用时,会跟踪进入函数体。
●单步跳过“
也是单步执行,但是遇到函数时,视作“1条指令”来执行,不会跟踪进入。
●单步跳出“
在调试程序时,如果希望从某个函数中提前返回,则可以按此图标。
●执行到光标“
用鼠标单击某条可执行的代码(深灰色标记的程序行)。
然后按此图标,则程序开始全速执行,当遇到光标所在的行时,会自动停下来。
如果单击不可执行的程序行(有浅灰色标记),试图让程序执行到该行,是不允许的,“
”图标也会立即变成灰色,不让你操作。
●设置/清除断点“
KeilC51支持断点设置功能。
单击需要设置断点的行,再单击此图标,我们会看到该行被一个红色的小方块标记。
当程序全速运行时遇到断点,便会自动停下来。
KeilC51允许在同一个程序里设置多个断点。
清除某个断点的方法是,将光标停在该行上,再按一次“
另外一种设置/清除断点的快捷方法是,用鼠标在目标程序行的空白处双击,您不妨试一试。
●清除所有断点“
如果设置了多个断点,想一并清除,则可以按此图标。
2.4外围设备访问
KeilC51的一大特色是在仿真调试时支持对外围设备的访问。
单击菜单“Peripherals”,会弹出外围设备菜单。
在Peripherals菜单里列出了标准51的外围设备(相对于CPU内核而言):
中断、I/O端口、串行口和定时器等。
现在执行菜单“Peripherals|I/O-Ports|Port1”,弹出P1端口的界面。
在位0~7中,用√表示高电平,无√表示低电平。
执行菜单“Peripherals|Timer|Timer0”,弹出定时器T0的界面。
参见图2-3。
弹出的外围设备菜单是可以操作的,不妨试试。
图2-3外围设备中的P1和T0对话框
2.5进入调试模式
单击开启\关闭调试模式按钮
,实验一中,我们使用Peripherals菜单选择I/O-PortsP1,打开P1调试窗口,再按运行键
,这时就可以看到P1中不断循环状态,空为“0”,打钩为“1”。
如图2-4。
是不是不难呀?
这样就完成了您的第一个项目。
最后我们要停止程序运行回到文件编辑模式中,就要先按停止按钮
,再按开启\关闭调试模式按钮
。
然后我们就可以进行关闭KEIL等相关操作了。
到此为止,我们已经初步学习了一些KEILuVision2的项目文件创建、编译、运行和软件仿真的基本操作方法。
其中一些功能的应用,如观察端口值、内部RAM、ROM值等有待大家不断地实践。
图2—4调试运行程序
第三课 TOP2004通用USB编程器的使用
TOP2004通用编程器直接采用USB接口通讯和供电,可以工作在Win98SE/Me/2000/XP操作系统,无须外接电源,编程速度快,支持2.5V~6.5V器件,软件升级灵活。
一、编程器软件的安装:
1、请务必断开编程器,不要连接编程器
2、运行配套光盘中TOPWIN目录内的SETUP.EXE文件,按照提示进行安装
3、最后按“确认”重启电脑
4、电脑重启完成后,用配套的USB电缆连接编程器,电脑会提示“找到新硬件”按照提示自动搜索软件,一直完成USB初始化安装
5、光盘中TOPWIN10.EXE是中文界面的编程器软件,可以进行安装
6、运行“开始-程序-TOPWIN”软件会出现“正在初始化USB接口,需要3~10秒”的界面,随后进入专用编程软件
7、如果因为安装次序不正确引起的或者其他原因造成安装失败,可以点击:
我的电脑-右键“属性”-硬件-设备管理器-JUNGO中有黄色感叹号的选中按DEL删除,然后再重复以上1~6步骤即可。
这是编程器的专用软件界面:
二、读写芯片的步骤:
1、将51芯片插入插座,注意方向
2、运行编程器软件
3、型号选择ATMEL89S51
4、读写擦除显示正常结束
5、读写读器件工作区显示全FF退出
5、装载选择文件(*.hex)在工作区显示装载的文件的十六进制代码
6、读写写器件显示写入完成退出
7、完成,取出芯片,放入实验板验证。
第二部分单片机实验
实验一:
P0、P1、P2口的输入、输出实验
一、实验要求
1、熟悉语言编辑工具、单片机编程器的使用。
2、通过实验,加深对P0、P1、P2口的了解。
3、学习利用P1口作输出口,外接发光二极管及编程驱动。
4、学习利用P2口作开关输入口及控制输出口,外接开关及编程驱动。
5、学习利用P0口作输出口,外接数码显示管的方法。
二、实验目的
1、掌握单片机最小系统的设计。
2、学习P0、P1、P2口的使用方法。
3、学习发光二极管、键盘、数码显示管、蜂鸣器的运用。
4、学习延时子程序的编写和使用。
三、实验内容
1、仔细研究实验原理图,有条件的学生可以自己购买器件焊接实验板。
(1)起振电路:
使用芯片内部时钟,外接石英晶体12MHz和微调电容30pF。
(2)复位电路:
复位电路由22uF的电容和1kΩ的电阻组成。
(3)当EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始。
2、单片机的P1口做输出口,外接8只LED,编写程序,使LED循环点亮。
3、P2.0~P2.2、P2.6、P2.7口做输入口,外接开关;
编写程序读取P2.0~P2.2、P2.6、P2.7口开关状态,并将开关状态在P1.0~P1.7口发光二极管上显示出来。
4、P0口接一对共阴数码显示管,编写程序使数码显示管循环显示数字1~9。
5、延时子程序的编写及延时计算
延时时间的设计:
20×
(498+2)+2
=10002
DELAY:
MOVR0,#202个
2+2×
248=498
DELAY1:
MOVR1,#2482个
DJNZR1,$2个
DJNZR0,DELAY12个
RET
查指令表可知,MOV,DJNZ指令均需用两个机器周期,而一个机器周期的时间长度为12÷
12MHz=1微秒,所以该段程序执行时间为:
20×
[(2+2×
248)+2]+2=10002us=10.002ms
由上可知,R0=20,R1=248延时10ms;
R0=10,R1=248延时5ms;
若计算延时200ms,则使用R3×
10ms=200ms,R3=20。
延时子程序如下:
MOVR3,#20
D1:
MOVR4,#20
D2:
MOVR5,#248
DJNZR5,$
DJNZR4,D2
DJNZR3,D1
四、实验电路及程序框图
四、实验器材清单
电源:
12V稳压电源1台;
电源插座1只;
LM7805稳压管1只;
470uF电解电容2只;
0.1uF瓷片电容2只。
晶振电路:
12M晶振1只;
30PF电容2只。
复位电路:
1K电阻1只,22uF电容1只。
控制部分:
AT89S51单片机1个。
数码管:
1K提拉排阻1只;
2位连体数码管1只。
流水灯:
LED发光二极管8只;
限流电阻560Ω×
8只。
蜂鸣器:
S8550PNP型驱动三极管1只;
1K分压电阻1只;
5v蜂鸣器1只。
开关:
微动开关4只;
4路DIP开关1只。
五、实验说明
1、P2口是准双向口。
它作为输出口时与一般双向口使用方法相同。
由准双向口结构可知当P2口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20kΩ~40kΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管道通,读入的数据是不正确的。
2、认识数码管:
本次实验使用的是共阴数码管,公共端是”1”、”6”,公共端置”0”,则显示段置”1”就亮。
”1”控制左面的数码管;
”6”控制右面的数码管。
正面看数码管的引脚对应数据线的关系为:
对应数据线
D7
D6
D5
D4
D3
D2
D1
D0
对应显示段
e
f
DP
g
c
d
b
a
CF
1
03
2
5D
3
5B
4
93
5
DA
6
DE
7
43
8
DF
9
DB
实验板上的7段数码管0~9数字的共阴显示代码为:
0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
六、参考程序
1、P1口循环点灯
(1)程序流程框图
(2)汇编语言编写程序
-------入口程序-------------
MOVP1,#01111111B;
LCALLDELAY50;
MOVP1,#10111111B;
MOVP1,#11011111B;
MOVP1,#11101111B
MOVP1,#11110111B
MOVP1,#11111011B
MOVP1,#11111101B
MOVP1,#11111110B
MOVP1,#11111111B;
AJMPSTART;
MOVR4,#5
MOVR2,#20
MOVR3,#248
DJNZR3,$
DJNZR4,L3
2、P2.0—P2.2及P2.6、P2.7口开关状态显示
ORG0000H
MOVP2,#FFH;
读引脚初始化,同时灭灯
MOVA,P2;
读入P2口数据
ORLA,#38H;
屏蔽非输入口数据
MOVP1,A;
开关状态显示(开关闭合,低电平,灯亮)
LCALLDELAY250;
延时250毫秒
-----------延时子程序,12M晶振延时约250毫秒---------------
DELAY250:
MOVR4,#25
MOVR3,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- KEIL