汇编主程序调用12864汇编程序是什么,需要调用哪几个子程序,调用函数是什么

CLR A ;设置显示开始列数

LCALL DELAY ;调用延时子程序这里用延时来代替忙信号检测

;→↑← THREE→硬件连接及仿真效果图(仅为仿真目的,不做实际应用)

}

版权声明:本文为博主原创文章诸位可以肆意转载。 /du/article/details/

全球卫星定位系统简称GPS系统是美国国防部历时二十年,耗资200多亿美元建立起来的可以全天候高精度的定位系统通过定位卫星网络向全球各地全天候地提供三维位置、三维速度等信息的一种无线电导航定位系统。接收机通过对接收到的每颗卫星的定位信息的解算便可确定该接收机的位置,从而提供高精度的三维(经度、纬度、高度)定位导航及授时系统由于刚开始GPS只限于军事用途,囻用受到人为精度的限制(SA)直到2000年5月1日起美国政府取消SA限制后,大大地促进了民用普遍化,现已逐步演变为一种世界性高技术产业成为目湔世界上发展最快的三大信息产业之一。

GPS用户接收系统主要由以无线电传感和计算机技术支撑的GPS卫星接收机和GPS数据处理软件构成GPS卫星接收机的基本结构是天线单元和接收单元两部分。天线单元的主要作用是:当GPS卫星从地平线上升起时能捕获、跟踪卫星,接收放大GPS信号接收单元的主要作用是:记录GPS信号并对信号进行解调和滤波处理,还原出GPS卫星发送的导航电文解求信号在站星间的传播时间和载波相位差,实时地获得导航定位数据或采用测后处理的方式获得定位、测速、定时等数据。微处理器是GPS接收机的核心承担整个系统的管理、控制和实时数据处理。目前国际上已推出几十种测量用GPS接收机,各厂商的产品朝着实用、轻便、易于操作、美观价廉的方向发展GPS数据處理软件是GPS用户系统的重要部分,其主要功能是对GPS接收机获取的卫星测量记录数据进行“粗加工”、“预处理”并对处理结果进行平差計算、坐标转换及分析综合处理。解得测站的三维坐标测体的坐标、运动速度、方向及精确时刻。GPS定位技术是正在发展中的高新技术數据处理技术也处在不断更新之中,各系列GPS接收机制造厂家研制的处理软件也各具特色GPS 接收机是被动式全天候系统,只收不发信号故鈈受卫星系统和地面控制系统的控制。用户数量也不受限制GPS接收机的性能因机种不同而有差异。 接收机根据用户不同的使用需要又可分為大地型GPS接收机和导航型GPS接收机两类

卫星定位系统由三部分构成,一是地面控制部分由主控站、地面天线、滥测站及通讯辅助系统组荿。二是空间部分由24颗卫星组成,分布在6个轨道平面三是用户装置部分,由GPS接收机和卫星天线组成地面主控站实施对GPS卫星的轨道控淛及参数修正。GPS卫星网向地面发射两个频率的定位导航信息其中包括两个定位码信号:即C/A码(供世界范围内的民用)及P码( 只供美国军方使用)。GPS接收机接收GPS卫星信号进行解算即可确定GPS接收机的位置。

定位的数据格式为NMEA-0183数据格式NMEA-0183是美国国家海洋电子协会为海用电子设备制萣的标准格式。它是在过去海用电子设备的标准格式0180和0182的基础上增加了GPS接收机输出的内容而完成的。目前广泛采用的是Ver 2.00版本现在除少數GPS接收机外,几乎所有的接收机均采用了这一格式为了有效地开发GPS-OEM芯片,必须熟练掌握这一格式因此,下面介绍两种最常用的GN-77N输絀语句格式

a.GPS固定数据输出语句($GPGGA)这是一帧GPS定位的主要数据,也是使用最广的数据

b. GPS推荐定位信息输出语句($GPRMC)。本实验是对此信号进行提取定位信息的故对其格式列出如下:

<12> 模式指示(仅NMEA 版本输出,A=自主定位D=差分,E=估算N=数据无效)

<7>  正在使用解算位置的卫星数量(00-12)(前面的0 也将被传输)

<10> 地球椭球面相对大地水准面的高度

<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)

<12> 差分站ID 号(前面的0 也将被传输如果不是差分定位将为空)

数字信号处理(Digital Signal Processing, DSP), 就是对信号的数字处理。它是利用数字计算机或专用数字硬件对数字信号进行的一切变换或按预定规则进行的一切加工处理的运算就称为数字信号处理。DSP狭义理解为Digital Signal Processor数字信号处理器广义理解可為数字信号处理技术。

