实验箱指导书上册v2_第1页
实验箱指导书上册v2_第2页
实验箱指导书上册v2_第3页
实验箱指导书上册v2_第4页
实验箱指导书上册v2_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上册配合 nSP十六位单片机实验箱使用科技大学计划编著科 技 大 学 计 划 技 术 资 料前言为了让老师和同学更好地学习 SPCE061A 单片机科技公司设计了 nSP十六位单片机实验箱,并设计了基于这个实验箱的 48 个实验,这些实验基本上用到了 SPCE061A 的全部硬件功能模块,每个实验都以16 位单片机应用基础书为理论基础。本书主要有四大部分:第一章基础实验。这章主要是基于 SPCE061A 硬件设计的 21 个实验,针对 SPCE061A 的各个硬件模块。这些实验是为了让老师或者同学掌握 SPCE061A 的硬件结构、硬件模块、工作原理和简单的编程方法。第二章语音实验。这章是各个

2、语音算法的不同实验,每一个实验针对一种语音算法或者不同语音算法混合使用的方法,具有代表性。设计这些实验的目的是让老师或者同学学会音算法的使用方法。第三章分立模组实验。这部分是基于 nSP十六位单片机实验箱的一些分立模组而设计的实验,从液晶显示到 USB 通讯到外部SPCE061A 扩展一些常用功能器件的方法。器的扩展,选用这些实验是为了让老师或者同学学会第四章综合实验,综合实验里一共设计了 12 个实验,涉及了从简单的几个模块的实验到复杂的实现一个完整功能的实验,比如电压测量表,笔等,目的是让老师或者同学从整体上掌握利用SPCE061A 开发设计的过程,并学会 SPCE061A 单片机比较复杂

3、的编程方法。全书的实验由浅入深,由部分到整体,涉及了从基本结构到模块再到应用的全部实验,老师或者同学按照实验顺序从基本的编程到功能实现的编程再到复杂的编程,一方面可以很好的学习和掌握单片机的基本知识,一方面可以很容易的应用单片机进行设计,为以后的课程设计、毕业设计或者工作中的开发设计奠定了良好的基础。本书涉及的全部范例代码在 IDE参考。的安装路径下都可以找到。老师和同学在实验过程中可以在编写过程中难免会有错误纰漏,请广大读者朋友批评指正。科技大学计划2005.8.19目录前言2目录3第 1 章SPCE061A 基础应用实验1实验一实验二实验三实验四实验五实验六实验七实验八实验九实验十熟悉 n

4、SP IDE 集成开发环境下汇编语言程序的编写1熟悉 nSP IDE 集成开发环境下 C 语言程序的编写12使用汇编语言实现A 口的输出15使用 C 语言实现 A 口的输出19使用汇编语言实现A 口作为输、B 口作为输出口22使用 C 语言实现 A 口作为输、B 口作为输出口27定时器 Timer A/B30系统时钟33FIQ 中断36IRQ0/IRQ1/IRQ2 中断41实验十一实验十二实验十三实验十四实验十五实验十六实验十七实验十八实验十九实验二十IRQ4 中断44IRQ5 中断48IRQ6 中断51外部中断EXT1、EXT254键唤醒58UART63A/D 转换68双通道D/A73一路输

5、入的76片内 2K SRAM 读写79实验二十一 32K FLASH 读写82第 2 章 语音实验88实验一实验二实验三实验四实验五实验六实验七SACM_A2000 自动 SACM_A2000 手动 SACM_S480 自动SACM_S480 手动88107113120SACM_A2000 与 SACM_S480 混合127SACM_DVR135SACM_MS01144第 1 章SPCE061A 基础应用实验第1章SPCE061A 基础应用实验实验一熟悉 nSP IDE 集成开发环境下汇编语言程序的编写【实验目的】1.2.3.熟悉 SPCE061A 单片机常用的汇编指令;学会使用 SPCE06

6、1A 单片机汇编语言以及伪指令构造汇编程序;掌握 nSP IDE 集成开发环境的一般使用方法。【实验设备】1.2.装有Windows 系统和nSP IDE 集成开发环境的PC 机一台,nSP十六位单片机实验箱一个。本实验用到的实验箱硬件模块为:SPCE061A及周边电路模块(包含 32 个 I/O 口)。【实验要求】1.编程要求:编写一个汇编语言程序。2.3.实现功能:从 1 到 100 进行累加,并把计算结果保存在Sum单元里。实验现象:实验过程中,单步运行时,可通过 IDE 的调试工具寄存器观察窗口(Register Window)观察通用寄存器的变化,通过变量观察窗口(Toggle Wa

7、tch)观察变量 Sum 的变化;累加结束后保存累加结果:通过变量观察窗口(Toggle Watch)可以观察到变量 Sum 的值为 5050(十六进制表示为 0 x13BA)。【实验原理】SPCE061A 的汇编指令按其功能主要有数据传送指令、算术指令、逻辑指令、转移指令和控制指令。在程序运行中主要用到 r1r4 四个通用寄存器和 BP(r5)、SP、PC、SR 四个特殊功能寄存器。其中 r1r4一般作为目标寄存器或源寄存器,参与数据传输或算术逻辑运算。【程序流程】初始化寄存器 r2 作为累加器,初始值为 0;寄存器 r1 为加数,初始值为 1。初始化操作完成后即进入累加循环;在累加循环当中

