资源简介
实验要求:利用 8086 芯片,8253 芯片,8255 芯片等芯片实现对汽车系统的控制。实验结果由指示器显示。
代码片段和文件信息
#define IOCON 9006H//16位总线,高8位用来传送地址信号,低8位用来传输数据
#define IOA 9000H
#define IOB 9002H
#define IOC 9004H
#define AD0809 0E002H
#define OUT373 8000H
#define TCONTRO 0A006H
#define TCON0 0A000H
unsigned char table1[8]={0x220x260x240x2c0x280x290x210x23};//两个数组元素高位不同跟控制后车灯有关
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;
}
void delay(int i)
{
while(i--){};
}
void main(void)
{
unsigned char itmpinvtemp;
//初始化8253计数器工作命令
outp(TCONTRO0x16);//计数器0,只写计算值低8位,方式3,二进制计数
outp(TCON0100);//输入100HZ,输出1HZ
//初始化并行接口工作命令
outp(IOCON0x90);//A口作为输入B、C口作为输出
outp(IOB0x20);//初始化PB4口为高电压,防止后车灯闪烁
temp=0;//记录AD转换器输出的结果
i=0;//记录从A口读入的数据
while(1){
i=inp(IOA);//从A口读入数据
if(i==0xfe){//1档
v=70;
while(1){
//初始化AD0809工作命令
outp(AD08090);
in=inp(AD0809);
outp(OUT373in);
temp=~in;//取反
temp=temp/0x14;//等比例缩小到一定范围防止大于V,产生负数
for(tmp=0;tmp<8;tmp++){
outp(IOBtable1[tmp]);//向B口写数据 控制步进电机
outp(IOC0xf9);//向C口写数据 控制数码管
i=inp(IOA);//再次读A口数据,即监听是否按下其他档位
if(i==0xfd||i==0xf7||i==0xfb||i==0xef)break;
delay(v-temp);//延时
}
if(i==0xfd||i==0xf7||i==0xfb||i==0xef)break;
}
}
if(i==0xfd){//2档
v=50;
while(1){
outp(AD08090);
in=inp(AD0809);
outp(OUT373in);
temp=~in;
temp=temp/0x14;
for(tmp=0;tmp<8;tmp++){
outp(IOBtable1[tmp]);
outp(IOC0xa4);
i=inp(IOA);
if(i==0xfe||i==0xf7||i==0xfb||i==0xef)break;
delay(v-temp);
}
if(i==0xfe||i==0xf7||i==0xfb||i==0xef)break;
}
}
if(i==0xfb){//3档
v=30;
while(1){
outp(AD08090);
in=inp(AD0809);
outp(OUT373in);
temp=~in;
temp=temp/0x14;
for(tmp=0;tmp<8;tmp++){
outp(IOBtable1[tmp]);
outp(IOC0xb0);
i=inp(IOA);
if(i==0xfe||i==0xf7||i==0xfd||i==0xef)break;
delay(v-temp);
}
if(i==0xfe||i==0xf7||i==0xfd||i==0xef)break;
}
}
if(i==0xf7)//倒车
while(1){
for(tmp=0;tmp<8;tmp++){
outp(IOBtable2[tmp]);
outp(IOC0x08);
i=inp(IOA);
if(i==0xfe||i==0xfb||i==0xfd||i==0xef)break;
delay(80);
}
if(i==0xfe||i==0xfb||i==0xfd||i==0xef)break;
}
if(i==0xef){//刹车
outp(IOB0x30);
outp(IOC0x92);
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-07-03 19:34 汽车控制系统\
目录 0 2020-07-03 19:34 汽车控制系统\8086\
目录 0 2020-07-03 19:34 汽车控制系统\8086\Debug\
文件 3104 2016-01-07 16:39 汽车控制系统\8086\Debug\Debug.exe
文件 2016 2016-01-07 16:39 汽车控制系统\8086\Debug\main.obj
文件 1231 2016-01-07 16:39 汽车控制系统\8086\Debug\Makefile
文件 190 2016-01-07 16:39 汽车控制系统\8086\Debug\rtl.obj
文件 3028 2016-01-07 16:39 汽车控制系统\8086\main.c
文件 559 2016-01-03 21:13 汽车控制系统\8086\rtl.asm
文件 38287 2016-01-20 20:43 汽车控制系统\car.pdsprj
文件 1810 2020-06-08 23:28 汽车控制系统\car.pdsprj.DESKTOP-OEO3EFN.Lenovo.workspace
- 上一篇:6264和2764芯片构建存储系统实验
- 下一篇:DL/T645-2007
相关资源
- 6264和2764芯片构建存储系统实验
- 微机原理实验 、两个多位十进制数相
- 微处理器系统结构与嵌入式系统设计
- 微机原理硬件实验报告8255A并行接口应
- 西安电子科技大学 电院 复试真题!!
- 微机原理课程设计 倒计数器 汇编
- 微机原理与接口技术实验程序全整理
- 微机原理-不恢复余数除法程序
- 微机原理之出租车计费器
- 微机原理与接口技术课程设计-交通信
- 微机原理与接口技术-实验报告.pdf
- [微机原理与接口技术——基于8086和
- 《微机原理与应用》实验指导书--邹华
- 微机原理课程设计--温度测试系统/A
- 微机接口课设(微机控制的饮料包装
- 基于8255实现七人抢答器LED显示微机原
- 微机原理课程设计—菜单程序汇编
- 中南大学微机原理与接口技术所有实
- 测控课程设计_出租车计价器含报告
- 中南大学微机原理汽车灯信号控制系
- 微机原理课程设计之利用D/A芯片实现
- 微机原理课程设计共30个
- 微机原理课程设计---密码键盘
- 微机原理课程设计——交通灯控制系
- 8086交通灯
- 交通信号灯模拟控制的设计
- 空调模拟控制器程序设计
- 微机原理与接口技术课程设计——汽
- proteus微机原理小程序;洗衣机控制器
- 微机原理答案 课后习题 ~~~~~
评论
共有 条评论