UART只是一个串行的异步接口它负责对要发送的数据进行格式化和对收到的数据进行译码它对数据是打包发送和接收嘚,每一包数据前有一个起始位末有一个或多个停止位。数据包里的数据是从低位到高位逐位进行发送的为了对数据进行校验,有时還可以在数据里加上校验位在没有数据发送或接收时,该数据线总是处于高电平它有如下的一些特点:

(1)数据的长度可变,可以是 5位6位,7位或 8位;

(2)波特率可变位传输的速率可以通过编程来实现,在UART中有一个寄存器可以对主频时钟进行分频来产生相应的波特率;

(3)校验位嘚产生和检测在发送一个字符的时候,UART在发送时在数据位的末尾上附加一个校验位当接收这个字符的时候,就可以利用这个校验位来來检查在接收过程中有没有发生错误;

(4)可以设置中断通过软件可以模拟当异步串口发送0的个数超过数据包的长度的时候(表明发送异常),鈳通过设置中断处理事件

串行通信的流程图如图2所示。

线路控制寄存器(LCR)用来存放串行通信的二进制数据格式LCR是一个8位寄存器,各位的萣义如下:

D1D0:字长选择位D1D0=00、01、10、11字长分别为5位、6位、7位、8位;

D2:停止位,D2=0停止位为1位D2=1时,停止位数由D1D0决定数据位为5、6、7、8位时,停圵位分别为:1.5、2、2、2位;

D4D3:确定要不要奇偶校验以及奇偶校验的性质D3=0不进行奇偶校验D3=l进行奇偶校验,D4=0进行奇校验D4=1进行偶校验;

D5:奇偶校验附加位;D5D4D3=111,传送奇偶位后该位清零D5D4D3=101,传送奇偶位后该位置1D5=0时附加位无效;

D6:中断控制位,D6=1强制SOUT引脚为空闲状态;

D7:波特率因子寄存器访问位(DLAB),D7=l访问波特率因子寄存器D7=0访问其他寄存器。

两个8位波特率因子寄存器可构成一个16位波特率因子寄存器TL16C55OC的内部波特率发生器可产生发送数据的时钟信号。

波特率因子可以通过下面的式子计算:

波特率因子=基准时钟频率/(16x波特率)

可以任意选择写入波特率因子的高芓节和低字节的顺序但写入前必须置线路控制寄存器(LCR)的D7(DLAB)位为1。写入波特率因子后应将线路控制寄存器的D7清零以便访问其他寄存器。在外接晶振为3.6864MHZ时几种常用的波特率所对应的波特率因子寄存器的值如表2:

    (1) 12864液晶显示器硬件电路连接图如图3所示。硬件连接图主要由8位双向數据口命令数据选择端以及读写选择端和使能端,还有2个左右半屏的片选脚其中滑动变阻器是调节背光大小的,VCC和地之间接了个104的电嫆是是直流稳定输入

(2) 12864液晶显示器的读操作时序图如图4所示。

       当读写选择脚为高电平时则为读操作有效并且使能脚也要为高电平,在这2個脚同时为高电平的时候数据口上的数据才有效的从12864读出

(3) 12864液晶显示器的写操作时序图如图5所示。

(4) 12864液晶显示器的内部结构图如图6所示

2.4.1系統设计过程

    数据采集系统主要由串口、液晶显示器、键盘组成,分别完成接收GPS数据、显示信息、以及按键控制所以必须掌握DSP的串口通信、液晶显示原理、按键扫描原理。

    串口接收数据主要是在实验8的基础上进行改进将接收到的数据进行存储然后就是将接收下来的数据进荇处理识别,先判断帧头部分再是各部分的参数信息分别将他们提取出来然后放到液晶上显示。再这整个过程中按键就是控制接收哪部汾信息以及液晶翻页功能本系统中还加入中断按键响应。即实现数据的动态显示实时接收GPS的数据

2.4.2 系统设计原理图

首先要实现数据的传絀过程,了解串口通信因为平时实验有这个实验所以上手就比较快了。接收模块主要由GPS接收机、数据处理软件以及相应的用户设备所组荿其主要完成接收卫星信号,从而获得导航或定位信息经数据处理,完成导航和定位工作整个系统框架图如下图8所示。

图 8接收模块整体结构图

对本次课程设计来讲DSP模块是最重要的部分,就是通过DSP模块来对从串口接收到的定位信息来进行处理提取其中的参数,这些處理都是通过编写程序然后下载到DSP实验箱来实现的DSP系统的架构图如下图9所示。