8、,累加器的数值加上加数,并保存在累加器当中,加数自加 1;当加数加到了 100,退出累加循环,把 r2 累加的结果送到Sum单元中。程序流如图 1-1 所示。1开始加数自加1加数是否大于100?Y清看门狗图 1-1 程序流【实验步骤】鉴于本实验为本书的第一个实验,所以在此介绍一些有关 unS将不再重述。E 操作的步骤;在之后的实验中,1.安装 IDE:双击安装如下图标,开始安装 IDE 集成开发环境,按照默认选项安装好 IDE。两点说明:安装好 IDE 后,在 C 盘的 Program Files 文件夹会出现一个 Sunplus 文件夹,打开Sunplus 文件夹有如图 1-2 所示的文件。

9、2变量累加N初始化寄存器、初始化变量第 1 章SPCE061A 基础应用实验图 1-2 安装好 IDE 后出现在 Sunplus 的文件夹打开 unSE Common 文件夹,包含三个文件夹,如图 1-3,其中本书所有的范例程序、驱动程序、语音资源等用户常用资源都在 Exle 文件夹里的 SPCE061A 文件夹包含,如图1-4。图 1-3 打开 unSE Common 文件夹图 1-4 SPCE061A 包含的文件夹注意:如果按照这种默认安装方法,书中所有的“IDE 的安装路径”指是 C:Program FilenplusunSPIDE CommonExle 路径。2.打开 IDE 环境。打

10、开后的界面如图 1-5。3图 1-5 打开 IDE 后的界面3.建立一个新的工程按前面步骤打开 IDE 环境后,建立一个新的工程,工程名为:ex01_asm_ADD1-100,建立方法如下:在 File 下拉菜单里点击 New,如图 1-6。图 1-6 新建工程或者文件点击 New 后会出现下面一个框,在框的 File 编辑框内写上工程名称 ex01_asm_ADD1-100,在 location 编辑框选择工程路径。如图 1-7。4第 1 章SPCE061A 基础应用实验图 1-7 新建工程框点击“OK”,就会看到图 1-8 所示的界面,这个界面为创建新工程后的的界面。图 1-8 新工程界面

11、4.在该工程的源文件夹(Source Files)下建立一个新的汇编语言文件(后缀为:.asm)。按照图1-6同样的方法打开建立新文件框,如图 1-9。5图 1-9 新文件建立框文件类型选择为“SE Asm File”, 即汇编文件;在 File 框内填写新建文件名,这里命名为“main”,点击“OK”,完成新建“main.asm”文件操作。建立好 main.asm 文件后,用户可以在 FileView 中双击 main.asm,以打开该文件;打开后可以看到如图1-10 所示界面。6第 1 章SPCE061A 基础应用实验图 1-10 新文件界面5.在图 1-10 所示的 main.asm 文

12、件中按照程序流编写汇编代码。6.的“Project-Select Body”,或者直接点击图标,打开 Select Body编写完代码后,选择框;按如图 1-11 选择 Body。Body Name 选择 SPCE060A_061A(以后的全部实验中都这样选择)。图 1-11仿真 Body 选择7.在 IDE 环境中按图1-12 所示 Rebuild all,按图 1-13 椭圆框所示选择调试图标。7图 1-12 Rebuild All图 1-13 选择调试图标8.如图 1-14,把实验箱区的 S19 选择开关中 ICE 拨到“ON”位置,使实验箱当中的 SPCE061A处于调试、状态,以便将

13、实验程序到当中。其他都拨到“OFF”位置。区中 J10 接 Probe,打开区电源开关ER。8第 1 章SPCE061A 基础应用实验312图 1-14 实验箱设置及连接9.()(或者按 F8 键),这时候 PC 运行指针指向 main 函数的第一条语句,如图1-15。图 1-15 程序后的 IDE 集成开发环境10. 点击图标(或者按 Alt+C 键)打开变量观察窗口,点击图标(或者按 Alt+3 键)打开寄存器观察窗口,点击图标(或者按 A键)打开 Toggle Disassembly 窗口,点击图标(或者按 Alt+2 键)打开 Memory 观察窗口;所有这些窗口打开后如图 1-16。

14、9编辑窗口Workplace窗口Toggle Disassembly窗口Memory观察窗口变量观察窗口寄存器观察窗口图 1-16 打开各个观察窗口11. 在变量观察窗口的 name 项输入变量 Sum;单步运行()(或者按 F11 键),如图 1-17;通过Toggle Disassembly 窗口观察程序的运行情况,通过变量观察窗口的 value 项观察 Sum 的值,通过寄存器观察窗口观察寄存器的变化情况;另外,变量观察窗口的 Address 项显示的是分配给变量的地址空间。图 1-17 单步运行10第 1 章SPCE061A 基础应用实验12. 累加结束时,检查通过变量观察窗口的 va

15、lue 项观察到 Sum 的值是否为 5050(十六进制表示为0 x13BA)。如图1-18。图 1-18 程序累加结束后界面注:1)如果全速运行,点击图标或者按 F5 键。2)图标或者按 Ctrl+Shift+F5 键。运行过程中如果没有看清楚,需要重新运行,点击3)需要在程序中添加断点,先选中想添加断点的语句,点击或者按 F9 键。相反,去掉断点按或者按 Shift +F9 键。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061AexaseExaex01_asm_ADD1-100。科技大学计划()专区可以到相关资料。【练习】在 nSP IDE 下用汇编语言编写一个

