单片机软件设计_第1页
单片机软件设计_第2页
单片机软件设计_第3页
单片机软件设计_第4页
单片机软件设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机软件设计讲座内容l一、背景和目标l二、资源的分配l三、程序规划l四、状态迁移图l五、消息驱动的实现方法l六、队列的使用l七、位处理技术的使用一、讲座背景l背景:l大家设计软件还缺乏实战经验;l软件设计的结构不鲜明,缺乏条例;l目标:l增强软件的可读性;l使软件的结构清晰,易于故障定位;l规范软件设计的流程;二、资源分配l内存分配l全局或局部变量(30h-7fh);l堆栈(52中,可将SP设为0 x7f,实际占用0 x80-0 xff);l标志位(一般设在0 x20-0 x2f的可位寻址区域)l较小的Buffer;lI/O分配l操作频繁的可利用直接的I/O端口,不太频繁的可使用扩展的I/O

2、;l外部RAM分配l数据表l较大的Buffer三、程序规划l数据结构l数据结构的种类:线性表 、栈和队列 l软件中常用的数据表格 :消息队列,用户表(设备表),缓冲区,堆栈,状态表。l程序结构 l周期级软件 l基本级软件l系统级软件 3-1 数据结构的规划l程序设计中,会涉及大量数据,不少数据的值在不断变化,有些则比较固定。这些数据是系统运行中不可缺少的纪录和数据。l各种数据的存放和组织形式,也就是所谓的数据结构,与程序设计由密切的关系,直接影响到程序的有效性、清晰性和复杂性 3-1-1 数据表中常量的规划l端口类型表在软件设计时,首先要对各种端口进行分类,确定每个端口的设备号,同时规定每个端

3、口的收发号类型,以及用户号等等。l用户状态表用户端口可能会处于各种不同的状态。依据不同信息的输入,用户状态可能发生迁移,即从一个现有的状态转变为另一个新的传态。所以,在程序设计的一开始就要对用户可能出现的各种状态进行分析、归纳,总结所有可能的用户状态 。数据表中常量的规划数据表中常量的规划-2l用户端口类型表 设备号端口名称收发号类型用户号备注(类型)0数字音频1FSK100-199用户(1)1数字音频2FSK200-299用户(1)2数字音频3FSK300-399用户(1)3数字音频4FSK400-499用户(1)4外部电台1FSK500-599用户(2)5外部电台2FSK600-699用户

4、(2)67监听喇叭PC键盘/鼠标监听(5)8有线用户1PLUS/DTMF808用户(3)9有线用户2PLUS/DTMF809用户(3)10模拟中继1DTMF010中继(6,7)11模拟中继2DTMF011中继(6,7)12话筒组1PC键盘/鼠标912话务员(4)13话筒组2PC键盘/鼠标913话务员(4)l用户状态表 十进制表示十六进制表示状态十进制表示十六进制表示状态00H空闲状态1610H权限查询状态11H摘机状态*1711H22H出局状态*1812H33H等待挂机状态*1913H44H阻塞状态(无空闲链路)*2014H*55H*2115H66H内线摘机状态*2216H77H内线收号状态*

5、2317H88H被叫通话状态2418H回振铃状态*99H2519HZG振铃状态*100A261AHZG呼叫振铃状态110B回铃音状态271BH转移振铃状态120C主叫通话状态*281CH*130D291DHC振铃状态140E振铃状态301EH等待应答(无线被叫)150F无线呼叫等待状态(主叫)311FHFSK发送状态(无线被叫)3-1-2 用户表(设备、端口表)l软件设计时,对于每一个用户端口都需要规划一个用户表,每个用户表占用若干存储单元,分两部分:l第一部分:包含了用户的绝大部分信息,包括用户状态、定时、第二/三方设备号、收号指针、端口类型号、用户号等等;l第二部分:为收号缓冲区,或针对该

6、端口的一些临时数据。l用户表中的数据大体上可分为三类:l第一类是系统级程序对用户的配置数据,包括端口类型号、转接方式、用户号、指定分机号设备号等,这些数据除了系统对用户配置外基本上是保持不变的参数;l第二类是周期级程序所保存或修改的数据,如:定时器、标志区、收号指针、接收号码、中继振铃计数器等;l第三类是基本级程序在处理过程中所保存或修改的数据,如状态号、定时器、第二/三方设备号等。 用户表用户表 -1地址序号内容初始值0状态号001T(定时器)002第二方设备号0FFH3第三方设备号0FFH4话路号0FFH5标志区006收号指针007转接方式(中继)0FFH8FSK收发比特(中继振铃计数器)