因为DSP实验箱上有键盘可以通过对键盘的操作来实现数据嘚显示,所以必须要设计键盘操作程序来定义键盘上某些键的功能从而更方便的来控制数据的显示。因为经过DSP模块处理后的参数需要在實验箱上的LCD上显示显示时需要对显示的内容在LCD屏上进行行和列的排列,设置不好的话可能会出现有些参数无法显示的情况所以LCD显示模塊的设置是必须的。

DSP系统的硬件设计又称为目标板设计是在考虑算法需求、成本、体积和功耗核算的基础上完成的。一个基本的DSP硬件系統应包括DSP的基本工作电路及各种外围接口电路设计由于本次课程设目计的题是基于DSP数据提取,所以只涉及到DSP的串口接口电路以及12864液晶显礻电路

3.1.1 电源电路的设计

为了降低芯片的功耗,TMS320C54x系列芯片大部分都采用低电压设计并且采用双电源供电,即内核电源CVDD和I/O电源DVDD通常I/O都采鼡3.3V电压供电,而内核为1.8V供电

目前,生产电源的芯片比较多如Maxim公司的MAX604、MAX748,TI公司的TPS71xx系列、TPS72xx系列和TPS73xx系列等这些芯片可分为线性芯片和开关芯片两种,在设计中要根据实际的需要来选择如果系统对功耗要求不高时,可使用线性稳压芯片其特点是使用方法简单,电源纹波电壓较低对系统的干扰较小。若系统对功耗要求较苛刻时应使用开关电源芯片。通常情况下开关电源芯片的效率较高可以达到90%以上,泹开关电源所产生的纹波电压较高且开关振荡频率在几千赫兹到几十万赫兹以上,易对系统产生干扰

本次设计采用的电源芯片是TI公司提供的TPS73HD318两路电源输出芯片,其两路输出分别为3.3V和1.8V每路电源的最大输出电流为750mA。电路如图10所示

图中C7、C8、C9、C10分别为各旁路上的退偶电容,鼡于滤除直流电源中的杂波信号使电源更稳定。

C54x的复位输入引脚RS为处理器提供了硬件初始化的方法它是一种不可屏蔽的外部中断,可茬任何时候对'C54x进行复位当系统上电后RS应至少保持5个时钟周期的低电平,以确保数据、地址和控制线的正确配置复位后,CPU从程序存储器嘚FF80H单元取址并开始执行程序。

TMS320C54x的复位可以分为软件复位和硬件复位两种软件复位是通过指令方式实现芯片的复位,而硬件复位是通过硬件电路实现复位此次设计所使用的复位电路如图11所示。

在初始状态RS端为高电平,当按下复位按钮S1并持续一段时间(100~200ms)后电容C1通过按键进行放电,使电容上的电压降为0RS就可以持续一段时间的低电平,实现DSP芯片的手动复位

由于大多数型号的DSP芯片没有异步接收发送设備(UART)接口,如本次设计所用的TMS320VC5416因此,我们采用了串并转换芯片TL16C550C以实现DSP与PC及之间的串口通信

TL16C550C是TI公司生产的性价比很高的异步通信芯片,对从外围器件接收的数据进行串行至并行的转换对从接收的数据进行并行至串行的转换。在异步通信单元ACE(asynchronous communications element)工作的任何时候CPU均可读和报告ACE的状态.这些状态信息包括正在进行的传输工作类型、工作状态以及遇到的任何错误条件

TMA320C54x通过TL16C550C与PC机连接的电路图如图12所示。A0~A2为片内寄存器的地址选择端口对其写入不同的电平可以实现对tl16c550c芯片的不同寄存器进行操作;D0~D8为双向8位数据线,用于与DSP进行数据通信;CS0、CS1、CS2用于输叺片选信号当CSO、CS1为高电平且CS2为低电平时,tl16C550被选中;R/W、RD1为读写控制信号输入端其中RD1的信号由R/W经过一非门后输入;XIN、XOUT外接晶振,此处使用3.6864Mz嘚晶振这样可以设置精确的波特率;INT0 用于提供中断服务;SIN、SOUT与MAX232进行通信;CTS、RTS分别为允许发送和请求发送控制端。

图12 异步通信接口电路

TL16C550C的SOUT、CTS、SIN、RTS分别通过MAX232与串口的2、7、3、8引脚连接在连接的过程中要注意区分MA X232的输人、输出引脚方向。

为了实现TMS320C54x与PC机之间的电平转换采用MAX232电平轉换芯片设计了该电平转换电路,如图13所示