16、使用冒泡法排序的程序,排列顺序为从小到大的顺序。.iramarray: .dw 5,89,40,12,55,32,18,46,77,2111实验二熟悉 nSP IDE 集成开发环境下 C 语言程序的编写【实验目的】1.2.熟悉 nSP IDE 集成开发环境的使用方法;掌握用 SPCE061A 单片机 C 语言编写应用程序的方法。【实验设备】1.2.装有Windows 系统和nSP IDE 集成开发环境的PC 机一台,nSP十六位单片机实验箱一个。本实验用到的实验箱硬件模块为:SPCE061A及周边电路模块(包含 32 个 I/O 口)。【实验要求】1.编程要求:编写一个 C 语言程序。2.3.

17、实现功能:从 1 到 100 进行累加,并把计算结果保存在变量 Sum 中;实验现象:打开变量观察窗口观察变量 Sum 的变化,累加结束时变量 Sum 为 5050(16 进制表示为 0 x13BA)。【实验原理】nSP的指令系统算术逻辑操作符与 ANSI-C 算符大同小异,如表1-1。表 1-1 nSP指令的算术逻辑操作符nSP支持 ANSI-C 中使用的基本数据类型,如表 1-2。12算术逻辑操作符作用+、-、*、/、%加、减、乘、除、求余运算&、|逻辑与、或&、|、按位与、或、异或、右移、=、=、= = 、!=大于、大于等于、小于、小于等于、等于、不等于=赋值运算符?:条件运算符,逗号运

18、算符*、&指针运算符.分量运算符sizeof求字节数运算符 下标运算符第 1 章SPCE061A 基础应用实验表 1-2 nSP对 ANSI-C 中基本数据类型的支持【程序流】主程序流如图 1-19 所示。先定义一个累加值变量 Sum 和一个加数变量 i,初始化 Sum=0,i=1,进入累加循环;在累加循环中,Sum 和 i 相加,并把相加结果保存在 Sum 中,i 自加 1,判断 i 是否大于100,如果没有则继续累加,如果大于,则退出累加循环,进入主程序循环,执行清看门片机复位。作,防止单开始加数自加1加数是否大于100?Y清看门狗图 1-19 主程序流【实验步骤】1.2.和实验一同样的方

19、法,将 nSP IDE 环境打开后,建立一个新工程 ex02_c_ADD1-100。在该工程的源文件夹(Source Files)下建立一个新的 C 语言文件,命名为 main。建立方法如图13变量累加N初始化加数变量和累加变量数据类型数据长度(位数)值域char16-32 76832 767short16-32 76832 76716-32 76832 767long32-2 147 483 6482 147 483 647unsigned char16065 535unsigned short16065 535unsigned16065 535unsigned long3204 294 9

20、67 295float32以IEEE 格式表示的 32 位浮点数double32以IEEE 格式表示的 32 位浮点数1-20,注意椭圆框内和实验立汇编语言文件的不同。图 1-20 建立新的c 语言文件3.4.5.6.在 main.c 文件里编写 C 语言代码。Rebuild All。选择调试模式(ICE)。、单步运行。打开变量观察窗口观察变量 Sum 的变化,观察累加结束时 Sum 是否为 5050(16 进制表示为0 x13BA)。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061AexaseExa ex02_c_ADD1-100。科技大学计划()专区可以到相关资

21、料。【练习】在 nSP IDE 下用 C 语言编写一个使用冒泡法排序的程序,排列顺序为从小到大的顺序。Array = 5,89,40,12,55,32,18,46,77,2114第 1 章SPCE061A 基础应用实验实验三使用汇编语言实现 A 口的输出【实验目的】1.2.掌握 SPCE061A 单片机汇编语言的编程方法;掌握 IOA 端口作为普通输出口时的使用方法。【实验设备】1.装有 Windows 系统和 nSP IDE 集成开发环境的 PC 机一台,nSP十六位单片机实验箱一个。2. 本实验用到的实验箱硬件模块为:SPCE061A二极管电路模块。及周边电路模块(包含 32 个 I/O

22、口),发光【实验要求】1.2.3.编程要求:编写一个汇编语言程序。实现功能:通过 IOA 口输出的数据控制 8 个发光二极管的点亮与熄灭。实验现象:8 个发光二极管动态点亮和熄灭,并且循环显示,点亮与熄灭状态顺序如下表 1-3所示。其中,“”表示二极管是点亮状态,“”表示二极管是熄灭状态。表中 D4D11 为实验箱上发光二极管电路模块中从左到右的 8 个发光二极管。表 1-38 个发光二极管状态15序号D4D5D6D7D8D9D10D110123456789254255256257【实验原理】1.I/O 口的设置SPCE061A 有 32 个可编程 I/O 端口,分为两组:IOA015 口和

23、IOB015 口,其中每一个端口都可以被单独设置为输入或者输出口。SPCE061A 的I/O 口的输入输出方式是通过方向控制向量 Dir、属性向量 Attrib 和数据向量 Data 三个向量组合控制的。I/O 口的组合控制设置如表 1-4 所示。表 1-4 I/O 端口的组合控制设置注:端口位默认为带下拉电阻的输入管脚。按照上面的组合控制设置,当 IOA 的低八位设置为同相低电平输出口时,Dir、Attrib 和 Data 三个向量的设置如下表 1-5 所示。表 1-5 IOA 的低 8 位设置为同相低电平输在 SPCE061A 的 I/O 口被设置为输出口时,当Data 寄存器中的某一位写

