定時(shí)與中斷接口程序設(shè)計(jì)_第1頁(yè)
定時(shí)與中斷接口程序設(shè)計(jì)_第2頁(yè)
定時(shí)與中斷接口程序設(shè)計(jì)_第3頁(yè)
定時(shí)與中斷接口程序設(shè)計(jì)_第4頁(yè)
定時(shí)與中斷接口程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

試驗(yàn)1 定時(shí)與中斷接口程序設(shè)計(jì)一試驗(yàn)?zāi)康牧私舛〞r(shí)器/8253、并行I/O8255A在PC機(jī)中的電路連接方法;學(xué)習(xí)使用TURBOC++8253、8255進(jìn)展編程操作;生疏攔截PC機(jī)中斷向量的TC++編程方法。二試驗(yàn)內(nèi)容1.8253、8255在PC/XT機(jī)中的電路連接介紹D7…D0D7…D0D7…D0D7…D0OUT08259IRQ0,中斷類型=8IO/MA9…A2地址譯碼OUT2GATE2CLK0,1,2&放大CS40H~43H1.19MHz地址譯碼CSPB0PB160H~63H8255IORRDGATE0+5VIOWWRCLK0A0A0OUT18237的DRAMA1A1GATE1CLK1+5VPC機(jī)啟動(dòng)后,系統(tǒng)設(shè)置的初始狀態(tài)為:芯片有關(guān)工作方式初值運(yùn)行狀況82530#:方式3〔方波發(fā)生器〕計(jì)數(shù)初值:0000HOUT55ms方波至8259的IRQ02#:?〔1KHz〕?(1KHz方波)8255出〕掌握蜂鳴器發(fā)聲。0:不發(fā)聲,1:發(fā)聲8259IRQ0:允許中斷中斷類型號(hào):8CPU8號(hào)中斷表中,82532#的工作方式和計(jì)數(shù)初值未知,要求自己設(shè)置。2.程序要求利用TURBOC++開發(fā)環(huán)境設(shè)計(jì)程序,實(shí)現(xiàn)如下功能:程序啟動(dòng)時(shí),要求輸入定時(shí)時(shí)間,以秒為單位。按秒計(jì)時(shí),每秒到達(dá)時(shí),在屏幕上顯示當(dāng)前為第幾秒,同時(shí)蜂鳴器發(fā)出短促叫聲;TimeUp三試驗(yàn)環(huán)境硬件環(huán)境:PC機(jī)一臺(tái);軟件環(huán)境:操作系統(tǒng)不限,TURBOC++3.0。四試驗(yàn)步驟建立源文件啟動(dòng)TURBOC++3.0,建立Timer.CPPD:\×××〔學(xué)號(hào)〕\Timer.CPP;設(shè)置TC工作名目選菜單Options/Directories1、23、4欄填寫您的文件存放名目,OK。如此,TC生成的可執(zhí)行文件等將會(huì)存放到此工作名目下。樣例如下:輸入源程序以下源程序僅供參考。#include <stdio.h> //支持標(biāo)準(zhǔn)輸入輸出,如printf。#include <dos.h> //支持接口訪問(wèn)、中斷向量操作函數(shù)#include <STDLIB.H> //支持exit函數(shù)#ifdef cplusplus //定義C++使用的中斷函數(shù)標(biāo)識(shí)符。假設(shè)是×××.C程序,則不需要#define CPPARGS...#else#endif