7、009FSK收发字00A端口类型号(1,2,3,4,5,6,7)0FFHB指定分机号设备号(中继)C转接方式(中继)D用户号1E用户号2F用户号310H收号10FFH11h收号20FFH12h收号30FFH13h收号40FFH14h收号50FFH15h收号60FFH16h收号70FFH17h收号80FFH18h收号90FFH19h收号100FFH1AH收号110FFH1BH收号120FFH1CH收号130FFH1DH收号140FFH1EH收号150FFH1FH收号160FFH3-1-3 消息队列l信息输入(周期级)程序所得到的用户信息通过消息队列方式传递给基本级程序进行处理;l是一种先进先出(

8、FIFO)的线性表;l可分为顺序队列、循环队列和链形队列,单片机种,一般采用循环队列;l每条消息占用2字节,前一字节表示消息的来源设备号;后一字节表示消息的类型或内容消息号 消息队列工作过程-1信息写入指针(队尾)信息读出指针(队首)地址序号内容1设备号12信息号1设备号24信息号25设备号36信息号3。255设备号128256信息号128注: 每个信息包由两字节组成,设备号在前,信息号在后。信息号:015:表示号码0,1,2。9,*,#,A,B,C,D;16:表示 摘机;17:表示 挂机;18:表示 时间到;19:表示 ZG振铃;20:表示 收到FSK,作FSK纠错译码处理;21:表示 FS

9、K发送完毕,作下一步处理;22:表示 RS232收到数据包。 消息队列工作过程-2l每当周期级程序得到一条消息就向消息队列写入该条消息,队尾指针递增2字节;l基本级程序则一直在比较队尾和队首的指针:若两者相等,表明没有待处理的消息;若两者不等,表明队列中有未处理消息,程序将队首所指的消息取出进行处理,同时把队首指针递增2字节,待消息处理完后再进行队首和队尾指针的比较,直到队首队尾指针相等。 3-1-4 输出数据表l输出数据表主要用于基本级程序向周期级程序发送的输出控制消息;l依据输出控制的类型不同,可将输出数据表分为多个表。如:振铃数据表、话路表和用户音调表等 ;l周期级程序,周期性地监测输出

10、数据表的内容,有数值变化时,对端口进行控制输出。输出数据表输出数据表-1(D-RING)4Byte注: 每单元分别对应一用户的振铃情况#0H 表示不振铃(初始值为#0H)#1H 表示振铃用户音调表(B-THL) 12BYTE注:0 无音1 忙音2 信号音3 回铃音4 强插音5 提示语音1:“请拨分级号。6 提示语音2:“分机忙。3-1-5 3-1-5 接收接收/ /发送缓冲区发送缓冲区 l一般用于一些数据收发的暂存。l如在串行通信中,可设置接收和发送两个缓冲区(scomm_rev_buff,scomm_send_buff);l表征缓冲区的参数:l缓冲区首址(常数);l缓冲区长度(常数);l计数

11、器(变量);l一般设为全局变量。3-2 程序结构l周期级(信息扫描与输出)程序:周期级(信息扫描与输出)程序:主要用于收集系统来自各设备端口以及系统总体的信息,如:有线用户的摘/挂机、有线用户的拨号、中继端口的振铃、无线端口的FSK拨号、超时信息、RS232串口信息等等。除RS232串口信息是通过串口中断实现以外,其他的信息都是在定时中断程序内完成的。l基本级(信息处理)程序:基本级(信息处理)程序:是系统中最为复杂的部分,由主程序来完成。信息的处理要依据信息本身、信息来自的设备端口以及该端口的状态等综多因素来进行。由于设备端口的类型各不相同,同时,每一类端口的状态又多种多样,所以在信息处理程

