哈工大 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. 如何設計顯示信息便于驗證定時的正確性?(文字表述及必要
總結
以上是生活随笔為你收集整理的哈工大 c语言测试与系统控制 ad,哈工大——c语言在测量与控制中应用实验报告.pdf...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人缴纳社会养老保险能退吗
- 下一篇: nexus5 刷原装android,ne