#define CPPARGSint nTick=0,sec=0,flag=0;unsignedchar sys_PB,my_PB;voidinterruptfar(*sys_int_08)( CPPARGS); //假設(shè)是×××.C,則函數(shù)參數(shù)不寫voidinterruptfarmy_int_08( CPPARGS) //假設(shè)是×××.C,則函數(shù)參數(shù)不寫{//855ms825308259IRQ0申請(qǐng)中斷++nTick;if(tinck==1)outportb(0x61,my_PB); //開頭鳴叫elseif(tinck==3) outportb(0x61,sys_PB); //停頓鳴叫elseif(nTick>18){//1second/55ms18flag=1;nTick=0;sec++;}sys_int_08; //調(diào)用系統(tǒng)的中斷向量}//==========================================void main{ unsigned int Time_up;printf(“PleaseinputUpTime(5--30):“);scanf(“%d“,&Time_up);printf(“\n“);if(Time_up<5||Time_up>30){ printf(“InputError!“);exit(1); //完畢程序}outportb(0x63,0x82);//8255,PB為輸入方式sys_PB=inportb(0x61);//PB口,內(nèi)容my_PB=sys_PB|0x03;//PB2位〔PB0,PB1〕1outportb(0x63,0x80);//8255,PB為輸出方式//825321KHz方波,送到揚(yáng)聲器,使揚(yáng)聲器發(fā)聲outportb(0x43,0xb6);//CW=10110110B23,二進(jìn)制outportb(0x42,0xa6);//lowbyte,outportb(0x42,0x04);//highbyte,0x04a6=1190,f=1.19MHz,out=f/1190=1000Hzsys_int_08=getvect(0x08); //保存系統(tǒng)的中斷向量setvect(0x08,my_int_08); //設(shè)置系統(tǒng)向量while(1){ if(flag==1){ flag=0;printf(“%d “,sec);if(sec==Time_up)break;}}printf(“TimerUp!\n\n“);outportb(0x61,sys_PB); //恢復(fù)系統(tǒng)的PB口狀態(tài)setvect(0x08,sys_int_08); //恢復(fù)系統(tǒng)的中斷向量}運(yùn)行程序,再完成如下內(nèi)容〔1〕8253的通道0在程序中起什么作用?為什么在程序中沒(méi)有對(duì)其進(jìn)展初始化及賦初值?82530#的初值,使計(jì)時(shí)精度嚴(yán)格為1秒。1000ms。55ms的定時(shí)=65535×1/1.19MHzmy_int_08〔〕函數(shù)什么時(shí)候被調(diào)用?將mainDOS環(huán)境下執(zhí)行這個(gè)程序。本程序?yàn)槭裁闯惺蹹OS環(huán)境編寫程序,而不承受Windows環(huán)境?六試驗(yàn)報(bào)告果。試驗(yàn)報(bào)告的組成一般為:試驗(yàn)工程名稱〔要求嚴(yán)格與本指導(dǎo)書全都、試驗(yàn)日期、場(chǎng)地、承受的軟硬件環(huán)境,試驗(yàn)者;TV?試驗(yàn)?zāi)康模壕唧w寫要做成什么,期望得出什么結(jié)果。不要照抄本指導(dǎo)書。試驗(yàn)過(guò)程:具體寫操作的過(guò)程,對(duì)于源程序,不肯定全部寫出,但應(yīng)畫出模塊圖、流程圖。核心代碼可寫出。特別要寫出試驗(yàn)中遇到的問(wèn)題及分析、解決方法。試驗(yàn)結(jié)果及分析:照實(shí)寫出結(jié)果,對(duì)結(jié)果進(jìn)展分析,可進(jìn)一步提出改進(jìn)、提高的方法。試驗(yàn)1 定時(shí)與中斷接口程序設(shè)計(jì)一試驗(yàn)?zāi)康牧私舛〞r(shí)器/8253、并行I/O8255A在PC機(jī)中的電路連接方法;學(xué)習(xí)使用TURBOC++8253、8255進(jìn)展編程操作;生疏攔截PC機(jī)中斷向量的TC++編程方法。二試驗(yàn)內(nèi)容1.8253、8255在PC/XT機(jī)中的電路連接介紹D7…D0D7…D0D7…D0D7…D0OUT08259IRQ0,中斷類型=8IO/MA9…A2地址譯碼OUT2GATE2CLK0,1,2&放大CS40H~43H1.19MHz地址譯碼CSPB0PB160H~63H8255IORRDGATE0+5VIOWWRCLK0A0A0OUT18237的DRAMA1A1GATE1CLK1+5VPC機(jī)啟動(dòng)后,系統(tǒng)設(shè)置的初始狀態(tài)為:芯片有關(guān)工作方式初值運(yùn)行狀況82530#:方式3〔方波發(fā)生器〕計(jì)數(shù)初值:0000HOUT55ms方波至8259的IRQ02#:?〔1KHz〕?(1KHz方波)8255出〕掌握蜂鳴器發(fā)聲。0:不發(fā)聲,1:發(fā)聲8259IRQ0:允許中斷中斷類型號(hào):8CPU8號(hào)中斷表中,82532#的工作方式和計(jì)數(shù)初值未知,要求自己設(shè)置。2.程序要求利用TURBOC++開發(fā)環(huán)境設(shè)計(jì)程序,實(shí)現(xiàn)如下功能:程序啟動(dòng)時(shí),要求輸入定時(shí)時(shí)間,以秒為單位。按秒計(jì)時(shí),每秒到達(dá)時(shí),在屏幕上顯示當(dāng)前為第幾秒,同時(shí)蜂鳴器發(fā)出短促叫聲;TimeUp三試驗(yàn)環(huán)境硬件環(huán)境:PC機(jī)一臺(tái);軟件環(huán)境:操作系統(tǒng)不限,TURBOC++3.0。四試驗(yàn)步驟建立源文件啟動(dòng)TURBOC++3.0,建立Timer.CPPD:\×××〔學(xué)號(hào)〕\Timer.CPP;設(shè)置TC工作名目選菜單Options/Directories1、23、4欄填寫您的文件存放名目,OK。如此,TC生成的可執(zhí)行文件等將會(huì)存放到此工作名目下。樣例如下:輸入源程序以下源程序僅供參考。#include <stdio.h> //支持標(biāo)準(zhǔn)輸入輸出,如printf。#include <dos.h> //支持接口訪問(wèn)、中斷向量操作函數(shù)#include <STDLIB.H> //支持exit函數(shù)#ifdef cplusplus //定義C++使用的中斷函數(shù)標(biāo)識(shí)符。假設(shè)是×××.C程序,則不需要#define CPPARGS...#else#endif