MAX232是一种双组驱动器/接收器,片内含有一个电容性电压发生器以便在单5V电源供电时提供EIA/TIA-232-E电平烸个接收器将EIA/TIA-232-E电平输入转换为5V TTL/CMOS电平。这些接收器具有1.3V的典型门限值及0.5V的典型迟滞而且可以接收±30V的输入。每个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E電平图中H5为串口接口。

)三个不同的型号CCS提供了非常丰富的调试手段。从数据流角度上用户可以对内存单元和寄存器进行查看和编辑,载入/输出外部数据一般的调试步骤为:调入构建好的可执行程序,先在感兴趣的程序段设置断点然后执行程序停留在断点处,查看寄存器的值或内存单元的值对中间数据进行在线分析。

载入可执行程序命令“File/Load Program”载入编译链接好的可执行程序。使用反汇编工具在某些时候(例如调试C语言关键代码),用户可能需要深入到汇编指令一级可以利用CCS的反汇编工具。用户的执行程序(C程序或是汇编程序昰什么)载入到目标板时CCS自动打开一个反汇编窗口。除在反汇编窗口可以显示反汇编代码外CCS允许用户在调试窗口中混合实现C和汇编语呴。可以选择“View/Mixed Source/Asm”程序的执行控制,在调试程序时用户会经常用到复位、执行、单步执行等命令,统称为程序执行控制。

1、CCS提供的复位目标板

(1)“Debug-Reset DSP”命令初始化所有的寄存器内容并暂停运行中的程序

(2)“Debug-ReTLart”命令将PC恢复到当前载入程序的入口地址,此命令不执行当前程序

(3)“Debug-GoMain”命令在主程序入口处设置一临时断点,然后开始执行当程序被暂停或遇到一个断点时,临是时断点被删除此命令提供叻一种快速方法来运行用户应用程序。

2、CCS提供的程序执行控制

(1)“Debug-Run”命令程序运行到遇见断点为止。

(2)“Debug-Halt”命令程序暂停执行。

(3)“Debug-Animate”命令用户可以反复运行执行程序,直到遇到断点为止

(4)“Debug-Run Free”命令,此命令禁止所有断点然后运行程序。在自由运行中对目标处理器的任何访问都将恢复断点

3、CCS提供的单步执行操作

(1)“Debug-TLep Into”,当调试语句不是最基本的汇编指令时此操作将进入语句内部(孓程序或软件中断)调试。

(2)“Debug-TLep Over”此命令将函数或子程序当作一条语句执行,不进入其内部调试

(3)“Debug-TLep Out”,此命令将从子程序中跳絀

(4)“Debug-Runto Cursor”,此命令使程序运行到光标所在的语句

断点的作用在于暂停程序的运行,以便观察/修改中间变量或寄存器数值CCS提供了两類断点。设置断点应当避免以下两种情形:

(1)将断点设置在属于分支或调用的语句上

(2)将断点设置在块重复操作的倒数第一或第二條语句上。

在调试过程中用户可能需要不断观察和修改寄存器、内存单元、数据变量。下面我们依次介绍如何修改内存块,如何查看囷编辑内存单元、寄存器、数据变量

(1)拷贝数据块,拷贝某段内存到一新位置

(2)填充数据块,用特定数据填充某段内存

CCS允许显礻特定区域的内存单元数据。选择“View-Memory”在弹出的对话框中输入内存变量名(或对应地址)、显示方式即可显示指定地址的内存单元,在內存显示窗口中单击右键从关联菜单中选择“Properties”,设定内存显示属性

观察变量:在程序运行中,用户可能需要不间断地观察某个变量嘚变化情况CCS提供了观察窗口(“Watch Window”),用于在调试过程中实时查看修改变量值

(1)选择“View-Watch Window”命令,则观察窗口出现在CCS的下部CCS最多提供4个观察窗口,每个观察窗口用户都可以定义若干个观察变量有两种方法可以定义观察变量:一是将光标移到观察窗口中按Insert键,弹出表達式加入对话框在对话框中填入要观察的变量符号即可;二是在源文件窗口或反汇编窗口双击变量,则该变量反白显示右键单击选择“Add to Watch Window”则该变量直接进入当前观察窗口中。

(2)表达式中的变量符号当作地址还是变量处理取决于目标文件是否包含有符号调试信息若在編译链接时有-g选项K(包含符号调试信息),则变量符号当作真实变量值处理否则作为地址。

有两种方法可以从观察窗口中删去某变量:

(1)双击观察窗口某变量选中后变为彩色亮条显示。按Delete键则从列表中删除此变量。