24、入“1”时,该位所对应的端口输出2.;写入“0”时,输出低电平。发光二极管的点亮与熄灭如下图 1-21 实验箱发光二极管的电路原理图。当 IO 端输出点亮;输出低电平时,发光二极管截止,即二极管熄灭。时,发光二极管导通,即二极管D11R1IO220图 1-21 发光二极管电路原理图【硬件连接】如图 1-22 硬件连接图所示,IOA 的低八位 IOA0IOA7 分别依次接 8 个发光二极管D11D4,即用 8pin排线连接实验箱的 J26 和 J16,注意这里的连接顺序为 J26 的第 0 号引脚连接 J16 的第 7 号引脚,不要接反了。(在以后的描述中如果出现类似“IOA0IOA7 分别依次

25、接 8 个发光二极管 D11D4”,就说明 IOA0接发光二极管 D11;如果没有特别说明,就是正常的连接方式,即 J26 的第 0 号引针接 J16 的第 0 号引针;在连接过程中敬请读者注意。另外,本书上出现的所有的标号类似 J26、J16 等都是基于本的实验箱,如果读者用的是其他版本的实验箱,以电路连接图为准。)版本 V3.0 版16向量b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0Dir0000000011111111Attrib0000000011111111Data0000000000000000DirAttribData功能功能描述000下拉带下拉电

26、阻的输入方式001上拉带上拉电阻的输入方式010悬浮悬浮式输入方式011悬浮悬浮式输入方式10X反相输出Data 数据位反相输出方式11X同相输出Data 数据位同相输出方式第 1 章SPCE061A 基础应用实验D11IOA0D10IOA1D9 IOA2D8 IOA3D7IOA4D6IOA5D5IOA6D4 IOA7图 1-22 硬件连接图【程序流】根据实验要求 8 个发光二极管的显示状态,程序的主循环当中,输出到 IOA 口低八位的数据每次输出显示后要加 1;输出显示的数据可用变量保存,也可在程序运行当中通过P_IOA_Buffer(0 x7001)寄存器得到上次输出数值。主程序流如图 1

27、-23 所示:开始图 1-23 主程序流注意:为了避免因为延时时间长导致看门狗复位,延时子程序里需要清看门作。选择合适的延时时间,本实验中选择大约 0.2s 的延时。因为当延时时间太短时,8 个发光二极管的状态变化太快,还没来及看一个状态,就已经变化到下一个状态,不便观察;而当延时时间太长时,发光二极管停留在一个状态很长时间,也不便于观察 8 个发光二极管的状态变化,所以要选择合适的延时时间。【实验步骤】1.按照流编写一个汇编语言程序。17IOA口低八位数据加1延时初始化A口为同相低电平输出口 2.3.利用和前面实验相同的方法 Rebuild All。如图 1-24 所示,区的 S19 选择开

28、关中 ICE 拨到“ON”位置,其他都拨到“OFF”位置。区和区中 JP4 和 JP7 的跳线全部断开,区 J16 和 J26 按照图 1-22 所示利用 8pin 排线连接,即把 IOA07 依次连接 8 个发光二极管 D11D4,区中 J10 接 Probe。把所有排线、跳线和开关都连接好之后,打开区电源开关ER。1672543图 1-24 实验箱硬件连接和其他设置4.在 IDE 环境中选择调试图标,注意 Body 选择和实验一相同。5.1-24 区发光二极管 D4D11 的变化,检查与实验要求是否、运行,观察图。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061

29、AexaseExaex03_asm_IOA_OUT。科技大学计划()专区可以到相关资料。【练习】利用汇编语言编写程序,实现任选 8 个 IOB 口输出控制 8 个发光二极管的点亮与熄灭。18第 1 章SPCE061A 基础应用实验实验四使用 C 语言实现 A 口的输出【实验目的】1.2.掌握 SPCE061A 单片机 C 语言的编程方法;掌握 IOA 口作为普通输出口时的使用方法。【实验设备】1. 装有 Windows 系统和 nSP IDE 集成开发环境的 PC 机一台,nSP 十六位单片机实验箱一个。2. 本实验用到的实验箱硬件模块为:SPCE061A极管电路模块。及周边电路模块(包含 3

30、2 个 I/O 口),发光二【实验要求】1.2.3.编程要求:编写一个 C 语言程序。实现功能:通过 IOA 口输出的数据控制 8 个发光二极管的点亮与熄灭。实验现象:8 个发光二极管动态点亮和熄灭,并且循环显示,点亮与熄灭状态顺序如下表 1-6所示。其中, “”表示二极管是点亮状态,“”表示二极管是熄灭状态。表中的为实验箱上发光二极管电路模块中从左到右的 8 个发光二极管。D4D11表 1-68 个发光二极管状态【实验原理】SPCE061A 的 I/O 口工作原理及发光二极管点亮与熄灭原理参见本章实验三。19序号D4D5D6D7D8D9D10D110123456789254255256257

