




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学院本科毕业设计(论文)单片机智能遥控学生姓名: 学生学号: 院(系): 年级专业: 指导教师: 助理指导教师: 二六年六月攀枝花学院毕业设计(论文) 摘 要摘 要智能遥控在工业、农业、国防等行业有着广泛的应用。利用单片机技术的智能遥控以可靠性高而被广泛采用。本文对智能遥控系统进行了分析设计。 首先,本文针对系统所使用的凌阳单片机的性能和发展情况做了简单介绍;对系统使用的pt2262/2272芯片做了性能方面的简单说明;同时对凌阳单片机的音频做了介绍。其次,本文重点对智能遥控硬件、软件的组成进行了分项、模块化逐步分析设计。对各部分的电路一一进行了介绍,最终实现了该系统的硬件电路。绘制了电路原理图,并将制成的线路板焊接上了元件,完成了硬件调试。根据硬件的设计和智能遥控所要实现的功能,本文对软件也进行了一一设计,并经过反复的模拟运行、调试,修改简化了软件系统,最后形成了一套完整的程序系统。关键词 spce061a,pt2262/2272,sacm-s480,软件系统, 硬件系统. 攀枝花学院毕业设计(论文) abstractabstractthe intelligent remote control in industry, agriculture, national defense and so on has widely applied. to the reliability is high using the monolithic integrated circuit technology so it is widely used. this paper carried on the analysis to the intelligence external guidance system to suppose discusses.first, this paper has made a simple introduction on the performance and the development situation of which used in view of the system; has given the simple explanation of using the pt2262/2272 chip to the system; meanwhile, to make the introduction of the audio frequency to the spec061a .next, this paper has gradually analyzed on the intelligent remote control sshardware, and designed the software composition carrying on the sub-item and modulated. i also has carried on the introduction to the each part of the electric circuits which was completed successfully. then, i make in the line board welding the part according to the electric circuit schematic diagram on my draft and complete the hardware debugging.according to the design of the hardware and the function of the intelligent remote control, this paper has also carried on the design to software by carrying on the simulated run, the debugging repeatedly, made the revision and simplified the software system, finally has formed a set of complete software system.keywords spce061a,pt2262/2272,sacm-s480,software system, hardware system.ii攀枝花学院毕业设计(论文) 绪 论目 录摘 要abstract 1 绪论11.1本次设计任务及要求1 1.2课题背景11.3 总结22 遥控系统的硬件实现3 2.1总体分析32.2系统的硬件实现32.3 编码模块的设计42.4 解码模块的设计62.5 语音模块的设计102.6凌阳单片机连接模块设计113 遥控系统的软件实现163.1凌阳单片机的集成开发环境介绍163.2程序的项目组织结构163.3主程序的逐步设计19 3.3.1程序流程图19 3.3.2主程序详细编码203.5中断服务程序设计223.5.1中断程序流程223.5.2中断服务程序编码233.5.3 ioa/b口的初始化263.5.4初始化编码273.6语言资源处理283.7语音处理程序设计323.8 具体设计步骤343.9 项目实现过程354 结论42参考文献43致 谢44攀枝花学院毕业设计(论文) 绪论1 绪论1.1 本次设计任务及要求本次的设计是分阶段进行的。设计课题由欧方平老师精心提出。设计任务为:设计一个单片机智能遥控语音系统。并用c语言和汇编的嵌套实现对其的软硬控制。采用pt2262/2272是台湾普城公司生产的一种cmos工艺制造的低功耗低价位通用编解码电路,pt2262/2272最多可有12位(a0-a11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,pt2262最多可有6位(d0-d5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。另外将pcm音频格式的8k16位wav文件经sacms480算法压缩后变为celp的音频格式,压缩前为:*.wav ,8k/16bit;压缩后为:*.48k/*.72k fo并生成*.out文件用于对比试听( pc-play),即在pc机上试听*.out文件并和实验板上的扬声器的声音进行对比。压缩比较大80:3, 存储容量大,音质介于a2000和s240之间,适用于语音播放。设计要求:完成该系统的软硬件设计,学习掌握凌阳单片机软硬结合的设计方法,提高学习新知识、新技能的能力,培养独立设计的能力。 1.2 课题背景随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(dsp,digital signalprocessing)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的cpu内核采用凌阳最新推出的nsp(microcontroller and signal processor)16位微处理器芯片(以下简称nsp)。围绕nsp所形成的16位nsp系列单片机(以下简称nsp家族)采用的是模块式集成结构,它以nsp内核为中心集成不同规模的rom、ram和功能丰富的各种外设接口部件,nsp内核是一个通用的核结构。除此之外的其它功能模块均为可选结构,亦即这种结构可大可小或可有可无。借助这种通用结构附加可选结构的积木式的构成,便可形成各种不同系列派生产品,以适合不同的应用场合。这样做无疑会使每一种派生产品具有更强的功能和更低的成本。nsp家族有以下特点: 体积小、集成度高、可靠性好且易于扩展 nsp家族把各功能部件模块化地集成在一个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可靠性和抗干扰能力。另外,模块化的结构易于系统扩展,以适应不同用户的需求。 具有较强的中断处理能力 nsp家族的中断系统支持10个中断向量及10余个中断源,适合实时应用领域。 高性能价格比 nsp家族片内带有高寻址能力的rom、静态ram和多功能的i/o口。另外,nsp的指令系统提供具有较高运算速度的16位16位的乘法运算指令和内积运算指令,为其应用增添了dsp功能,使得nsp家族运用在复杂的数字信号处理方面既很便利,又比专用的dsp芯片廉价。 功能强、效率高的指令系统 nsp指令系统的指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持,这可以大大缩短产品的开发时间。 低功耗、低电压 nsp家族采用cmos制造工艺,同时增加了软件激发的弱振方式、空闲方式和掉电方式,极大地降低了其功耗。另外,nsp家族的工作电压范围大,能在低电压供电时正常工作,且能用电池供电。这对于其在野外作业等领域中的应用具有特殊的意义1.3总述spce061a 是继nsp系列产品spce500a等之后凌阳科技推出的又一款16位结构的微控制器。与spce500a不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,spce061a里只内嵌32k字的闪存(flash)。较高的处理速度使nsp能够非常容易地、快速地处理复杂的数字信号。因此,与spce500a相比,以nsp为核心的spce061a微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。2攀枝花学院毕业设计(论文) 遥控系统的硬件实现2 遥控系统的硬件实现2.1总体分析此遥控系统采用2272/2262芯片组成无线遥控发射电路,由2262发出编码信号后,在由2272解码,连接到凌阳单片机的iob口上,使起能够实现能按键控制语音输出。整个系统将由凌阳单片机构成核心,各个检测信号、控制信号、音频信号可由单片机的i/o和dac口进行,并由程序保证系统抗干扰的能力。 2.2系统的硬件实现在硬件的设计前期,根据框图对电路中可能出现的电路,进行了模拟实验,并根据实验结果对后期的硬件设计进行了合理化的修改完善。系统主要包括单片机,发射信号,接收信号电路,音频输出电路组成。通过单片机的iob,adc1引脚连接。按键功能表按键遥控功能按键遥控功能1发音15发音52发音26发音63发音37发音74发音48发音8各部件的硬件连接图:pt2262adc1gndb8b10b11b12b13扬声器凌阳space061a2272-m45v电源3攀枝花学院毕业设计(论文) 遥控系统硬件设计2.3 编码模块的设计编码芯片pt2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片pt2272接收到信号后,其地址码经过两次比较核对后,vt脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,pt2262不接通电源,其17脚为低电平,所以315mhz的高频发射电路不工作,当有按键按下时,pt2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315mhz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315mhz的高频发射电路停止振荡,所以高频发射电路完全收控于pt2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ask调制)相当于调制度为100的调幅。pt2262特点cmos工艺制造,低功耗外部元器件少rc振荡电阻工作电压范围宽:2.6-15v数据最多可达6位地址码最多可达531441种应用范围车辆防盗系统家庭防盗系统遥 控 玩 具其他电器遥控2262引 脚 图管脚说明:名称管脚说 明a0-a111-8、10-13地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空),d0-d57-8、10-13数据输入端,有一个为“1”即有编码发出,内部下拉vcc18电源正端()vss9电源负端()te14编码启动端,用于多数据的编码发射,低电平有效;osc116振荡电阻输入端,与osc2所接电阻决定振荡频率;osc215振荡电阻振荡器输出端;dout17编码输出端(正常时为低电平)在具体的应用中,外接振荡电阻可根据需要进行适当的调节,阻值越大振荡频率越慢,编码的宽度越大,发码一帧的时间越长.大部分产品都是用2262/1.2m/2272/200k组合的,少量产品用2262/4.7m/2272/820k2.4 解码模块的设计地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”;两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“f”也就是地址码的“悬空”程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。图下部分是放大的一组字码:一个字码由12位ad码(地址码加数据码,比如8位地址码加4位数据码)组成,每个ad位用两个脉冲来代表:两个窄脉冲表示“0”;两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“f”也就是地址码的“悬空”pt2272b8 b10 b11 b12 b13凌阳space061a解码电路 pt2272 引 脚 图名称管脚说 明a0-a111-8、10-13地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空),必须与2262一致,否则不解码d0-d57-8、10-13地址或数据管脚,当做为数据管脚时,只有在地址码与2262一致,数据管脚才能输出与2262数据端对应的高电平,否则输出为低电平,锁存型只有在接收到下一数据才能转换vcc18电源正端()vss9电源负端()din14数据信号输入端,来自接收模块输出端osc116振荡电阻输入端,与osc2所接电阻决定振荡频率;osc215振荡电阻振荡器输出端;vt17解码有效确认 输出端(常低)解码有效变成高电平(瞬态)地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”;两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“f”也就是地址码的“悬空”上面是我们从超再生接收模块信号输出脚上截获的一段波形,可以明显看到,图上半部分是一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。图下部分是放大的一组字码:一个字码由12位ad码(地址码加数据码,比如8位地址码加4位数据码)组成,每个ad位用两个脉冲来代表:两个窄脉冲表示“0”;两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“f”也就是地址码的“悬空”2262每次发射时至少发射4组字码,2272只有在连续两次检测到相同的地址码加数据码才会把数据码中的“1”驱动相应的数据输出端为高电平和驱动vt端同步为高电平。因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理。pt2272解码芯片有不同的后缀,表示不同的功能,有l4/m4/l6/m6之分,其中l表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。m表示非锁存输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制。后缀的6和4表示有几路并行的控制通道,当采用4路并行数据时(pt2272-m4),对应的地址编码应该是8位,如果采用6路的并行数据时(pt2272-m6),对应的地址编码应该是6位。2.5语音模块的设计将pcm音频格式的8k16位wav文件经sacms480算法压缩后变为celp的音频格式,压缩前为:*.wav ,8k/16bit;压缩后为:*.48k/*.72k fo并生成*.out文件用于对比试听( pc-play),即在pc机上试听*.out文件并和实验板上的扬声器的声音进行对比。压缩比较大80:3, 存储容量大,音质介于a2000和s240之间,适用于语音播放。凌阳音频压缩算法的编码标准 表1.1是不同音频质量等级的编码技术标准(频响):凌阳音频压缩算法处理的语音信号的范围是200hz3.4khz的电话话音。压缩分类 压缩分无损压缩和有损压缩,无损压缩一般指:磁盘文件,压缩比低: 2:14:1。 而有损压缩则是指:音视频文件,压缩比可高达:100:1。2.6 凌阳单片机连接模块设计大多数单片机采用哈佛(harvard)结构体系,即数据存储空间与程序存储空间相互独立的结构体系。它不同于一般通用计算机系统结构,即程序和数据共用一个空间的冯诺伊曼(von neumann)结构。凌阳的16位单片机的cpu内核采用凌阳最新推出的nsp(microcontroller and signal processor)16位微处理器芯片(以下简称nsp)。围绕nsp所形成的16位nsp系列单片机(以下简称nsp家族)采用的是模块式集成结构,它以nsp内核为中心集成不同规模的rom、ram和功能丰富的各种外设接口部件,如图所示。性能: 16位nsp微处理器; 工作电压(cpu) vdd为2.43.6v (i/o) vddh为2.45.5v cpu时钟:0.32mhz49.152mhz ; 内置2k字sram; 内置32k flash; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电仅为2a3.6v; 2个16位可编程定时器/计数器(可自动预置初始计数值); 2个10位dac(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器a / b,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码sacm_s240方式(2.4k位/秒),能容纳210秒的语音数据; 锁相环pll振荡器提供系统时钟信号; 32768hz实时时钟; 7通道10位电压模-数转换器(adc)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(agc)功能; 具备串行设备接口; 具有低电压复位(lvr)功能和低电压监测(lvd)功能; 内置在线仿真电路ice(in- circuit emulator)接口; 具有保密能力; 具有watchdog功能。结构概览 spce061a的结构如图1.2所示:芯片的引脚排列和说明 spce061a有两种封装片,一种为84个引脚,plcc84封装形式;它的排列如图1.4所示;另一种为80个引脚,lqfp80封装。它的排列如图所示。 在plcc84封装中,有15个空余脚,用户使用时这15个空余脚悬浮。在lqfp80封装中有9个空余脚,用户使用时这9个空余脚接地。此处以lqfp80封装管脚功能介绍。spce061a开发方法 spce061a的开发是通过在线调试器probe实现的。它既是一个编程器(即程序烧写器),又是一个实时在线调试器。用它可以替代在单片机应用项目的开发过程中常用的软件工具硬件在线实时仿真器和程序烧写器。它利用了spce061a片内置的在线仿真电路ice(in- circuit emulator)接口和凌阳公司的在线串行编程技术。probe工作于凌阳ide集成开发环境软件包下,其5芯的仿真头直接连接到目标电路板上spce061a相应管脚,直接在目标电路板上的cpu-spce061a调试、运行用户编制的程序。probe的另一头是标准25针打印机接口,直接连接到计算机打印口与上位机通讯,在计算机ide集成开发环境软件包下,完成在线调试功能。图1.7是计算机、probe、用户目标板三者之间的连接示意图,图1.8是实物连接图。应用领域家用电器控制器:冰箱、空调、洗衣机等白色家电仪器仪表:数字仪表(有语音提示功能)电表、水表、煤气表、暖气表工业控制智能家居控制器通讯产品:多功能录音电话、自动总机、语音信箱、数字录音系统产品医疗设备、保健器械(电子血压计、红外体温监测仪等)体育健身产品(跑步机等)电子书籍(儿童电子故事书类)、电教设备等语音识别类产品(语音识别遥控器、智能语音交互式玩具等)15攀枝花学院毕业设计(论文) 遥控系统软件设计3 遥控系统的软件实现3.1凌阳单片机的集成开发环境介绍nsp 集成开发环境集程序的编辑、编译、链接、调试以及仿真等功能为一体。具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使编程、调试工作方便且高效。此外,它的软件仿真功能可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。ide 的开发界面如图6.1所示。3.2程序的项目组织结构在nsp单片机的汇编程序设计中,用户可以不用考虑程序代码在实际物理存储器中的存储地址,而是通过伪指令(如“.code”、“.text”、“.ram”等)来通知编译器把程序代码定位在什么类型的存储空间即可.至于具体的存储地址则由编译器管理。对于数据存储器的管理同样由ide的编译器来完成。当用户想在数据存储区内定义一个变量时,只需通过伪指令(如“.ram”、“.iram”等)来通知编译器在数据存储区内建立一个变量即可。 nsp单片机的汇编指令针对c语言进行了优化,所以其汇编的指令格式很多地方直接类似于c语言。另外其开发仿真环境ide也直接提供了c语言的开发环境,c函数和汇编函数可以方便地进行相互调用,详细方法在本章节中将详细介绍。 项目提供用户程序及资源文档的编辑和管理,并提供各项环境要素的设置途径。因此,用户从编程到调程之前实际上都是围绕着项目的操作。 新建项目包括三类文件:源文件(source files)、头文件(head files)和用来存放文档或项目说明的文件(external dependencies)其组织结构如表4.1所示。这种项目管理的方式,会把与项目相关的代码模块组织为一个有机的整体,便于开发人员对其代码以及相关文件文档的管理。在表4.1中,详细描述了一个新建项目后自动产生的各种文件。 在这里,不详细叙述如何对ide进行全面的设置,相关内容可以参阅ide章节。但是从编写调试代码的角度来看,需要反复提出的有如下一些重要的设置:1) 路径的设置:菜单toolsoptiondirectiories,可以进行路径的设置。当项目中的文件或函数库不与项目文件在同一个目录时,需要对此进行设置。2) 链接库函数的加载:菜单projectsetting.link,可以加载应用函数库。例如,在语音应用时,需要加载凌阳音频算法库sacm25.lib。 另外,尽管在项目中的head file文件夹下面加入了所需要的头文件,但是在汇编文件和c文件中仍然需要用伪指令将其包含到自己的文件中。 nsp ide开发系统提供了spce061a的寄存器定义的汇编头文件hardware.inc以及c语言的头文件hardware.h。当我们需要对芯片设置时,需要将这些头文件加入项目中。开发系统还提供了对芯片进行设置的一些子函数,这些子函数都放在汇编文件hardware.asm中,提供开发人员使用。在凌阳的语音算法函数库中所提供的api函数,也将用到hardware.asm中的函数。3.3主程序的逐步设计3.3.1程序流程图初始化a口关闭1kz中断放音8放音7放音6放音5放音4放音3放音2键值7?键值6?键值5?键值8?键值4?键值3?键值2?键值1?按键否?初始化sacm_s480开启1khz中断初始化b口放音1结束返回主循环是否ynynnnyynnyynynyynynn3.3.2主程序详细编码/预定义#define p_ioa_data (volatile unsigned int *)0x7000#define p_ioa_buffer (volatile unsigned int *)0x7001#define p_ioa_dir (volatile unsigned int *)0x7002#define p_ioa_attrib (volatile unsigned int *)0x7003#define p_ioa_latch (volatile unsigned int *)0x7004#define p_iob_data (volatile unsigned int *)0x7005#define p_iob_buffer (volatile unsigned int *)0x7006#define p_iob_dir (volatile unsigned int *)0x7007#define p_iob_attrib (volatile unsigned int *)0x7008#define p_watchdog_clear (volatile unsigned int *)0x7012#define p_systemclock (volatile unsigned int *)0x7013#define key_5(volatile unsigned int *)0x0008/5键#define key_6(volatile unsigned int *)0x0004/6键#define key_1(volatile unsigned int *)0x000c/1键#define key_2(volatile unsigned int *)0x0002/2键#define key_3(volatile unsigned int *)0x000a/3键#define key_4(volatile unsigned int *)0x0006/4键#define key_7(volatile unsigned int *)0x000e/7键#define key_8(volatile unsigned int *)0x0001/8键#include hardware.h#include s480.hunsigned int keyflag=0;/当前按键的状态,1有效unsigned int keystate=0;/遥控输入void playrespond(int result) /发音子函数的定义sacm_s480_play(result, 3, 3);while(sacm_s480_status()&0x0001) != 0)sacm_s480_serviceloop();clearwatchdog();sacm_s480_stop();/主程序开始main()/初始化;initioa(); /初始化a口initiob(); /初始化b口int1khzon(); /开启1khz中断sacm_s480_initial(1); /初始化sacm_s480 /循环等待按键while(1)switch(keystate)case key_5:playrespond(5);break;case key_6:playrespond(6);break;case key_1:playrespond(1);break;case key_2:playrespond(2);break;case key_3:playrespond(3);break;case key_4:playrespond(4);break;case key_7:playrespond(7);break;case key_8:playrespond(8);break;int1khzoff(); /关闭1khz中断3.5中断服务程序设计irq4中断入口3.5.1中断程序流程fiq中断入口寄存器组入栈保护寄存器组入栈保护是1khz中断吗?fiq是timea中断吗?yn遥控有输入吗?ny调用f_fiq_service_sacm_a480函数发音ny得到按键值清中断状态1khz状态为清零寄存器组出栈寄存器组出栈中断返回中断返回space061a中断源列表3.5.2中断服务程序编码.include hardware.inc.include resource.inc.includes480.inc.define run_1khz_timebase_int 0x0010/遥控输入.external _gtime.external _keyflag.external _keystate.external r_interruptstatus.public _fiq,_break,_irq0, _irq1, _irq2, _irq3, _irq4, _irq5, _irq6, _irq7.code.public _int1khzoff_int1khzoff:.procint off r1 = 0xffff p_int_clear = r1 / clear interrupt occuiped events r1 = r_interruptstatus/ r1 &= 0xffef/ disenable 1khz irq r_interruptstatus = r1/ p_int_ctrl = r1/int irqretf.endp.text_fiq:pushr1,r4 to sp;r1 = 0x0001; p_watchdog_clear = r1;r1 = 0x2000;test r1,p_int_ctrl;jnz l_fiq_timera;r1 = 0x0800;test r1,p_int_ctrl;jnz l_fiq_timerb;l_fiq_pwm:r1 = c_fiq_pwm;p_int_clear = r1;pop r1,r4 fromsp;reti;l_fiq_timera:p_int_clear = r1;call f_fiq_service_sacm_s480;pop r1,r4 from sp;reti;l_fiq_timerb:p_int_clear = r1;pop r1,r4 from sp;reti;_break: _irq0:_irq1: _irq2: _irq3: _irq4: push r1,r5 to sp;r1=0x0010;test r1,p_int_ctrl;jnz l_irq4_1khz; r1=0x0070;goto l_exit_irq4l_irq4_1khz:r2=p_iob_data/保存b口的值r1=0x0100test r1,r2jnz havekey/遥控有输入havenokey:r1=0x0000_keyflag=r1jmp endkeyhavekey:r1=_keyflagcmp r1,0x0000/是否是上次的那个键?jne endkeyr1=r2&0x3c00r1=r1 lsr 4r1=r1 lsr 4r1=r1 lsr 2_keyflag=r1_keystate=r1/c程序中清0endkey:r1=r2&0x0007/开始处理编码输入test r1,0x0001jz havenocode havenocode:r1=0x0010l_exit_irq4: p_int_clear=r1; pop r1,r5 from sp; reti _irq5: _irq6: _irq7:.end3.5.3ioa/b口的初始化io断口的控制向量组合 注: *:端口位预设为带下拉电阻的输入引脚; * *:只有当ioa 70内位的控制字为000,001 和010 时, 相对应位才具有唤醒的功能。 *:悬浮输入作为adc ioa60 的输入端口功能:p_ioa_data(读/写)(7000h)a 端口的数据单元,用于向a 口写入或从a 端口读出数据。当a 口处于输入状态时,读出是读a 口引脚电平状态; 写入是将数据写入a 端口的数据寄存器。当a 口处于输出状态时,写入输出数据到a 端口的数据寄存器。p_ioa_buffer (读/写) (7001h)a 端口的数据向量单元,用于向数据向量寄存器写入或从该寄存器读出数据。当a 口处于输入状态时,写入是将a 端口的数据向量写入a 端口的数据寄存器;读出则是从a 端口数据寄存器内读其数值。当a 口处于输出状态时,写入输出数据到a 端口的数据寄存器。对输出而言,p_ioa_data 与p_ioa_buffer 是一样的.但对输入而言,p_ioa_data 读的是io 的值,p_ioa_buffer 读的是buffer 内的值。假设ioa0作为输出,并去接led阳极(led 阴极接地)。若p_ioa_data 的ioa0为1。在某些需要较大驱动能力的led而言,led 会亮,但ioa0会被拉到一个很低的值。此时从p_ioa_data 读回为0,但p_ioa_buffer 则为1。读回的意义是是方便做其它的io 运算。p_ioa_dir(读/写)(7002h)a 端口的方向向量单元,用于用来设置a 口是输入还是输出,该方向控制向量寄存器可以写入或从该寄存器内读出方向控制向量。dir 位决定了端口位的输入/输出方向:即0为输入,1为输出。p_ioa_attrib(读/写)(7003h)a 端口的属性向量单元,用于a 端口属性向量的设置。p_ioa_latch(读)(7004h)读该单元以锁存a端口上的输入数据,用于进入睡眠状态前的触键唤醒功能的启动(参见睡眠/唤醒部分)。p_iob_data(读/写)(7005h)b 端口的数据单元,用于向b 口写入或从b 端口读出数据。当b 口处于输入状态时,读出是读b 口引脚电平状态; 写入是将数据写入b 端口的数据寄存器。当b 口处于输出状态时,写入输出数据到b 端口的数据寄存器。p_iob_buffer(读/写)(7006h)b 端口的数据向量单元,用于向数据寄存器写入或从该寄存器内读出数据。当b 口处于输入状态时,写入是将数据写入b 端口的数据寄存器;读出则是从b 端口数据寄存器里读其数值。当b 口处于输出状态时,写入数据到b 端口的数据寄存器。p_iob_dir(读/写)(7007h)b 端口的方向向量单元,用于设置iob 口的状态。0为输入,1为输出。p_iob_attrib(读/写)(7008h)b 端口的属性向量单元,用于设置iob 端口的属性。3.5.4初始化编码.include hardware.inc.public _initioa.public _initiob.code_initioa:.proc/0-3:发射频率代码 r1=0xffff; p_ioa_attrib=r1; p_ioa_dir=r1; p_ioa_data=r1retf.endp_initiob:.proc/0:编码器0输入;1:编码器1输入;2:编码器2输入; r1=0x0000; /遥控输入:8:vt;a:码1;b:码2;c:码3;d:码4 p_iob_attrib=r1; p_iob_dir=r1; p_iob_data=r1;retf.endp3.6语言资源处理对于sacm_s480放音算法要涉及到语音资源的添加问题,即将wav文件按照我们需要的压缩比进行压缩,变成资源表形式在程序中调用。具体过程如下:windows下的压缩:下图是用于压缩的windows工具,可以选择一个或多个wav文件进行压缩,具体步骤可根据提示来操作。然后在nsp 集成开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摄影社团课件
- 摄影灯光基础知识培训课件
- 摄影审美基础知识培训课件
- 水产养殖技术试题及答案
- 摄像头基础知识培训课件
- 搭配衣服公开课课件
- 搭配中的学问吴正宪课件
- 2025设备租赁合同印花税
- 2025版本的汽车租赁合同示范文本
- 打破光合极限:人工叶绿体工厂如何让作物产能飙升500%
- 送达地址确认书(完整版)
- 四川滑雪场商业综合体设计方案文本含个方案 知名设计院
- 日立电梯常用零配件价格清单
- 单位人事证明(共7篇)
- 水泵设备单机试运转记录
- 保密管理-公司涉密人员保密自查表
- 日常安全检查记录
- 速成意大利语(上)
- 压型钢板组合楼板设计计算表格
- Q∕SY 1535-2012 海底管道混凝土配重层技术规范
- T∕CADERM 2002-2018 胸痛中心(基层版)建设与评估标准
评论
0/150
提交评论