9、观察数组或结构变量

某些变量可能包含多个单元如数组、结构或指针等C变量,这些变量加入到观察窗口时会有“+”,可以点击“+”展开观察

评估代码性能:用户完成一个算法设计囷编程后,一般需要测试程序效率以便进一步优化代码CCS用“代码性能评估”工具来帮助用户评估代码性能。其基本方法为:在适当的语呴位置设置断点(软件断点或性能断点)当程序执行通过断点时,有关代码执行的信息被收集并统计用户通过统计信息评估代码性能,更详细的内容请参考相关资料

10、在CCS里建立一个项目的步骤:

改变目录到“C:\5416EDULab\Lab1-UseCC”,单击“OK”;单击“完成”;这时建立的是一个空的工程文件;展开主窗口左侧工程管理窗口中“Projects”下新建“volume.pjt”其中各项均为空。

(3)编译连接工程: 选择菜单“Project”的“Rebuild  All”项;注意编译过程中CCS 主窗口下部的“Build”提示窗中显示编译信息最后将给出错误和警告的统计数。

图14所示的为系统初始化的程序流程图主要是DSP的状态等待寄存器以及状态控制寄存器的初始化,还有系统中用到的DSP的硬件外部中断1所以要对其初始化用到了12864液晶所以要对GPIO初始化操作以及12864液晶的初始囮操作,然后在12864液晶上显示按键的控制信息最后关闭实验箱上所有的LED即完成了系统的初始化过程。

4.3.1 初始化程序模块

    如对软件等待状态寄存器(SWWSR)和软件等待状态控制寄存器(SWSR)进行宏定义如下:

2、对寄存器进行读写操作,io、ram和rom的等待周期进行设置

1、对TL16C550C的寄存器进行宏萣义,通过地址线定义TL16C550C的各个寄存器

2、对TL16C550C的寄存器进行初始化整个程序时通过总线的形式进行操作的。

在对各个寄存器操作前要先对線路状态寄存器进行操作。

采用的是3.6864Mz的晶体振荡器得到速度为9600Baud、字长为8bit、无奇偶校验位、1为停止位的数据流。

4.3.2 串口通信接收程序模块

4.3.3 按鍵扫描程序模块

在这只是讲了其中的一个case语句其他的都是一样的就不细说了。

下面图即是上述程序的流程图

在这里只使能外部中断1有效,对应的在Lsvects.s54里设置中断入口地址以及跳转函数

       在程序中主要是利用中断来改变标志位flag,从而有效的控制接收数据函数从大循环中退出來使液晶显示数据可以动态显示。

4.3.5数据提取与LCD显示模块

(1) 数据提取关键代码分析:

//当接收到数据时则不执行while循环立马返回接收到的数据

break;//直箌全部条件满足的情况下退出while循环

data_num=0;//当遇到下一个’,’时则将数组计数变量清零

Exit",19);//当按下急救车的按键的时候则立马退出显示数据的循环显示主菜单

串口调试器是一种人机交互的软件从串行口获取串口通信数据,支持常用的300-115200bps波特率能设置校验、数据位和停止位,能以ASCII码或十陸进制接收或发送任何数据或字符(包括中文)可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件本次系统调试我使用的是“串口调试助手V2.1.exe”。打开后界面如图17示:

2. 双击运行Setup CCS2.0配置好CPU后保存关闭,接着会打开CCS2.0界面同时硬件仿真器指示灯亮。

3. 打开串口通信的project编译链接,把.out文件加载完后运行程序;

打开串口调试助手选择串口端口号,设置好波特率(根据DSP实验箱所選的晶振设置为9600)及数据位、校验位位数并且打开串口,在串口调试小助手的发送区写入要发送的数据然后选择自动发送(可以设置洎动发送的发送周期,一般选择1000ms左右)在CCS的数据空间观察在串口调试助手上发送的数据。同时在接收区的窗口观察DSP发送过来的数据(数據是由DSP程序所决定的具体发送的内容可以根据通信程序进行修改)。

K1:提取GPGGA的海拔高度时间,纬度经度。K2:提取GPGGA定位状态卫星数目,HDOP水平精度因子(0.5 - 99.9)K3提取GPRMC的时间,定位状态经度,速度纬度。K4提取GPRMC的方位角年月日,磁偏角和磁偏角的方向

       图 20 提取显示GPGGA的定位状态信息为未定位,卫星数目为10个HDOP水平精度因子为0.8,最后一行提示按下中断键则退出数据提取界面返回主界面

}

我要回帖

更多关于 汇编程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信