31、SPCE061A 单片机 C 语言编程设置端口的操作是通过指针来实现的。nSP IDE 集成开发环境编译器所认可的指针是 16 位的。比如要设置 IOA 口为同相低电平输出口时,可以通过下面几句去实现。#define P_IOA_Data(volatile unsigned*)0 x7000#define P_IOA_Dir(volatile unsigned*)0 x7002#define P_IOA_Attrib(volatile unsigned*)0 x7003*P_IOA_Dir = 0 x f;*P_IOA_Attrib = 0 x f;*P_IOA_Data = 0 x0000;

32、其中,前面三条语句是定义指向 0 x7000(IOA 数据向量单元)、0 x7002(IOA 方向控制向量单元)和 0 x7003(IOA 属性向量单元)这三个向量单元的指针;后面三条语句用来给前面的三个向量单元送数据。比如,#define P_IOA_Data(volatile unsigned*)0 x7000 和*P_IOA_Data = 0 x0000 两条语句表示P_IOA_Data 指向 0 x7000 这个地址单元,然后通过指针操作的方式把 0 x0000 这个数据送到 0 x7000 地址单元。【硬件连接】硬件连接图如图本章实验三图 1-22 硬件连接图。同样是 IOA 口的低

33、八位 IOA07 连接 8 个发光二极管 D11D4,即用 8pin 排线连接实验箱的 J26 和 J16。注意连接顺序和实验三相同。【程序流】根据实验要求的二极管状态,程序中 IOA 口低八位的数据每次显示时要加 1。为便于观察,程序中延时时间选择大约 0.2s。程序流如图 1-25 所示:开始图 1-25 主程序流20清看门狗延时A口低八位数据加1初始化A口为同相低电平输出口第 1 章SPCE061A 基础应用实验【实验步骤】1.2.3.4.5.6.新建一个工程 ex04_c_IOA_OUT。按照前面实验同样的方法编写 C 语言程序。Rebuild All。按照和本章实验三相同的方法进行硬

34、件连接、跳线设置和开关选择。在 IDE 集成开发环境下选择调试图标,、运行。观察各个二极管亮灭状态和寄存器状态,分析是否和实验要求相同。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061AexaseExaex04_c_IOA_OUT。科技大学计划()专区可以到相关资料。【练习】利用 C 语言编写程序,实现任选 8 个 IOB 口输出控制 8 个发光二极管的点亮与熄灭。21实验五使用汇编语言实现 A 口作为输、B 口作为输出口【实验目的】掌握利用汇编语言来实现 A 口作为输、B 口作为输出口的方法。【实验设备】1.装有 Windows 系统和 nSP IDE 集成开发环

35、境的 PC 机一台,nSP十六位单片机实验箱一个。本实验用到的实验箱硬件模块为:SPCE061A及周边电路模块(包含 32 个 I/O 口),发光二极管电路模块,高低电平发生按键电路模块。2.【实验要求】1.2.编程要求:编写汇编语言程序。实现功能:IOA 低八位端口作为按键输,IOB 低八位端口作为输出口,控制 8 个发光二极管,实现键控 LED 灯(发光二极管)的显示。实验现象:不同的发光二极管点亮表示有不同的键按下。当第一个按键按下时,第一个发光二极管点亮,第 i(1i8)个按键按下时,第 i(1i8)个发光二极管点亮。3.【实验原理】1.I/O 口的设置SPCE061A 的I/O 口可

36、以被单独定义为输入或者输出口,它们的输入输出方式是由方向控制向量 Dir、属性向量 Attrib、数据向量 Data 的组合设置确定的,组合控制设置表如本章实验三表 1-4。比如 IOA 口低八位被设置为带下拉电阻的输、IOB 口低八位被设置为同相低电平输出口,设置如表 1-7。表 1-7 IOA07 为带下拉电阻的输、IOB07 为同相低电平输出口SPCE061A 输出的高低电平及发光二极管的点亮与熄灭原理在实验三中有详细说明,不再赘述。2.高低电平发生按键电路模块工作原理实验箱高低电平发生按键电路的原理图如图 1-26 所示。IO 端口设置为带下拉电阻的输,当键按下时,在 IO 端口可检测

37、到;不按时,IO 端就保持低电平。VCCS20IO22地址单元向量b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0P_IOA_DirDir0000000000000000P_IOA_AttribAttrib0000000000000000P_IOA_DataData0000000000000000P_IOB_DirDir0000000011111111P_IOB_AttribAttrib0000000011111111P_IOB_DataData0000000000000000第 1 章SPCE061A 基础应用实验图 1-26 高低电平发生按键电路模块原理图【硬件

38、连接】硬件连接图如图 1-27 所示。IOA07 连接 8 个按键 S20S27,IOB07 连接 8 个发光二极管 D4D11,即用 8pin 的排线分别连接 J18 与 J26、J16 与 J28,1*8 键盘左边的选择开关 S28 拨到上方(即靠近实验箱上S28字符的位置)。VCCS20D4 IOB0 IOA0 S21 IOA1S22 IOA2S23 IOA3S24 IOA4S25 IOA5S26 IOA6S27 IOA7D5 IOB1D6 IOB2D7 IOB3D8 IOB4D9 IOB5D10 IOB6D11 IOB7图 1-27 硬件连接图【程序流】1.主程序流初始化 I/O 口:

