資源簡介
微機接口課設Proteus 8086汽車控制系統福利,工程項目 + 電路圖 + C語言源代碼!
摘要為什么要大于50字?
摘要為什么要大于50字?

代碼片段和文件信息
//?8255芯片1的I/O端口地址,并口
#define?IOCON 8006H
#define?IOA?????8000H
#define?IOB?????8002H
//?8255芯片2的I/O端口地址,并口
#define?IOCON2??90C0H
#define?IOA2????9000H
#define?IOB2????9040H
//?0809芯片的I/O端口地址,AD數模轉換
#define?AD0809 0E002H
//?檔位
#define??STOP?????0xfb
#define??BACK?????0xfd
#define??SLOW?????0xfe
#define??MID??????0xf7
#define??FAST?????0xef
unsigned?char?tableNum[10]={0xc00xf90xa40xb00x990x920x820xf80x800x90};?//?0?1?2?...?9
unsigned?char?table1[8]={0x020x060x040x0c0x080x090x010x03};?//?八個方向,順時針,相隔?45°
unsigned?char?table2[8]={0x030x010x090x080x0c0x040x060x02};
void?outp(unsigned?int?addr?char?data)
//?Write?a?byte?to?the?specified?I/O?port
?{?__asm
????{?mov?dx?addr
??????mov?al?data
??????out?dx?al
????}
?}
char?inp(unsigned?int?addr)
//?Read?a?byte?from?the?specified?I/O?port
{?char?result;
???__asm
????{?mov?dx?addr
??????in?al?dx
??????mov?result?al
????}
???return?result;
}
?//?由檔位和油門決定速度(delay的長短)
unsigned?int?speedAndDelay(unsigned?char?gear?unsigned?char?digital)?
{
unsigned?int?accelerator?=?(unsigned?int)digital;
unsigned?int?delay?=?0;
unsigned?int?speed?=?0;
if(gear==SLOW)
{
delay?=?accelerator/4?+?150;???????//速度越慢,delay時間越長
if(accelerator<64)???????speed=4;
else?if(accelerator<128)?speed=3;
else?if(accelerator<192)?speed=2;
else?????????????????????speed=1;
}
else?if(gear==MID)
{
delay?=?accelerator/4?+?50;
if(accelerator<64)???????speed=7;
else?if(accelerator<128)?speed=6;
else?if(accelerator<192)?speed=5;
else?????????????????????speed=4;
}
else?if(gear==FAST)
{
delay?=?accelerator/4?+?10;
if(accelerator<64)???????speed=9;
else?if(accelerator<128)?speed=8;
else?if(accelerator<192)?speed=7;
else?????????????????????speed=6;
}
else?if(gear==BACK)
{
delay?=?200;
speed?=?2;??????????????//?倒車恒速
}
for(unsigned?int?i=0;?i {
}
return?speed;
}
void?print(unsigned?int?speed)
{
outp(IOA2?tableNum[speed]);?
outp(IOB2?0x08);
}
void?main(void)
{
unsigned?char?digital;???//?轉換成的數字信號
unsigned?char?gear=0;????//?汽車的檔位
????outp(IOCON0x90);
outp(IOCON2?0x80);
????while(1)
????{
????????gear=inp(IOA);
????????if(gear==BACK)??//?倒車
{
while(1)
{
????????
for(int?indx=0;indx<8;indx++)
{
outp(IOBtable2[indx]);
for(int?i=0;i<3;++i)???//?讀三次
{
gear=inp(IOA);
}
????????????????????if(gear==SLOW||gear==STOP||gear==MID||gear==FAST)
break;?
outp(AD08090);
digital=inp(AD0809);
unsigned?int?speed?=?speedAndDelay(BACK?digital);
print(speed);
}
if(gear==SLOW||gear==STOP||gear==MID||gear==FAST)
break;
}
????????}
if(gear==SLOW)??//?前進?1?
{
while(1)
{
for(int?indx=0;indx<8;indx++)
{
outp(IOBtable1[indx]);
for(int?i=0;i<3;++i)???//?讀三次
{
gear=inp(IOA);
}
if(gear==B
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4422??2016-01-19?16:20??8086\main.c
?????文件???????45330??2016-01-19?12:53??汽車控制高級系統——電路圖.PDF
?????目錄???????????0??2016-01-08?10:35??8086\
?????目錄???????????0??2016-01-08?17:49??8086\Debug\
?????文件????????3972??2016-01-19?12:24??8086\Debug\Debug.exe
?????文件????????1181??2016-01-19?12:24??8086\Debug\Makefile
?????文件????????2723??2016-01-19?12:24??8086\Debug\main.obj
?????文件?????????190??2016-01-08?10:58??8086\Debug\rtl.obj
?????文件?????????559??2016-01-08?09:48??8086\rtl.asm
?????文件???????32585??2016-01-19?12:56??汽車控制高級系統.pdsprj
評論
共有 條評論