c语言怎么编写子程序

c语言怎么编写子程序,第1张

程序参考网上的资源,在此谢谢这些无私奉献的朋友!!!\x0d\ ;/\x0d\ / 实验目的:1掌握键盘扫描的原理以及十/十六进制的转换\x0d\ 2了解单片机输入和输出的过程,以及如何对数据进行采集的\x0d\ 实验内容:键盘上对应有16个按键,从0到F,按下相应的键会在数码管上显示相应的数字,\x0d\ 其中K0到K15是采用44的方式连接的\x0d\ /\x0d\ ;\x0d\ ; 0 1 2 3 ---P20\x0d\ ; 4 5 6 7 ---P21\x0d\ ; 8 9 A B ---P22\x0d\ ; C D E F ---P23\x0d\ ; | | | |\x0d\ ; P24 P25 P26 P27\x0d\ ;\x0d\\x0d\ORG 0000h\x0d\LJMP MAIN\x0d\ORG 0030h\x0d\MAIN:\x0d\MOV DPTR,#TAB ;将表头放入DPTR\x0d\LCALL KEY ;调用键盘扫描程序\x0d\MOVC A,@A+DPTR ;查表后将键值送入ACC\x0d\MOV P0,A ;将Acc值送入P0口\x0d\CLR P13 ;开显示\x0d\LJMP MAIN ;返回调用子程序反复循环显示\x0d\\x0d\KEY: LCALL KS ;调用检测按键子程序\x0d\ JNZ K1 ;有键按下继续\x0d\ LCALL DELAY2 ;无键按下调用延时去抖动程序\x0d\ AJMP KEY ;返回继续检测有无按键按下\x0d\K1: LCALL DELAY2\x0d\ LCALL DELAY2 ;有键按下继续延时去抖动\x0d\ LCALL KS ;再一次调用检测按键程序\x0d\ JNZ K2 ;确认有按下进行下一步\x0d\ AJMP KEY ;无键按下返回继续检测\x0d\K2: MOV R2,#0EFH ;将扫描值送入 R2暂存\x0d\ MOV R4,#00H ;将第一列的列值00H送入R4暂存,R4用于存放列值。\x0d\K3: MOV P2,R2 ;将R2的值送入P2口\x0d\L6: JB P20,L1 ;P20等于1跳转到L1\x0d\ MOV A,#00H ;将第一行的行值00H送入ACC\x0d\ AJMP LK ;跳转到键值处理程序\x0d\L1: JB P21,L2 ;P21等于1跳转到L2\x0d\ MOV A,#04H ;将第二行的行值送入ACC\x0d\ AJMP LK ;跳转到键值理程序进行键值处理\x0d\L2: JB P22,L3 ;P12等于1跳转到L3\x0d\ MOV A,#08H ;将第三行的行值送入ACC\x0d\ AJMP LK ;跳转到键值处理程序\x0d\L3: JB P23,NEXT ;P23等于1跳转到NEXT处\x0d\ MOV A,#0cH ;将第四行的行值送入ACC\x0d\LK: ADD A,R4 ;行值与列值相加后的键值送入A\x0d\ PUSH ACC ;将A中的值送入堆栈暂存\x0d\K4: LCALL DELAY2 ;调用延时去抖动程序\x0d\ LCALL KS ;调用按键检测程序\x0d\ JNZ K4 ;按键没有松开继续返回检测\x0d\ POP ACC ;将堆栈的值送入ACC\x0d\ RET\x0d\\x0d\NEXT:\x0d\ INC R4 ;将列值加一\x0d\ MOV A,R2 ;将R2的值送入A\x0d\ JNB ACC7,KEY ;扫描完成跳至KEY处进行下一回合的扫描\x0d\ RL A ;扫描未完成将A中的值右移一位进行下一列的扫描\x0d\ MOV R2,A ;将ACC的值送入R2暂存\x0d\ AJMP K3 ;跳转到K3继续\x0d\KS: MOV P2,#0FH ;将P2口高四位置0低四位值1\x0d\ MOV A,P2 ;读P2口\x0d\ XRL A,#0FH ;将A中的值与A中的值相异或\x0d\ RET ;子程序返回\x0d\DELAY2: ;40ms延时去抖动子程序8FA2=40ms\x0d\ MOV R5,#08H\x0d\L7: MOV R6,#0FAH\x0d\L8: DJNZ R6,L8\x0d\ DJNZ R5,L7\x0d\ RET\x0d\\x0d\TAB:\x0d\ DB 0C0H;0\x0d\ DB 0F9H;1\x0d\ DB 0A4H;2\x0d\ DB 0B0H;3\x0d\ DB 099H;4\x0d\ DB 092H;5\x0d\ DB 082H;6\x0d\ DB 0F8H;7\x0d\ DB 080H;8\x0d\ DB 090H;9\x0d\ DB 088H;A\x0d\ DB 083H;b\x0d\ DB 0C6H;C\x0d\ DB 0A1H;d\x0d\ DB 086H;E\x0d\ DB 08EH;F\x0d\END