39、初始化 IOA 低八位为带下拉电阻输,IOB 低八位为同相低电平输出口。进入主程序循环,调用键盘程序,取键值。判断键值是否为 0,如果不为 0,把键值送到 IOB 口,控制点亮相应的发光二极管,清看门狗;如果为零,直接清看门狗。主程序流如图 1-28:23开始Y键值是否为0N清看门狗图 1-28 主程序流2.键盘程序流键盘程序是利用延时的方法进行消抖处理的:先IOA 口键值保存在寄存器,判断读回值是否为零,为零则表示没有键按下,返回零;非零则延时大约 30ms 后再次键值是否相同,如果相同则返回键值,否则返回零。键盘程序流IOA 口键值,比较两次的如图1-29。24把键值送到IOB口的低八位控

40、制显示调用键盘程序取键值初始化I/O口第 1 章SPCE061A 基础应用实验开始Y输入是否为零?NN两次数据是相等?Y置返回键值为零返回键值图 1-29 键盘程序流【实验步骤】1.2.3.新建一个工程 ex05_asm_IOA_IN_IOB_OUT,编写汇编程序。 Rebuild All。硬件连接和设置:如图 1-30,区的 S19 选择开关中 ICE 拨到“ON”位置,其他都拨到“OFF”位置;、区 JP3、JP4、JP5、JP7、JP6 跳线中与 IOA07 及 IOB07 有关的全部断开;按照图 1-27硬件连接图用排线连接区 J26 与 J18 和区中J28 与 J16 接口电路,高

41、低电平发生按键左边的S28 开关拨向上方(标 H 的一端),即让键盘的公共端接到(VCC);区 J10 连接 probe;打开区电源开关ER。25置有效返回键值再次IOA端口低八位输入延时消除抖动IOA端口低八位输入312897654图 1-30 实验箱硬件设置4.在 IDE 集成开发环境中选择调试图标,运行。5.按任意一个按键,观察发光二极管,验证是不是和实验要求的现象。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061AexaseExaex05_asm_IOA_IN_IOB_OUT。科技大学计划()专区可以到相关资料。【练习】使用汇编语言实现 A 口作为输出口、B

42、 口作为输:选择 A 口的任 8 位连接 8 个发光二极管,B口的任 8 位连接 8 个高低电平发生按键,和本实验要求类似,即当按不同键时要求不同的发光二极管点亮。26第 1 章SPCE061A 基础应用实验实验六使用 C 语言实现 A 口作为输、B 口作为输出口【实验目的】掌握利用 C 语言来实现 A 口作为输、B 口作为输出口的方法。【实验设备】1.装有 Windows 系统和 nSP IDE 集成开发环境的 PC 机一台,nSP十六位单片机实验箱一个。2.本实验用到的实验箱硬件模块为:SPCE061A极管电路模块,高低电平发生按键电路模块。及周边电路模块(包含 32 个 I/O 口),发

43、光二【实验要求】1.2.编程要求:编写 C 语言程序。实现功能:IOA 口低八位接键盘,IOB 口低八位接 8 个发光二极管,按下按键,控制点亮对应的发光二极管。实验现象:不同的发光二极管点亮表示有不同的键按下。当第一个按键按下时,第一个发光二极管点亮,第 i(1i8)个按键按下时,第(1i8)个发光二极管点亮。3.【实验原理】SPCE061A I/O 口的工作原理、发光二极管点亮与熄灭原理、高低电平发生按键的工作原理、利用 C语言对 SPCE061A 进行操作的原理详见实验三到实验五。【硬件连接】硬件连接图如本章实验五图 1-27 所示。IOA07 连接 8 个按键 S20S27,1*8 键

44、盘左边的选择开关S28 拨到上方(即靠近实验箱上S28字符的位置);IOB07 连接 8 个发光二极管 D4D11,即用 8pin的排线分别连接 J18 与 J26、J16 与 J28。【程序流】1.主程序流和上一实验相同,初始化 I/O 口:初始化 IOA 低八位为带下拉电阻输,IOB 低八位为同相低电平输出口。进入主程序循环,调用键盘程序,取键值。判断键值是否为 0,如果不为 0,把键值送到 IOB如图 1-31 所示。口,控制点亮相应的发光二极管,清看门狗;如果为零,直接清看门狗。主程序流27开始Y键值是否为0N清看门狗图 1-31 主程序流2.键盘程序流键盘处理方法和上一实验相同,利用

45、延时的方法进行消抖处理的:先IOA 口键值保存在寄存器,判断读回值是否为零,为零则表示没有键按下,返回零;非零则延时大约 30ms 后再次IOA 口键值,1-32。比较两次的键值是否相同,如果相同则返回键值,否则返回零。键盘程序流如图28把键值送到IOB口的低八位控制显示调用键盘程序取键值初始化I/O口第 1 章SPCE061A 基础应用实验开始Y输入是否为零?NN两次数据是相等?Y置返回键值为零返回键值图 1-32 键盘程序流【实验步骤】1.2.3.4.5.编写 C 语言程序。 Rebuild All。按照和本章实验五相同的方法连接硬件和进行硬件设置。、运行。按任意按键,观察发光二极管状态,