12、序设计时,必定采用状态迁移图的方式来进行。l系统级(系统管理维护)程序:系统级(系统管理维护)程序:由单片机和PC机联合完成。主要实现用户的权限管理,对监听端口及其音量的控制、强行建链/拆链的控制、人工转接控制等等。PC机主要实现控制管理,单片机是具体执行者。软件系统总体结构框图软件系统总体结构框图信息输入控制输出命令队列消息队列周期级程序来自端口信息对端口的控制号码/状态分析信息处理基本级程序用户表、状态表系统级程序串口中断系统管理维护本地软件无线电电台控制PC机软件PC机软件单片机软件单片机软件3-2-1 周期级软件设计 l周期级软件用于周期地收集系统来自各设备端口以及系统本身的信息(如:

13、有线用户的摘/挂机状态、有线用户的拨号、中继端口的振铃、无线端口的FSK拨号、定时信息等等),生成各种事件队列供基本级软件接收处理;l接收来自基本级软件的命令(如:中继占用、交换网络的控制、FSK拨号输出、信号音输出等等),去控制相应的端口。l位处理技术周期级软件l位处理技术例:定时中断程序 计数器1(1.11ms定时)11T1-0T1-1FSK接收模块FSK发送模块模块计数器2(10ms定时)1111111111111111T2-0T2-1T2-2T2-3T2-4T2-5T2-6T1-7DTMF收号摘挂机检测定时器脉冲收号振铃检测线路音产生线路音控制模块1交换网控制3-2-2 基本级软件设计

14、l是系统中最为复杂的部分,由主程序来完成。l信息的处理要依据信息本身、信息来自的设备端口以及该端口的状态等众多因素来进行。l由于设备端口的类型各不相同,同时,每一类端口的状态又多种多样,所以在信息处理程序设计时,必定采用状态迁移图的方式来进行。 基本级软件的总体流程图基本级软件的总体流程图主程序开始单片机工作状态初始化外部设备状态初始化用户表等的数据存储区初始化有信息要处理?NY信息类型号?#0-#15#16#17#18#19#20#22#23#24其它 号码分析 依据输入的设备(端口)、设备的状态以及输入的号码和被叫的状态等,对系统的各端口进行控制或对状态进行修改。 摘机处理 依据端口的状态

15、,对有线用户的摘机操作进行不同处理,如进入摘机状态或被叫通话状态等。 挂机处理 依据端口的状态,对有线用户的挂机操作进行处理,如使本设备进入空闲状态,第二方进入等待挂机状态等。 时间到处理 针对不同的设备及该设备的状态,进行超时控制。 中继振铃处理 当中继有振铃信号来时,进行中继呼叫处理。 无线FSK收号处理 当在无线端口接收到完整的FSK数据包时,对该数据包进行译码处理,同时进行呼叫或控制处理。 RS232接收处理 依据PC机来的串行数据包信号,控制模拟交换板或得到交换板的信息。 PTT有效控制 依据消息,控制相应无线端口的PTT,使其有效。 PTT无效控制 依据消息,控制相应无线端口的PT

16、T,使其无效。状态转移图 l当前状态十激励事件新状态 收号状态1送空号音复原A空闲状态0摘机A空闲0送拨号音时间到T停拨号音送忙音等待挂机状态3合法号非法号挂机AAAA等待挂机状态3被叫忙?送空号音A等待挂机状态3YA送回铃音B送振铃B振铃状态N回铃音状态2时间到停拨号音送忙音等待挂机状态3T摘机B接续通道通话状态4挂机A复位B等待挂机空闲状态0A挂机B复位A送忙音等待挂机状态3B基本级软件-消息驱动 主叫进程 l有线用户主叫进程有线用户主叫进程 l无线用户主叫进程无线用户主叫进程 l中继呼入进程中继呼入进程 l话筒组主叫进程话筒组主叫进程 被叫进程 l有线用户被叫进程有线用户被叫进程 l无线用户被叫进程无线用户被叫进程 l中继呼出进程中继呼出进程 l话筒组被叫进程话筒组被叫进程 号码分析 l对于不同的用户端口,号码的输入方式也不见相同:对于有线电话端口,号码来自脉冲信号检测或双音多频信号的接收;对于中继端口,号码来自DTMF信号接收;对于无线用户端口,号码来自FSK无线信令的接收;对于话筒组接口,号码和控制信号都来自PC机的键盘。l

温馨提示

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

评论

0/150

提交评论