数据库应用系统的开发是一项软件工程。一般可分为以下几个阶段:

1规划

2需求分析

3概念模型设计

4 逻辑设计

5物理设计

6程序编制及调试

7运行及维护。

这些阶段的划分目前尚无统一的标准,各阶段间相互联接,而且常常需要回溯修正。

数据库应用系统的开发过程中,每个阶段的工作成果就是写出相应的文档。每个阶段都是在上一阶段工作成果的基础上继续进行,整个开发工程是有依据、有组织、有计划、有条不紊地展开工作。

1规划

规划的主要任务就是作必要性及可行性分析。

在收集整理有关资料的基础上,要确定将建立的数据库应用系统与周边的关系,要对应用系统定位,其规模的大小、所处的地位、应起的作用均须作全面的分析和论证。

明确应用系统的基本功能,划分数据库支持的范围。分析数据来源、数据采集的方式和范围,研究数据结构的特点,估算数据量的大小,确立数据处理的基本要求和业务的规范标准。

规划人力资源调配。对参与研制和以后维护系统运作的管理人员、技术人员的技术业务水平提出要求,对最终用户、 *** 作员的素质作出评估。

拟 定设备配置方案。论证计算机、网络和其他设备在时间、空间两方面的处理能力,要有足够的内外存容量,系统的响应速度、网络传输和输入输出能力应 满足应用需求并留有余量。要选择合适的OS,DBMS和其它软件。设备配置方案要在使用要求、系统性能、购置成本和维护代价各方面综合权衡。

对系统的开发、运行、维护的成本作出估算。预测系统效益的期望值。

拟定开发进度计划,还要对现行工作模式如何向新系统过渡作出具体安排。

规划阶段的工作成果是写出详尽的可行性分析报告和数据库应用系统规划书。内容应包括:系统的定位及其功能、数据资源及数据处理能力、人力资源调配、设备配置方案、开发成本估算、开发进度计划等。

可行性分析报告和数据库应用系统规划书经审定立项后,成为后续开发工作的总纲。

2需求分析

需求分析大致可分成三步来完成。

(1) 需求信息的收集, 需求信息的收集一般以机构设置和业务活动为主干线,从高层中层到低层逐步展开

(2) 需求信息的分析整理, 对收集到的信息要做分析整理工作。数据流图(DFD, data flow diagram)是业务流程及业务中数据联系的形式描述。图41是一个简单的DFD 示例。

数据字典(DD, data dictionary)详细描述系统中的全部数据。

数据字典包含以下几个部分。

· 数据项:是数据的原子单位。

· 数据组项:由若干数据项组成。

· 数据流:表示某一数据加工过程的输入/输出数据。

· 数据存储:是处理过程中要存取的数据。

· 数据加工过程 数据加工过程的描述包括:数据加工过程名、说明、输入、输出、加工处理工作摘要、加工处理频度、加工处理的数据量、响应时间要求等。

数据流图既是需求分析的工具,也是需求分析的成果之一。数据字典是进行数据收集和数据分析的主要成果。

(3) 需求信息的评审 开发过程中的每一个阶段都要经过评审,确认任务是否全部完成,避免或纠正工作中出现的错误和疏漏。聘请项目外的专家参与评审,可保证评审的质量和客观性。

评审可能导致开发过程回溯,甚至会反复多次。但是,一定要使全部的预期目标都达到才能让需求分析阶段的工作暂告一个段落

需求分析阶段的工作成果是写出一份既切合实际又具有预见的需求说明书,并且附以一整套详尽的数据流图和数据字典。

3概念模型设计

概念模型不依赖于具体的计算机系统,他是纯粹反映信息需求的概念结构。

建模是在需求分析结果的基础上展开,常常要对数据进行抽象处理。常用的数据抽象方法是‘聚集’和‘概括’。

ER方法是设计概念模型时常用的方法。用设计好的ER图再附以相应的说明书可作为阶段成果

概念模型设计可分三步完成。

(1) 设计局部概念模型

① 确定局部概念模型的范围

② 定义实体

③ 定义联系

④ 确定属性

⑤ 逐一画出所有的局部ER图,并附以相应的说明文件

(2) 设计全局概念模型

建立全局ER图的步骤如下:

① 确定公共实体类型

② 合并局部ER图

③ 消除不一致因素

④ 优化全局ER图

⑤ 画出全局ER图,并附以相应的说明文件。

(3) 概念模型的评审

概念模型的评审分两部分进行

第一部分是用户评审。