46、判断是不是符合实验要求的实验现象。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061AexaseExaex06_c_IOA_IN_IOB_OUT。科技大学计划()专区可以到相关资料。【练习】使用 C 语言实现 A 口作为输出口、B 口作为输:选择 A 口的任 8 位连接 8 个发光二极管,B 口的任 8 位连接 8 个高低电平发生按键,与实验要求类似,当按不同键时要求不同的发光二极管点亮。29置有效返回键值再次IOA端口低八位输入延时消除抖动IOA端口低八位输入实验七定时器 Timer A/B【实验目的】1.2.3.通过实验熟悉定时器 Timer A/B 的工作原理。

47、掌握预置数单元 P_TimerA/B_Data 和定时控制单元 P_TimerA/B_Ctrl 的设置方法掌握定时器 Timer A/B 的编程方法。【实验设备】装有 Windows 系统和 nSP IDE 集成开发环境的 PC 机一台,nSP十六位单片机实验箱一个,示波器一台。1.2.本实验用到的实验箱硬件模块为:SPCE061A二极管电路模块。及周边电路模块(包含 32 个 I/O 口),发光【实验要求】1.2.编程要求:编写一个汇编语言程序。实现功能:设置不同的计数初值、不同的占空比和不同的时钟源,IOB8 同时和一个发光二极管和示波器连接,用户可以通过观察二极管点亮的持续时间和熄灭持续

48、的时间,通过示波器观察信号波形的占空比变化和频率。实验现象:计数初值不同、占空比不同、时钟源不同,发光二极管的亮灭状态变化就不同。3.【实验原理】TimerA 和 TimerB 定时器启动后,在预置数单元 P_TimerA_Data 或 P_TimerB_Data 内置入一个计数初值 N 后,在所选的时钟源频率下开始向计数增加的方向计数 N+1,N+2,EH,当计数到FH后,再来一个计数时钟则溢出到 0000H,这时的计数时间为(F-N)*1/(TimerA 或者 TimerB 的时钟源频率)。比如,当启动 TimerA 定时器后,TimerA 时钟源频率选择为 1024Hz,计数初值设置为

49、0 xF7FF,则它的计数时间为(F-F7FF)*1/1024=2s。产生溢出时,一方面,如果已经打开TimerA 或者TimerB 中断,会产生中断请求信号TA_TimeOut_或 TB_TimeOut_,被 CPU 响应后执行相应的中断服务程序。与此同时,计数初值 N 会被自动重新置入定时器/计数器内,并重复上述加计数的过程。另一方面,该溢出信号会作为脉宽调制输出计数器的时钟源输入,使其输出一个具有四位可调的脉宽调制占空比输出信号 AO 或 BO,其中 IOB8、IOB9 分别为 A、B的输出端。Timer的溢出频率取决于时钟源的选择和计数初值的选择,而的输出频率受Timer的溢出频率的控

50、制:Timer的溢出信号经一个4位计数器和一个4位半加器,并通过P_TimerA_Ctrl设置脉宽后,输出的信号即为所以信号;Timer溢出一次,4位计数器计一次数,当计数器计满十六次时输出一个周期的信号,信号的频率为Timer溢出频率的1/16;比如Timer溢出的频率为16Hz,则的频率为1Hz。所以事实上可以归结为信号的频率取决于时钟源的选择和计数初值的选择。信号的脉宽是通过 P_TimerA_Ctrl(700BH)或者 P_TimerB_Ctrl(700DH)单元单元来设置的。通过写入 P_TimerA_Ctrl(700BH)的第 69 位可选择设置 A入 P_TimerB_Ctrl(

51、700DH)单元的第 69 位,便可选择设置 BO 输出波形的脉宽占空比;同理,写O 输出波形的脉宽占空比。相同频率不同的占空比的信号输出控制二极管的亮灭,表现为点亮的时间和熄灭的时间各相同,表现在波形上30第 1 章SPCE061A 基础应用实验为高、低电平持续的时间不同。如图 1-33。占空比为 10/16占空比为 7/16图 1-33 两个不同占空比的波形【硬件连接】IOB8 同时连接一个发光二极管 D4(从左边开始第一个发光二极管)和示波器的一个探头,即用 8PIN排线将 J29 和 J16 相连,然后用示波器的 CH1 探头检测 J25 的第 0 引针,即 IOB8 的引针。硬件连接

52、图如图 1-34。D4IOB8D5IOB9D6 IOB10D7 IOB11D8IOB12D9IOB13D10IOB14D11IOB15图 1-34 硬件连接图【程序流】主程序流如图 1-35,初始化 IOB8 为同相低电平输出口,设置计数器初值和时钟源频率,然后程序进入主循环,在循环中进行清看门作。IOB8 端口会输出预置频率和占空比的高低电平脉冲,并以此点亮、熄灭连接在 IOB8 上的发光二极管。31CH1示波器CH2IOB8开始清看门狗图 1-35 主程序流【实验步骤】1.2.3.4.5.根据程序流Rebuild All;编写汇编语言程序;按照硬件连接图连接电路;程序,运行;观察发光二极管

53、的亮灭变化和示波器的波形,分析是否和实验要求实验现象。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061AexaseExaex07_asm_TIMERA_TIMERB。科技大学计划()专区可以到相关资料。【练习】使用汇编语言实现 TimerB 定时器实验:当输入时钟源频率分别为 Fosc/2、Fosc/256、32768HZ、 8192HZ、4096HZ 时观察输出频率,设置不同的计数初值,使得每次的计数时间都为 2s;通过设置P_TimerB_Ctrl(700DH)单元的第 69 位设置它的占空比,并通过 IOB9 观察输出波形。32设置计数初值和时钟频率初始化IO

