資源簡介
設(shè)計一個聲光報警器的硬件電路和控制程序。一旦按下SW3按鈕開關(guān),發(fā)光二級管按規(guī)律閃爍,同時揚聲器發(fā)出聲音;當(dāng)按下SW2按鈕開關(guān),發(fā)光二級管停止閃爍,聲音停止。
硬件設(shè)備包括一臺微機、一個MIFID微機實驗箱、插線若干。控制程序采用Intel8088宏匯編語言編寫。

代碼片段和文件信息
#include??????//kbhit();
#include??????//printf();
#include????????//delay();
#ifdef??????__cplusplus?????//if?in?C++?mode
????#define?__CPPARGS?...
#else
????#define?__CPPARGS
#endif
int?p?=?0x303;
int?pa?=?0x300;
int?pb?=?0x301;
int?pc?=?0x302;
int?pstate?=?0xb8;?//10111000b
int?p2?=?0x05; //00000101b
int?p1?=?0x03; //00000011b
int?p0?=?0x01; //00000001b
int?ou?=?0x307;
int?ou0?=?0x304;
int?ou1?=?0x305;
int?ou2?=?0x306;
int?mus_freq[]={262294330262262294330262
330349392330349392
392440392349330262392440392349330262
294196262294196262-1};
int?mus_time[]={88888888
88168816
444488444488
88168816};
void?interrupt?handler(__CPPARGS)??//數(shù)據(jù)采集中斷服務(wù)程序
{
int?i?=?0; //音符指針
int?getout?=?1;
int?c?=?0; //num5num6
int?pp?=?0;
double?mf=0;
disable();
//printf(“hdslkjdf\n“);
//關(guān)中斷
outportb(0xa1inportb(0xa1)&0xff);
outportb(0x21inportb(0x21)&0xff);
//設(shè)置計數(shù)器2,1,0
outportb(ou0xb6); //10110110b
outportb(ou0x70); //01110110b
outportb(ou0x36); //00110110b
while(getout)
{
if(kbhit())
{
if(getch()==0x1b)?
{
getout?=?0;//esc鍵按下返回
break;
}
}
if(mus_freq[i]==?-1)?i?=?0;
//顯示學(xué)號
if(c?==?0)
{
outportb(pb0xfa); //00000101b
c?=?1;
}
else
{
outportb(pb0xf9); //00000110b
c?=?0;
}
//揚聲器發(fā)聲設(shè)置
//置8255的PC1、PC0為1,使揚聲器發(fā)聲?
outportb(pp1);
outportb(pp0);
//設(shè)置8255工作狀態(tài)A口1,B/C口0
//outportb(ppstate);
//計數(shù)器2計數(shù)初值
mf?=?1193100.0/mus_freq[i];
//printf(“%d??%d\n“int(mf)%256int(mf/256));
outportb(ou2int(mf)%256);? //0x12348c
outportb(ou2int(mf/256));
//算延時的計數(shù)初值計數(shù)器0,1初值
mf?=?mus_time[i]*2;
//printf(“%d??%d\n“int(mf)%256int(mf/256));
outportb(ou0int(mf)%256); //2*37287?74568/32768
outportb(ou0int(mf/256));
//outportb(ou00x80);?
//outportb(ou00x80);
outportb(ou10);?
outportb(ou10x80);
//pc7
do{
pp?=?inportb(pc);?//10000000b;
//printf(“%x\n“pp);
pp?=?pp&0x80;
//printf(“%x\n“pp);
}while(pp?==?0); //?????????????????
//getch();
outportb(p0x0e); //00001110b
pp?=?inportb(pc);?
//printf(“%x\n“pp);
//置8255的PC1、PC0為0,使揚聲器關(guān)閉
outportb(pc0x02); //00000010b
outportb(pc0); //00000000b
i++;
}
//end_mus
outportb(pc0x2); //00000010b
outportb(pc0); //00000000b
outportb(0xa00x62);//發(fā)中斷結(jié)束命令(OCW2)向從片8259發(fā)EOI命令
??????????????//即指定從片8259的ISR2復(fù)位
?outportb(0x200x20);//向主片8259發(fā)EOI命令,結(jié)束當(dāng)前最高級中斷服務(wù)
outportb(0xa1inportb(0xa1)&0xfb);
outportb(0x21inportb(0x21)&0xfb);
outportb(p0x4);
//enable();
}
int?main()
{
int?status;
//int?getout=1;
int?check?=?0;
void?interrupt?(*oldhandler)(__CPPARGS);
oldhandler=getvect(0x72);//獲取原中斷向量
setvect(0x72handler);//設(shè)置新中斷向量
//設(shè)狀態(tài)字8255?
outportb(p0xb8);
outportb(pb0xff);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1160672??2009-04-17?13:20??接口課設(shè)\2VB.rar
?????文件????3571200??2010-07-07?19:58??接口課設(shè)\MFID微機實驗平臺.doc
?????文件???????5048??2010-07-07?21:03??接口課設(shè)\xiaolanz.asm
????..A..H.???????162??2010-07-07?20:08??接口課設(shè)\~$中斷控制的聲光報警器的設(shè)計-接口課程設(shè)計.doc
?????文件???????3691??2009-07-08?20:59??接口課設(shè)\基于中斷控制的聲光報警器的設(shè)計\music_final.cpp
?????文件???????4960??2009-07-08?20:59??接口課設(shè)\基于中斷控制的聲光報警器的設(shè)計\music_final_final_final.asm
?????文件?????209021??2009-07-08?20:59??接口課設(shè)\基于中斷控制的聲光報警器的設(shè)計\電路圖.JPG
?????文件?????175304??2009-11-14?15:45??接口課設(shè)\基于中斷控制的聲光報警器的設(shè)計.rar
?????文件????1885696??2010-07-09?01:36??接口課設(shè)\聲光報警器的設(shè)計.doc
????..A..H.???????162??2010-07-07?20:28??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\~$技術(shù)課程設(shè)計指導(dǎo)書.doc
?????文件??????32768??2010-06-30?08:18??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\接口技術(shù)課程設(shè)計指導(dǎo)書.doc
?????文件??????27136??2010-06-30?14:38??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\接口技術(shù)課程設(shè)計題目明細(xì)表(計0701班).xls
?????文件??????26624??2010-06-30?14:38??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\接口技術(shù)課程設(shè)計題目明細(xì)表(計0702班).xls
?????文件??????26112??2010-06-30?14:39??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\接口技術(shù)課程設(shè)計題目明細(xì)表(計0703班).xls
????..A..H.???????162??2010-07-07?20:01??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書\~$報警器的設(shè)計.doc
?????文件??????57856??2010-06-30?13:28??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書\單通道微機信號采集接口的設(shè)計.doc
?????文件??????44032??2010-06-30?13:25??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書\雙機并行傳送接口的設(shè)計.doc
?????文件??????36864??2010-06-30?09:37??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書\聲光報警器的設(shè)計.doc
?????文件??????56832??2010-06-30?13:27??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書\多通道微機信號采集接口的設(shè)計.doc
?????文件?????692736??2010-06-30?12:25??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書\步進(jìn)電機控制接口的設(shè)計.doc
?????文件??????35328??2010-06-30?09:32??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書\音樂發(fā)生器的設(shè)計.doc
?????文件?????117326??2010-07-07?14:49??接口課設(shè)\微機接口課程設(shè)計(2010).rar
?????目錄??????????0??2010-07-09?01:40??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)\課程設(shè)計任務(wù)書
?????目錄??????????0??2010-07-09?01:40??接口課設(shè)\微機接口課程設(shè)計(2010)\微機接口課程設(shè)計(2010)
?????目錄??????????0??2010-07-09?01:40??接口課設(shè)\基于中斷控制的聲光報警器的設(shè)計
?????目錄??????????0??2010-07-09?01:40??接口課設(shè)\微機接口課程設(shè)計(2010)
?????目錄??????????0??2010-07-09?01:40??接口課設(shè)
-----------?---------??----------?-----??----
??????????????8169692????????????????????27
............此處省略0個文件信息
- 上一篇:陣列信號處理經(jīng)典教材講義
- 下一篇:QQ昵稱下劃線內(nèi)含代碼
評論
共有 條評論