第二部分是开发人员评审。

4逻辑设计

逻辑设计阶段的主要目标是把概念模型转换为具体计算机上DBMS所支持的结构数据模型。

逻辑设计的输入要素包括:概念模式、用户需求、约束条件、选用的DBMS的特性。

逻辑设计的输出信息包括:DBMS可处理的模式和子模式、应用程序设计指南、物理设计指南。

(1) 设计模式与子模式

关系数据库的模式设计可分四步完成。

① 建立初始关系模式

② 规范化处理

③ 模式评价

④ 修正模式

经过多次的模式评价和模式修正,确定最终的模式和子模式。

写出逻辑数据库结构说明书。

(2) 编写应用程序设计指南

根据设计好的模式和应用需求,规划应用程序的架构,设计应用程序的草图,指定每个应用程序的数据存取功能和数据处理功能梗概,提供程序上的逻辑接口。

编写出应用程序设计指南。

(3) 编写物理设计指南。

根据设计好的模式和应用需求,整理出物理设计阶段所需的一些重要数据和文档。例如,数据库的数据容量、各个关系(文件)的数据容量、应用处理频率、 *** 作顺序、响应速度、各个应用的LRA和TV、程序访问路径建议,等等。这些数据和要求将直接用于物理数据库的设计。

编写出物理设计指南。

5物理设计

物理设计是对给定的逻辑数据模型配置一个最适合应用环境的物理结构。

物理设计的输入要素包括:模式和子模式、物理设计指南、硬件特性、OS和DBMS的约束、运行要求等。

物理设计的输出信息主要是物理数据库结构说明书。其内容包括物理数据库结构、存储记录格式、存储记录位置分配及访问方法等。

物理设计的步骤如下:

(1) 存储记录结构

设计综合分析数据存储要求和应用需求,设计存储记录格式。

(2) 存储空间分配

存储空间分配有两个原则:

①存取频度高的数据尽量安排在快速、随机设备上,存取频度低的数据则安排在速度较慢的设备上。

②相互依赖性强的数据尽量存储在同一台设备上,且尽量安排在邻近的存储空间上。

从提高系统性能方面考虑,应将设计好的存储记录作为一个整体合理地分配物理存储区域。尽可能充分利用物理顺序特点,把不同类型的存储记录指派到不同的物理群中。

(3) 访问方法的设计

一个访问方法包括存储结构和检索机构两部分。存储结构限定了访问存储记录时可以使用的访问路径;检索机构定义了每个应用实际使用的访问路径。

(4) 物理设计的性能评价

① 查询响应时间

从查询开始到有结果显示之间所经历的时间称为查询响应时间。查询响应时间可进一步细分为服务时间、等待时间和延迟时间。

在物理设计过程中,要对系统的性能进行评价。性能评价包括时间、空间、效率、开销等各个方面。

⊙ CPU服务时间和I/O服务时间的长短取决于应用程序设计。

⊙ CPU队列等待时间和I/O队列等待时间的长短受计算机系统作业的影响。

⊙ 设计者可以有限度地控制分布式数据库系统的通信延迟时间。

② 存储空间

存储空间存放程序和数据。程序包括运行的应用程序、DBMS子程序、OS子程序等。数据包括用户工作区、DBMS工作区、OS工作区、索引缓冲区、数据缓冲区等。

存储空间分为主存空间和辅存空间。设计者只能有限度地控制主存空间,例如可指定缓冲区的分配等。但设计者能够有效地控制辅存空间。

③ 开销与效率

设计中还要考虑以下各种开销,开销增大,系统效率将下降。

⊙ 事务开销指从事务开始到事务结束所耗用的时间。更新事务要修改索引、重写物理块、进行写校验等 *** 作,增加了额外的开销。更新频度应列为设计的考虑因素。

⊙ 报告生成开销指从数据输入到有结果输出这段时间。报告生成占用CPU及I/O的服务时间较长。设计中要进行筛选,除去不必要的报告生成。

⊙ 对数据库的重组也是一项大的开销。设计中应考虑数据量和处理频度这两个因数,做到避免或尽量减少重组数据库。

在物理设计阶段,设计、评价、修改这个过程可能要反复多次,最终得到较为完善的物理数据库结构说明书。

建立数据库时,DBA依据物理数据库结构说明书,使用DBMS提供的工具可以进行数据库配置。

在数据库运行时,DBA监察数据库的各项性能,根据依据物理数据库结构说明书的准则,及时进行修正和优化 *** 作,保证数据库系统能够保持高效率地运行。

6程序编制及调试

在逻辑数据库结构确定以后,应用程序设计的编制就可以和物理设计并行地展开

程序模块代码通常先在模拟的环境下通过初步调试,然后再进行联合调试。联合调试的工作主要有以下几点:

