单片机原理及应用实验指导书.docx
- 文档编号:10852424
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:30
- 大小:415.71KB
单片机原理及应用实验指导书.docx
《单片机原理及应用实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实验指导书.docx(30页珍藏版)》请在冰豆网上搜索。
单片机原理及应用实验指导书
单片机原理及应用
实验指导书
目录
实验一HT-IDE集成开发环境2
实验二HTMCU查表指令的使用15
实验三流水灯显示18
实验四按键检测及数码管显示23
实验一HT-IDE集成开发环境
1.实验目的:
(1)认识HT-IDE集成开发环境。
(2)掌握IDE3000软件的使用。
(3)掌握汇编语言基本程序设计。
2.实验设备:
硬件:
PC机
3.HT-IDE简介:
HT-IDE(HoltekIntegratedDevelopmentEnvironment)是盛群公司提供的用于设计盛群8位单片机应用程序的集成开发环境,可使用ASM和C两种程序设计语言。
该开发环境由硬件和软件两部分构成。
硬件工具为HT-ICE仿真器,提供多种实时仿真功能,包含多功能跟踪、单步执行和断点设定功能,集成了OTP烧写器。
软件方面有HT-IDE3000平台,此平台集成了所有的软件工具,例如编辑器、编译器、连接器、函数库管理器和符号除错器,使程序开发过程更加容易,并提供友好的视窗界面。
HT-IDE提供两种仿真环境:
硬件仿真(Emulationmode)与软件仿真(Simulationmode)。
进行硬件仿真,必须通过并行打印口将HT-ICE仿真器连接至主机;而软件仿真则无需HT-ICE,就可以进行程序开发。
此软件仿真可以仿真盛群8位单片机,以及HT-ICE硬件的所有基本功能。
安装HT-IDE3000系统的硬件要求Pentium等级以上CPU之PC/AT兼容机器;软件要求操作系统为Windows95/98/NT/2000/XP及更新版本。
HT-IDE系统硬件配置如图1.1所示:
图1.1
如果不进行硬件仿真,即不使用HT-ICE,也可使用软件仿真进行调试、除错。
4.实验步骤:
本次实验采用HT-IDE的软件仿真模式,使用一个Led_show.asm程序(源程序见后)来说明操作步骤,该程序是利用PA.0I/O引脚控制LED产生一亮一灭的闪烁效果。
MCU使用HT48R70A。
(1)启动HT-IDE3000,可通过PC机桌面dpj文件夹下的快捷方式,或开始菜单->程序->HoltekMCUDevelopmentTools->HT-IDE3000,启动该软件,会出现图1.2的画面。
图1.2
如果出现图1.3所示的’UnabletoconnecttoHT-ICE’错误提示信息,是因为在HT-IDE3000中的项目设置是工作在硬件仿真模式(Emulationmode,需使用HT-ICE),但计算机与HT-ICE之间没有连接或连接失败导致。
图1.3
(2)选择菜单Options/Projectsettings,在弹出的对话框中选中DebugOption页(图1.4),在右下角的Mode中勾选Simulation,设置项目工作在软件仿真模式(Simulationmode),则会出现如图1.5所示画面。
图1.4
图1.5
(3)HT-IDE3000是以项目方式来管理用户的文件,所以在开发一个新的应用程序时,必须先建立一个Project。
新建一个项目的方法是选择菜单Project/New,如图1.6。
图1.6
(4)弹出如图1.7所示的对话框,要求使用者给项目命名(项目名称的后缀名为.PRJ);指定项目存取路径;并选择此项目使用的MCU型号。
在本实验中,我们选用HT48R70A单片机。
说明:
MCU型号列表中,有“C”字母的为掩膜版本,“R”为OTP(One-TimeProgrammable)版本,只有“E”字符的为电可擦除可编程MTP型单片机,既含“F”又有“E”字符的为电可擦除可编程flash单片机。
图1.7
(5)设定完成图中相关选项对话框后,按下Finish键即会出现图所示1.8的掩膜选项配置窗口。
让使用者对系统时钟,PA口唤醒,定时/计数器时钟源等进行设置,系统会根据所选定的单片机以及该配置,生成一个掩膜选项文件。
在使用Project菜单的Build命令编译此项目的过程中,系统需要此掩膜选项文件以便生成执行文件。
在项目建立后,可以使用菜单Tools下的ConfigurationOptions命令去修改单片机的掩膜选项,之后必须重新使用Build命令编译项目,否则修改无效。
图1.8
该选项配置根据用户系统需求而设定。
在本次实验中,仅取消看门狗定时复位功能。
(6)配置完毕点击“OK”键后,会弹出图1.9的项目设置对话框。
图1.9
说明如下:
Projectsetting设定Project菜单中Build命令的默认参数值。
在程序开发期间,项目选项依据应用程序的需求而改变。
HT-IDE3000在执行Project菜单中的Build命令时,将根据这些选项的设定生成对应的任务文件及内容。
该设置可以使用菜单Options/ProjectSettings打开再次进行修改。
相关选项的意义说明如下:
·MicroController
项目中的单片机名称。
使用滚动条浏览可使用的单片机,并选择合适的单片机。
·Language(编译器选项)
盛群允许其他的合作厂商为其MCU提供C编译器。
目前你也可以选用Hi-Tech所提供的另一种选择。
·Assembler/CompilerOptions
编译器的命令行选项。
DefineSymbol栏允许使用者对指定的符号定义数值,而所指定的符号则在编译过程中使用。
语法如:
symbol1[=value1][,symbol2[=value2][,...]]
例如:
debugflag=1,newver=3另外,可选中生成列表文件(Generatelistingfile)检查框以便生成源程序列表文件。
·Linkeroptions
指定连接器的选项。
Libraries文字框用来指定被连接器所参考使用的函数库文件。
例如:
libfile1,libfile2也可以按下Browse键来浏览及选择函数库文件。
另外,程序段地址(Sectionaddress)输入框则是用来设定程序段的ROM/RAM地址。
例如:
codesec=100,datasec=40
最后一行的映射文件检查框(Generatemapfile)则是命令连接器生成项目的程序映射文件。
(7)点击图1.9中的确定按钮,建立好项目后,出现如图1.10所示画面,窗口左边的工作区域出现树型目录表示当前项目MCU信息及包含文件。
接下来就是开始编辑此项目所需的程序。
图1.10
(8)执行菜单File/New,即可打开程序编辑窗口,输入源程序。
注意:
使用汇编语言进行单片机程序设计,源程序扩展名为.asm。
图1.11
(9)程序编辑完毕,并保存,命名为led_show.asm,与当前项目之间尚无任何关系,需要将程序加入项目中。
如图1.12,执行Project/Edit,打开图1.15所示的ProjectEdit对话框。
选择源文件后,点击Add按钮,将程序加入此项目中。
图1.12
图1.13
(10)编译项目内的程序。
在Build菜单中,有三种方式可用来编译项目内的程序:
·Assembler/Compiler对项目内的程序进行编译,不生成任何文件。
·Build只对项目内修改后但尚未编译的源程序进行编译,将生成的目标文件连接,并生成任务文件和除错文件,如果HT-ICE的电源已打开,并且与个人计算机相连,则下载任务文件至HT-ICE。
·RebuildAll与Build命令执行的工作相同,其差异在于RebuildAll命令对项目内所有文件进行编译和连接。
执行Build或RebuildAll,对当前项目进行编译和连接,此时“Output”窗口会出现相关的编译信息。
对有语法错误的程序,会显示错误行号及提示信息。
如图1.14。
注意:
程序编译无误后,只是汇编语言语法上没有错误了,并不表示逻辑功能是正确的!
图1.14
(11)若程序没有语法错误,则出现图1.15的画面。
图1.15
(12)选择菜单Window/ROM,Window/RAM,打开ROM,RAM窗口,
图1.16
可以看到程序被存放在ROM中地址为0010h的开始的地方。
图1.17
而RAM中20H-FFH为一般数据存储器空间。
(13)在软件仿真模式下,可用单步执行命令运行程序,说明如下:
•StepInto命令一次只执行一条指令就停止,但是如果所执行的指令是CALL
程序指令时,则会进入此子程序并且停在子程序中的第一条指令处。
•StepOver命令一次只执行一条指令就停止,但是如果所执行的指令是
CALL程序指令时,则不会进入子程序,而是停留在CALL指令后的下一
条指令处,此子程序中所有的指令会被执行,而且寄存器与状态寄存器的
内容也根据执行的结果做改变。
•Stepout命令只能在仿真停在子程序之内时被使用,它会执行当前停在的程
序行和RET指令(包括RET指令)之间所有的指令,然后停留在CALL
指令后的下一条指令处。
注意:
Stepout命令只能被使用在当前的停止点在子程序内的情况下,否则会发生无法预期的结果。
选择Debug/StoppingDebugging终止单步运行。
单步运行时,可选择Window/Variable,Window/Rigister观察变量,寄存器值的改变。
说明:
本实验没有使用硬件仿真,因此无法看到灯的闪烁。
5.附示例程序led_show.asm(MCUname:
HT48R70A-1)
;Program:
TEST1.asm
;Function:
LEDDisplay
#includeHT48R70A-1.INC
MY_DATA.SECTION'DATA'
DEL1DB?
DEL2DB?
MY_CODE.SECTION'CODE'
ORG10H
START:
CLRPAC.0
SETPA.0
REP:
CPLPA
CALLDELAY
JMPREP
DELAYPROC
MOVA,500
MOVDEL1,A
DEL_1:
MOVDEL2,A
DEL_2:
SDZDEL2
JMPDEL_2
SDZDEL1
JMPDEL_1
RET
DELAYENDP
END
6.练习题
将下程序补充完整,将数11H写入ADRES1—ADRES4中。
请使用间接寻址寄存器IAR0和间接寻址指针MP0,并使用循环程序设计。
用软件仿真调试该程序。
#includeHT48R70A-1.INC
DATA.SECTION'DATA'
ADRES1DB?
ADRES2DB?
ADRES3DB?
ADRES4DB?
BLOCKCOUNTDB?
CODE.SECTION'CODE'
START:
MOVA,04H
MOVBLOCKCOUNT,A
MOVA,OFFSETADRES1
…
END
思考题:
1没有用ORG指令定位时,程序被默认存放在ROM何处?
2数据段中,定义的5个变量被分配的RAM地址分别是多少?
3MP0与IAR0的关系?
实验二HTMCU查表指令的使用
1.实验目的:
(1)掌握HTMCU查表指令的使用。
(2)掌握IDE3000软件仿真的使用。
2.实验设备:
硬件:
PC机
软件:
IDE3000
3.查标指令简介:
Holtek各系列单片机的程序存储器(ROM)空间是按页(PAGE)来划分的,一页为256单元(每个单元可能是14bit、15bit或16bit,取决于单片机的型号)。
这样,整个ROM空间正好划分为若干个连续的页。
当前页是针对某一特定的程序指令而言的,指该指令在ROM中所处的页,最后页是指ROM的最后一页。
数据的储存通常由寄存器完成,然而当处理大量的数据时,其庞大与复杂的内容常造成对指定存储器储存上的不便。
为了改善此问题,Holtek单片机允许在程序存储器中设定一块数据可直接存取的区域,称之为表。
单片机ROM中的任何区域都可以用来当表查(不管该区域存放的是程序,还是真正的表格,都可以当表格来查)。
Holtek单片机提供了用于存放表格数据地址的表格指针寄存器TBLP,以及两个用于查表的指令:
TABRDC[m]和TABRDL[m]。
TBLP:
存放某个表格数据的地址,它的值必须在表格读取指令前加以设定,可以被如INC或DEC的指令所改变。
TABRDC[m]:
读取当前页的程序存储器表格内容,将所读取到的低字节存放到数据存储器m,而高字节内容则存到TBLH寄存器。
TABRDL[m]:
读取最后一页的程序存储器表格内容,将所读取到的低字节存放到数据存储器m,而高字节内容则存到TBLH寄存器。
例
(1):
使用TABRDC指令
...
MOVA,60H
MOVTBLP,A;TBLP=60H(POINTOR)
TABRDCA;ACC=34H
NOP;NOPFORWATCHINGTHELOWBYTE
MOVA,TBLH;ACC=12H
NOP
...
ORG60H
DC1234H,3567H;TABLE
...
例
(2):
使用TABRDL指令
...
MOVA,00H
MOVTBLP,A;TBLP=00H(POINTERORLOWPOINTER)
TABRDLA;ACC=77H
NOP;NOPFORWATCHINGTHELOWBYTE
MOVA,TBLH;ACC=12H
NOP;NOPFORWATCHINGTHEHIGHBYTE
...
ORG1F00H;对48x70型MCU,最后一页的起始地址是1F00H
DC1277H,3567H;TABLE
...
4.实验内容:
示例程序实现的功能是找出表中数据最大值。
通过软件仿真(Simulationmode)观察实验结果。
打开软件仿真器的方法见实验一。
选择菜单Window/RAM,Window/Register,Window/Variable,分别打开数据存储器,寄存器和变量窗口;利用菜单Debug/StepInto命令单步运行程序,观察相应值的变化。
如图2.1所示。
被黄色高亮标示的程序行,是第一个被执行的程序行。
图2.1
5.附示例程序max.asm(MCUname:
HT48R70A-1)
#INCLUDEHT48R70A-1.INC
MY_DATA.SECTION'DATA'
MAXDB?
COUNTDB?
TABDATADB?
MY_CODE.SECTION'CODE'
ORG00H
START:
MOVA,10
MOVCOUNT,A
MOVA,0
MOVMAX,A
MOVA,00H
MOVTBLP,A
LOOP:
TABRDLACC
MOVTABDATA,A
SUBA,MAX
MOVA,TABDATA
SZSTATUS.0
MOVMAX,A
INCTBLP
DECCOUNT
SZCOUNT
JMPLOOP
ORG1F00H
DC12H,03H,29H,15H,88H,00H,26H,90H,32H,99H
END
6.练习题:
(1)修改程序,用TABRDC指令实现。
(2)将这十个数按最大到小的顺序排列。
实验三流水灯显示
1.实验目的:
(1)掌握HTHTMCUI/O口控制的编程方法。
(2)掌握S1000软件的使用。
2.实验设备:
硬件:
PC机,电路板,USB并口线
软件:
IDE3000,S1000
3.开发环境简介:
若没有HT-ICE仿真器,HT-IDE集成开发环境还有另外一种软硬件组成。
硬件方面,通过PC端USB口连接印刷电路板;软件采用IDE3000和EverProS1000,S1000软件是盛群公司提供的一种MTP(可多次烧写)使用者工具,可将在IDE3000中BUILD源程序后生成的MTP文件多次烧写至电路板上MCU中,并运行程序进行验证。
这种方式是一个认识HOLTEK8位微控制器的快捷便利、低成本途径。
该系统配置如图3.1:
图3.1
本次实验采用该种系统配置。
4.实验步骤
以实验一示例程序为例,利用PA.0I/O引脚控制LED产生一亮一灭的闪烁效果。
实验连线如下图所示。
图3.2
(1)新建项目,MCU选用HT48F50E。
注意:
本次实验需选用可多次编程MTP型单片机,即MCU型号中需带“F”或“E”字符,如HT48F50E,HT48E50。
连接后才能生成.MTP文件,(该文件用来下载到目标电路板上的单片机中)。
选用此类型单片机,项目只能工作在硬件仿真模式(EmulationMode),即软件仿真模式不可选。
对于连接中出现的“Error(D1011):
没有连接HT-ICE”错误可忽略。
(2)输入源程序,加入项目中。
(3)编译连接之后,若程序没有语法错误,OUTPUT窗口显示生成MTP文件,如图3.3。
生成MTP文件
图3.3
(4)按下开始菜单,在程序/HoltekMCUDevelopmentTools中选择EverProS1000,会弹出如图的主窗口。
注意:
在打开软件之前,请使用USB数据线连接PC机和目标板。
图3.4
(5)选择菜单File/Open,在如图3.5所示对话框中选择刚才在IDE3000中生成的mtp文件。
图3.5
文件内容就会被显示在此窗口(如图3.6)。
窗口左侧框内显示程序的二进制代码,窗口右侧框内显示要被写入数据EEPROM的代码。
图3.6
(6)选择菜单下载/所有,如图3.7。
将程序和数据代码下载到MTP单片机HT48F50E的对应地址中去。
下载菜单包含如下命令,可对MTP单片机进行编程:
·程序将当前打开的程序代码写入MTP单片机程序存储空间中。
·数据将当前打开的数据代码写入MTP单片机数据存储空间中。
·所有将当前打开的程序和数据代码写入MTP单片机相对应的存储空间中。
·擦除程序清除MTP单片机程序存储空间中的代码。
·擦除数据清除MTP单片机数据存储空间EEPROM中的代码。
·擦除所有清除MTP单片机程序和数据存储空间EEPROM中的代码。
图3.7
下载程序时,会出现显示下载百分比的进度条。
下载结束后,出现如图3.8所示对话框。
图3.8
(12)选择工具/复位命令运行该程序,图3.9。
图3.9
可以看到电路板上连接PA.0引脚的LED灯产生闪烁。
停止程序运行选择工具菜单下的掉电命令。
4.练习题
(1)编写一个流水灯程序,利用PA口输出控制,循环点亮8个LED灯(向左向右移动均可),实验连线如图3.10所示。
图3.10
提示:
请参考实验一示例程序;及左移指令(RL,RLC)、右移指令(RR,RRC)。
(2)修改程序,改变流水灯移动方向,即移动方向交替。
实验四按键检测及数码管显示
1.实验目的:
(1)掌握键盘扫描的方法。
(2)掌握七段数码管的显示方法。
2.实验设备:
硬件:
PC机,电路板,USB并口线
软件:
IDE3000,S1000
3.目标板七段显示器,4*4按键阵列介绍
七段显示器由8个LED组合而成,其结构如图所示。
a
常用的七段显示器分为共阳与共阴两种类型。
本实验使用的fb
七段显示器是共阳型的,其显示字形由阴极端以低电位来控制,g
即在相应引脚上输入低电平,点亮其对应的LED。
例如,要显ec
示字符1或2,得到得七段编码为:
●Dp
d
DP
G
F
E
D
C
B
A
“1”
1
1
1
1
1
0
0
1
“2”
1
0
1
0
0
1
0
0
“5”
1
0
0
1
0
0
1
0
据此可写出所有字符的七段编码。
目标板上共有4个七段数码管,COM0—COM3引脚用于选择需要点亮的七段数码管,输入低电平点亮。
SA—SP引脚分别对应A—P8个LED输入端。
输入为低电平点亮对应LED灯。
在微控制环境下,键盘输入为用户最常使用的与单片机沟通的接口。
本目标板上有一个4*4键盘。
引脚KA0—KA3用于选择键盘的列,引脚KB0—KB3用于选择键盘的行。
通常检测哪一个按键被按下的方法是:
利用单片机依次向KA0—KA3输出0,然后再去读KB0—KB3的值。
如果读回的值为”1111”,则表示没有键被按下。
KA0—KA3,KB0—KB3行列对应关系如下:
KB0
KB1
KB2
KB3
KA0KA1KA2KA3
例如当向KA0输出0时,若KB0—KB3读回的值为“0111”,说明1键被按下.
4.练习题
(1)将参考程序补充完整,重复扫描1,5两个按键,当其中一个按键被按下时,利用一个七段数码管显示按键编号。
提示:
编号为1,5两个按键在同一列,要判断哪一个被按下,只需向KA0输出0,然后读回KB3—KB0的值。
若读回值为“1110”,说明1键被按下;读回值为“1101”,说明5号键被按下。
可通过带进位的移位指令判断0出现的位置,从而判断被按下哪个键。
要在七段数码管上显示数字,需要将该数字的七段编码写入SA—SP。
A.实验连线如图4.1所示。
图4.1
B.程序参考流程图如图4.2:
否
图4.2
C.参考程序:
#includeHT48F50E.INC
data.section'data'
bufdb?
code.section'code'
org20h
start:
clrpac;指定PA口引脚为输出。
mova,0fh
movpbc,a;指定PB口低4位引脚为输入,高4位引脚为输出。
…
loop:
mova,pb;读PB口的值。
movbuf,a
anda,0fh;取PB口低4位,
suba,0fh;若相减为0,表示PB口低4位值全为1,同时z被置位,无键按下。
…
jmploop
rrcbuf
szstatus.0;判断C标志位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 实验 指导书