#define CPPARGSint nTick=0,sec=0,flag=0;unsignedchar sys_PB,my_PB;voidinterruptfar(*sys_int_08)( CPPARGS); //假設(shè)是×××.C,則函數(shù)參數(shù)不寫voidinterruptfarmy_int_08( CPPARGS) //假設(shè)是×××.C,則函數(shù)參數(shù)不寫{//855ms825308259IRQ0申請(qǐng)中斷++nTick;if(tinck==1)outportb(0x61,my_PB); //開頭鳴叫elseif(tinck==3) outportb(0x61,sys_PB); //停頓鳴叫elseif(nTick>18){//1second/55ms18flag=1;nTick=0;sec++;}sys_int_08; //調(diào)用系統(tǒng)的中斷向量}//==========================================void main{ unsigned int Time_up;printf(“PleaseinputUpTime(5--30):“);scanf(“%d“,&Time_up);printf(“\n“);if(Time_up<5||Time_up>30){ printf(“InputError!“);exit(1); //完畢程序}outportb(0x63,0x82);//8255,PB為輸入方式sys_PB=inportb(0x61);//PB口,內(nèi)容my_PB=sys_PB|0x03;//PB2位〔PB0,PB1〕1outportb(0x63,0x80);//8255,PB為輸出方式//825321KHz方波,送到揚(yáng)聲器,使揚(yáng)聲器發(fā)聲outportb(0x43,0xb6);//CW=10110110B23,二進(jìn)制outportb(0x42,0xa6);//lowbyte,outportb(0x42,0x04);//highbyte,0x04a6=1190,f=1.19MHz,out=f/1190=1000Hzsys_int_08=getvect(0x08); //保存系統(tǒng)的中斷向量setvect(0x08,my_int_08); //設(shè)置系統(tǒng)向量while(1){ if(flag==1){ flag=0;printf(“%d “,sec);if(sec==Time_up)break;}}printf(“TimerUp!\n\n“);outportb(0x61,sys_PB); //恢復(fù)系統(tǒng)的PB口狀態(tài)setvect(0x08,sys_int_08); //恢復(fù)系統(tǒng)的中斷向量}運(yùn)行程序,再完成如下內(nèi)容〔1〕8253的通道0在程序中起什么作用?為什么在程序中沒(méi)有對(duì)其進(jìn)展初始化及賦初值?82530#的初值,使計(jì)時(shí)精度嚴(yán)格為1秒。1000ms。55ms的定時(shí)=65535×1/1.19MHzmy_int_08〔〕函數(shù)什么時(shí)候被調(diào)用?將mai

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論