100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 哈工大 c语言测试与系统控制 ad 哈工大——c语言在测量与控制中应用实验报告.pdf...

哈工大 c语言测试与系统控制 ad 哈工大——c语言在测量与控制中应用实验报告.pdf...

时间:2019-09-19 09:33:32

相关推荐

哈工大 c语言测试与系统控制 ad 哈工大——c语言在测量与控制中应用实验报告.pdf...

哈工大——c语言在测量与控制中应用实验报告

Harbin Institute of Technology

Harbin Institute of Technology

C 语言在测量与控制中的

C 语言在测量与控制中的

应用

应用

实验报告

实验报告

专 业: 控制科学与工程

班 级:

学 号: 15S004001

姓 名:

设计时间:

实验一 AD/DA 数据采集实验

一、定时中断程序设计

实验的目的:

1. 掌握定时器/计数器8254 的工作原理与编程。

2. 熟悉中断控制器8259A 的工作原理与使用方法。

3. 掌握硬件中断程序设计的原理与编程方法。

实验条件:

PC 机,WinXP 操作系统,Turbo C 2.0

程序设计要求:

程序运行首先提示输入中断服务的时间间隔T 和中断服务次数N,正确输入

后,回车,则每间隔指定的时间T 会在屏幕上显示一些字符,显示N 次后,则不

再显示,如果N=0,则会无限显示下去,直到在键盘上按下指定的按键,才停止

显示。停止显示后,按任意键程序结束运行。

1. 时间间隔 T 为以毫秒为单位浮点数,可处理范围至少要 0.001 毫秒到 5000

毫秒。

2. 屏幕上的显示信息要有助于验证程序运行结果的正确。

3. 输入错误信息要有提示,并允许重新输入。

4. 编程时要尽量把具有独立功能的代码写成子程序。

5. 注意变量的命名要清晰,代码的注释要丰富。

6. 后面的三个实验均要在此程序基础上编程、添加代码,注意程序的结构。

设计思路

1. 如何实现任意时间间隔?(附程序流程图)

答:时间间隔的选择是根据用户需求进行相应设置。程序第一步用户输入时间间隔 T

(ms ),在程序设计时,根据用户输入T (ms ),并通过使用相应的语句对8254 的通道

0 定时器设计数初值,然后将计数初值先写低8 位,后写高8 位的方式,初始化通道0 。

代码实现为:

通过CalculateInterruptPara()函数来计算计数初值的高低8 位:

void CalculateInterruptPara(double DTimeInterval,int *ILongCount,unsigned char *CL8,unsigned

char *CH8)

{

double TotalCounter=DTimeInterval*1193;

int Residue;

ILongCount[0]=TotalCounter/65536;

Residue=TotalCounter-65536*ILongCount[0];

CH8[0]=Residue>>8;

CL8[0]=Residue&0x0FF;

}

通过SetupTimerInterrupt()函数来对8254 的通道0 定时器的初始化:

void SetupTimerInterrupt(void)

{

/*Start Interrupt*/

disable();

oldint8=getvect(0x08);

outportb(0x43,0x36);

if(LongCount==0)

{

outportb(0x40,L8);

outportb(0x40,H8);

}

else

{

outportb(0x40,0x00);

outportb(0x40,0x00);

}

setvect(0x08,myint8);

enable();

}

从而,每隔 T (ms )时间,8259A 的中断请求输入线IRO 上电位变换产生的中断请求

信号引起中断服务的执行。由于用户的时间间隔选择是任意的,通过以上设计即可实现任意

时间间隔。时钟中断流程图如下所示。

2. 如何设计显示信息便于验证定时的正确性?(文字表述及必要

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。