54、B8为同相低电平输出口第 1 章SPCE061A 基础应用实验实验八系统时钟【实验目的】1.2.3.熟悉 SPCE061A 系统时钟的工作原理。掌握系统时钟单元 P_SystemClock 的设置方法。掌握用程序设置系统时钟及 CPU 时钟频率的方法。【实验设备】1.装有 Windows 系统和 nSP IDE 集成开发环境的 PC 机一台,nSP十六位单片机实验箱一个,示波器一台。2.本实验用到的实验箱硬件模块为:SPCE061A二极管电路模块。及周边电路模块(包含 32 个 I/O 口),发光【实验要求】1.2.3.编程要求:编写一个汇编语言程序。实现功能:选择不同 Fosc 信号频率或

55、CPUClk 频率。实验现象:选择不同 Fosc 信号频率或 CPUClk 频率时发光二极管亮灭闪烁的快慢不同。【实验原理】SPCE061A 中每条汇编指令的执行周期数用 Cycles 表示,每一个 Cycles 的时间长度为一个 CPU 时钟周期;而每条指令的 Cycles 数是一定的。本实验中主循环里会调用延时子程序延时,延时后翻转端口输出状态,接着再循环调用延时子程序延时,延时后再翻转端口输出状态;这样就可以在输出端口输出高低电平的脉冲,表现在外接的发光二极管上表现为循环点亮、熄灭发光二极管。而通过改变 Fosc(系统时钟)或 CPU 时钟频率(CPUClk),则可以改变每条指令执行的时

56、间长度;在延时子程序里面执行周期数(Cycles)固定的情况下,就使得延时子程序的延时时长随 CPU 时钟频率的改变而改变;最终表现为改变 CPU 时钟频率后接在输出端口的发光二极管亮灭速度也随之改变。在 SPCE061A 中,通过设置 P_SystemClock(写)($7013H)单元设置系统时钟和 CPU 时钟。通过设置该单元的第57 位可以选择系统时钟的频率(Fosc=20/24/32/40/49MHz);通过设置第02 位可以选择CPU时钟频率;将第 02 位置为“111”可以使 CPU 时钟停止工作,系统切换至低功耗的备用状态。在备用状态下,通过设置该单元的第 4 位可以接通或关闭

57、 32KHz 实时时钟。详细设计方法可参考时钟”相关章节。书“系统【硬件连接】IOA0IOA7 分别依次连接 D11D4(即从右到左的 8 个发光二极管),即用 8pin 排线连接实验箱的J16 和 J26。注意 J16 和 J26 的连接顺序为:J16 的第 07 号引脚依次连接 J26 的第 70 号引脚。硬件连接图如图 1-36 所示。33D11IOA0D10IOA1D9 IOA2D8 IOA3D7IOA4D6IOA5D5IOA6D4 IOA7图 1-36 硬件连接图【程序流】初始化 IOA 口的低 8 位为同相低电平输出口,选择系统时钟和 CPU 时钟频率;进入发光二极管状态变化循环:

58、发光二极管点亮,延时,发光二极管熄灭,延时,发光二极管点亮,延时,发光二极管熄灭,如此循环。为便于观察,读者自己选择程序中合适的延时时间。主程序流如图1-37 所示。开始设置IOA低8位为同相低点平输出口图 1-37 主程序流【实验步骤】1.2.建立一个新工程 ex08_asm_SYSTEM_CLOCK,根据程序流Rebuild All。编写汇编语言程序。34延时发光二极管熄灭延时发光二极管点亮选择系统时钟和 CPU时钟频率 第 1 章SPCE061A 基础应用实验3.4.5.根据硬件连接图连接电路。在 IDE 环境中选择调试图标,、运行。观察 8 个发光二极管亮灭变化的快慢,并通过示波器观察

59、波形和频率。【范例路径】在以下路径有可供大家参考的程序。IDE 的安装路径SPCE061AexaseExaex08_asm_SYSTEM_CLOCK。科技大学计划()专区可以到相关资料。【练习】编写一个汇编语言程序,选择系统时钟为 20MHz,CPU 时钟为 Fosc/64,每延时 0.5s 发光二极管的状态变化一次;改变系统时钟为 49MHz,CPU 时钟依然为 Fosc/64,利用前一种情况相同的延时程序,延时时间到时发光二极管的状态变化一次;观察前后两种情况下发光二极管状态体由那些 I/O 口控制请自行定义)不同。(发光二极管具35实验九FIQ 中断【实验目的】1.2.熟悉 FIQ 的中

60、断向量和中断源;掌握中断控制单元 P_Ctrl,P_Clear 的设置方法;3.掌握 FIQ 中断的编程方法。【实验设备】1.装有 Windows 系统和 nSP IDE 集成开发环境的 PC 机一台,nSP十六位单片机实验箱一个。2.本实验用到的实验箱硬件模块为:SPCE061A二极管电路模块。及周边电路模块(包含 32 个 I/O 口),发光【实验要求】1.2.编程要求:编写一个汇编语言程序。实现功能:打开并设置 TimerA 和 TimerB 定时器,并打开它们的 FIQ 中断,当有 TimerA/B 的 FIQ 中断请求时,响应相应的中断服务程序,在中断服务中翻转 I/O 端口输出电平

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论