(1) 建立数据库结构

根据逻辑设计和物理设计的结果,用DBMS提供的数据语言(DDL)编写出数据库的源模式,经编译得到目标模式,执行目标模式即可建立实际的数据库结构。

(2) 调试运行

数据库结构建立后,装入试验数据,使数据库进入调试运行阶段。运行应用程序,测试

(3) 装入实际的初始数据

在数据库正式投入运行之前,还要做好以下几项工作:

(1) 制定数据库重新组织的可行方案。

(2) 制定故障恢复规范

(3) 制定系统的安全规范

7运行和维护

数据库正式投入运行后,运行维护阶段的主要工作是:

(1) 维护数据库的安全性与完整性。

按照制定的安全规范和故障恢复规范,在系统的安全出现问题时,及时调整授权和更改密码。及时发现系统运行时出现的错误,迅速修改,确保系统正常运行。把数据库的备份和转储作为日常的工作,一旦发生故障,立即使用数据库的最新备份予以恢复。

(2) 监察系统的性能。

运 用DBMS提供的性能监察与分析工具,不断地监控着系统的运行情况。当数据库的存储空间或响应时间等性能下降时,立即进行分析研究找出原因,并 及时采取措施改进。例如,可通修改某些参数、整理碎片、调整存储结构或重新组织数据库等方法,使数据库系统保持高效率地正常运作。

(3) 扩充系统的功能

在维持原有系统功能和性能的基础上,适应环境和需求的变化,采纳用户的合理意见,对原有系统进行扩充,增加新的功能。

mathh头文件,里面包含了很多数学函数,sin,cos等;

dosh头文件,里面包含了很多BIOS和DOS调用函数;

stdioh头文件,里面包含了标准输入输出函数;

stringh

字符串 *** 作函数;

stdlibh

字符串转int,

char,float,double,和相应的反转函数

下面给出Turbo

C的全部"h"文件。

Turbo

C头文件

ALLOCH

说明内存管理函数(分配、释放等)。

ASSERTH

定义

assert调试宏。

BIOSH

说明调用IBM—PC

ROM

BIOS子程序的各个函数。

CONIOH

说明调用DOS控制台I/O子程序的各个函数。

CTYPEH

包含有关字符分类及转换的名类信息(如

isalpha和toascii等)。

DIRH

包含有关目录和路径的结构、宏定义和函数。

DOSH

定义和说明MSDOS和8086调用的一些常量和函数。

ERRONH

定义错误代码的助记符。

FCNTLH

定义在与open库子程序连接时的符号常量。

FLOATH

包含有关浮点运算的一些参数和函数。

GRAPHICSH

说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的一些特殊结构。

IOH

包含低级I/O子程序的结构和说明。

LIMITH

包含各环境参数、编译时间限制、数的范围等信息。

MATHH

说明数学运算函数,还定了

HUGE

VAL

宏,

说明了matherr和matherr子程序用到的特殊结构。

MEMH

说明一些内存 *** 作函数(其中大多数也在STRINGH中说明)。

PROCESSH

说明进程管理的各个函数,spawn…和EXEC

…函数的结构说明。

SETJMPH

定义longjmp和setjmp函数用到的jmp

buf类型,说明这两个函数。

SHAREH

定义文件共享函数的参数。

SIGNALH

定义SIG[ZZ(Z]

[ZZ)]IGN和SIG[ZZ(Z]

[ZZ)]DFL常量,说明rajse和signal两个函数。

STDARGH

定义读函数参数表的宏。(如vprintf,vscarf函数)。

STDDEFH

定义一些公共数据类型和宏。

STDIOH

定义Kernighan和Ritchie在Unix

System

V

中定义的标准和扩展的类型和宏。还定义标准I/O

预定义流:stdin,stdout和stderr,说明

I/O流子程序。

STDLIBH

说明一些常用的子程序:转换子程序、搜索/

排序子程序等。

STRINGH

说明一些串 *** 作和内存 *** 作函数。

SYS\STATH

定义在打开和创建文件时用到的一些符号常量。

SYS\TYPESH

说明ftime函数和timeb结构。

SYS\TIMEH

定义时间的类型time[ZZ(Z]

[ZZ)]t。

TIMEH

定义时间转换子程序asctime、localtime和gmtime的结构,ctime、

difftime、

gmtime、

localtime和stime用到的类型,并提供这些函数的原型。

VALUEH

定义一些重要常量,包括依赖于机器硬件的和为与Unix

System

V相兼容而说明的一些常量,包括浮点和双精度值的范围。

以上就是关于c语言怎么编写子程序全部的内容,包括:c语言怎么编写子程序、使用AD0.NET开发数据库应用程序的开发流程,一般流程主要分为哪几个步骤、c语言中math.h和dos.h是干什么的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9529040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存