莱芜职业技术学院毕业论文 第4章 系统软件设计
是,计算机也不能直接识别高级语言程序,也必须经过“翻译”(常称解释或编译)使之成为机器语言程序,机器才能执行。用高级语言编写程序的不足之处是,高级语言翻译得到的机器语言程序,要比由完成同样任务的汇编程序得到的机器语言程序长得多,由此而造成程序执行时间长,所占存储空间大。目前,常用的高级语言种类较多,如BASIC﹑FORTRAN﹑PASCAL﹑C语言等等,高级语言用于复杂的科学计算和数据处理有着明显的优势[17]。
单片机通常应用于家用电器、仪器仪表、工业过程自动化中,处于这些应用场合下,要求计算机执行程序速度快、实时性强,要有灵活的接口处理技术,但存储容量小。根据这些要求,显然应该优选汇编语言来进行程序设计。虽然许多单片机开发系统提供了高级语言,但目前被广泛采用的仍是汇编语言。本课题就采用的是汇编语言。
4.1.1 单片机汇编语言程序设计的基本步骤
单片机汇编语言程序设计的基本步骤如下: (1) 设计任务的分析、确定思路或算法。 (2) 程序的总体设计并画出流程图。
(3) 编写源程序。可在编译软件下编程,要求简练、层次清楚、字节数少和执行时间短等。
(4) 源程序的汇编和调试。 (5) 编写程序说明文件。 4.1.2 汇编语言程序设计方法
(1) 汇编程序的基本结构总是简单程序、分支程序、循环程序、查表程序、子程序、中断程序等结构化的程序模块有机组成的。
(2) 划分功能模块进行设计。 (3) 自上而下逐渐求精。 4.1.3 Keil 简介
Keil uVision2是德国Keil公司开发的一款关于8051系列MCU的开发工具,
27
莱芜职业技术学院毕业论文 第4章 系统软件设计
它支持汇编、C语言及混合编程,是一种集成化的文件管理编译环境,可用来编译程序源码、链接和重定位目标文件和库文件、创建HEX文件、调试目标程序等。Keil uVision2具有强大的仿真功能,可不接硬件电路直接进行用户程序仿真,也可利用硬件仿真器(用Monitor51协议,需硬件支持),通过连接单片机硬件电路,在仿真器中载入项目程序后进行实时仿真调试。
在keil uVision2 中编制程序:
(1)新建项目。启动uVision2,选择Project→New Project菜单项,打开对话框,输入项目文件名并选择保存路径。项目文件保存完后,弹出Select Device for TARGET‘TARGET1’对话框,是新建项目的CPU元器件选择,选AT89S52。
(2)在项目中添加源程序文件。在菜单中选择File→New,新建源程序文件。输入源程序,然后把程序保存在项目所在的目录中,为文件取一个名,若是C语言编写的程序,扩展名为.C,若是汇编语言编写的程序,扩展名为.ASM。接下来,将该文件添加到项目中,用鼠标在屏幕左边的Source Group1文件夹图标上右击弹出菜单,选择Add File to Group‘Source Group1’命令,弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗口,程序文件即可加到项目中。
(3)项目的编译、链接。将光标指向项目窗口中的文件名,并右击,在快捷菜单中选择Build target选项,uVision2将自动完成对当前项目中所有源程序模块的编译、链接,得到.HEX目标文件。
4.2 报警系统的程序设计
自动报警器软件部分采用模块化设计,分为主程序、扫键程序等等。应用汇编语言编程,使用G6W型仿真器,在Keil uVision2环境里运行,最后用烧写器将程序写入单片机。编程语言的软件设计采用MCS-S 1汇编语言编写自动报警器中相关程序(如拨号、检测等)。 4.2.1 主程序设计
主程序首先对单片机进行初始化,然后进入扫键程序,开始布防。当检测到意外情况(有人入侵)时,通过标志位进行警情判别,然后进入报警程序进行分类报警,主程序的程序流程图见图4.2。主程序部分如下所示:
;********************************
28
莱芜职业技术学院毕业论文 第4章 系统软件设计
; 主程序
;******************************** ; START:
ACALL CLEAR MAIN:
LCALL KEYWORK
JB 00H,FUN0 ;判断20H.0位为1时执行FUN0 JB 01H,FUN1 ;判断20H.1位为1时执行FUN1
AJMP MAIN ;返回主程序MAIN
29
莱芜职业技术学院毕业论文 第4章 系统软件设计
图4.2 主程序流程图 图4.3 扫键程序流程图 4.2.2 扫键程序设计
图4.3为扫键程序流程图。程序开始,首先置P1口为高电平,为输入状态。然后循环依次检测P1.0﹑P1.1口,当某一管脚为高电平时,进行防抖测试,如确认为报警信号,则置相应的标志位为1,以便以后判别报警位置,标志位为单片机内部RAM的20H单元的低三位20H.0、20H.1,返回主程序。
;******************************** ; 扫键程序
;******************************** ; KEYWORK: MOV P1,#0FFH ; KEY0:
LCALL DL10ms ;延时10ms消抖 JB P1.0,OUT0 ;若为抖动误报则跳出
SETB 00H ;20H.0位置1(说明为位置1报警) CLR 01H
JNB P1.0,KEY0 ; 判断是否为支路1报警 JNB P1.1,KEY1 ; 判断是否为支路2报警 RET
OUT0: RET ; KEY1:
LCALL DL10ms ;延时10ms消抖 JB P1.1,OUT1 ;若为抖动误报则跳出
SETB 01H ;20H.1位置1(说明为位置2报警) CLR 00H
30
莱芜职业技术学院毕业论文 第4章 系统软件设计
OUT1: RET
4.3 TC35通信程序设计
家庭智能防盗报警系统检测使用 WINDOWS 自带的“超级终端”软件,为能实现电脑与模块的直接通信,此处设置波特率为9600 Hz,8位数据位,1位停止位,无奇偶校验。该系统以微控制器 AT89S52单片机为监控模块。 4.3.1 发送“AT ”指令
当单片机检测到有外部中断时,向用户发送报警短信息,这里每次发送和接收的指令需要有一定规格,即短信内容必须符合时限规定的协议,使得收发双方可解释该指令,并处理指令提示的内容。
TC35 模块一般提供 2 种短信收发模式:TEXT 和PDU(protocol data unit)模式。PDU模式可采用UNICODE 编码发送英文、汉字,但合成PDU码比较复杂,而TEXT模式只能发送英文,但无需编码,本程序采用 TEXT 模式。
当模块与电脑通信成功时,“超级终端”界面会显示“^SYSSTART”字样,然后输入“AT”回车,可以看到返回信息:“OK”。 4.3.2 设置短信模式
短消息设置命令:AT+CMGF=1 回车,从终端画面看到返回“OK”,则说明修改成功。
设置短信息的程序编写:
send_str(\短信格式为 TEXT send_str(\回车 send_str(\delay_1ms(10); send_str(\send_char('\send_str(\
send_char('\上面四句是短信发送的目标号码 send_str(\回车
31
//\\x0a 换行