资源简介
两片8255实现车灯、油门、刹车、转向、换挡功能,使用步进电机模拟轮子,数码管显示速度。
代码片段和文件信息
/* Main.c file generated by New Project wizard
*
* Created: 周五 1月 6 2017
* Processor: 8086
* Compiler: Digital Mars C
*
* Before starting simulation set Internal Memory Size
* in the 8086 model properties to 0x10000
*/
#define base8255 8000H //设定值
#define PA base8255+00H*2 //PA口
#define PB base8255+01H*2 //PB口
#define PC base8255+02H*2 //PC口(本次未使用)
#define COM8255 base8255+03H*2 //工作方式
#define Bbase8255 9000H //设定值
#define BPA 9000H //PA口
#define BPB 9040H //PB口
#define BPC 9080H //PC口(本次未使用)
#define COMB8255 90C0H //工作方式
#define ADC 0E002H
char xiangxu[8]={02H06H04H0CH08H09H01H03H}; //相序表
void outp(unsigned int addr char data) {
__asm {
mov dx addr
mov al data
out dx al
}
}
// Read a byte from the specified I/O port
char inp(unsigned int addr) {
char result;
__asm {
mov dx addr
in al dx
mov result al
}
return result;
}
void delay(){
for(int i=0;i<50;++i){
for(int j=0;j<120;++j)
;
}
}
void delayms(int ms){
for(int i=0;i for(int j=0;j<122;++j){}
}
char tmpjudge;
int m_i=0t_i=0;
char tmp1tmp2;
int spd=0;
unsigned int speed=0;
unsigned char speed1=0speed2=0speedshow=0;
void main(void)
{
//设置工作方式:10001010(特征位=1,A组0方式=00,PA输出=0,PC上半输入=1,B组0方式=0,PB输入=1,PC下半输出=0)
outp(COM825508AH);
//设置工作方式:10001000(特征位=1,A组0方式=00,PA输出=0,PC上半输出=1,B组0方式=0,PB输出=0,PC下半输出=0)
outp(COMB8255088H);
outp(PA0FFH);
outp(PC0FFH);
outp(PB00H);
while (1){
tmp=inp(PB);//车灯判断,用到PB口低三位,输出到PA口低四位
tmp=tmp&06H;
if(tmp==04H){
tmp=inp(PB);
tmp1=(tmp)&01H;
if(tmp1==00H)tmp=0b11111010;
if(tmp1==01H)tmp=0b11111011;
outp(PAtmp);
}
else if(tmp==02H){
tmp=inp(PB);
tmp1=(tmp)&01H;
if(tmp1==00H)tmp=0b11111100;
if(tmp1==01H)tmp=0b11111101;
outp(PAtmp);
}
else {
tmp=inp(PB);
tmp1=(tmp)&01H;
if(tmp1==00H)tmp=0b11111110;
if(tmp1==01H)tmp=0b11111111;
outp(PAtmp);
}
unsigned char tmp3=inp(PB);//速度判断,用到PB口3~6位,输出到PC口低四位
tmp3=tmp3&0b11111000;
switch(tmp3){
case 0b11110000:spd=-1;break;
case 0b11101000:spd=0;break;
case 0b11011000:spd=1;break;
case 0b10111000:spd=2;break;
case 0b01111000:spd=3;break;
}
if(spd!=-1 && spd!=0){
outp(PCxiangxu[m_i]);
if(m_i>0)--m_i;
else m_i=7;
tmp=inp(PA);
tmp=tmp&0b11111111;
outp(PAtmp);
if(speed<22*spd)speed+=(spd+1);
else speed-=(spd+1);
delayMS((4-spd)*35);
}
else if(spd==-1){
outp(PCxiangxu[m_i]);
if(m_i<7)++m_i;
else m_i=0;
tmp3=inp(PA);
tmp3=tmp3&0b11110111;
outp(PAtmp3);
if(speed>5)speed-=2;
else speed=5;
delayMS(50);
}
else if(spd==0){
if(speed>0)speed-=1;
delayMS(50);
}
tmp=inp(PA);//转方向判断,用到PC口高四位,输出到PA口高四位
tmp1=tmp&(0FH);
tmp=inp(PC);
tmp2=tmp&(030H);
if(tmp2==20H){
if(t_i>0)--t_i;
else t_i=7;
tmp3=(xiangxu[t_i])<<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-01-07 00:23 CourseDesign - 副本\
目录 0 2017-01-06 22:39 CourseDesign - 副本\8086\
目录 0 2017-01-07 00:14 CourseDesign - 副本\8086\Debug\
文件 4664 2017-01-07 08:59 CourseDesign - 副本\8086\Debug\Debug.exe
文件 3361 2017-01-07 08:59 CourseDesign - 副本\8086\Debug\main.obj
文件 1341 2017-01-07 08:59 CourseDesign - 副本\8086\Debug\Makefile
文件 190 2017-01-07 00:14 CourseDesign - 副本\8086\Debug\rtl.obj
文件 3840 2017-01-07 08:59 CourseDesign - 副本\8086\main.c
文件 559 2017-01-06 16:25 CourseDesign - 副本\8086\rtl.asm
文件 30381 2017-01-07 00:13 CourseDesign - 副本\Backup Of CourseDesign.pdsbak
文件 30431 2017-01-07 00:23 CourseDesign - 副本\CourseDesign.pdsprj
文件 4812 2017-01-07 09:02 CourseDesign - 副本\CourseDesign.pdsprj.ZALUS.Ben Zalus.workspace
文件 25453 2017-01-06 21:41 CourseDesign - 副本\Last Loaded CourseDesign.pdsbak
相关资源
- proteus+8086 步进电机控制
- proteus+8086 流水灯实现
- 8086仿真-LCD12864
- DS18B20 多点温度测量 用proteus仿真 课
- 基于51单片机的ds18b20的proteus仿真
- 51单片机12864液晶屏proteus仿真源代码
- 微机接口实验8086实现电子表
- 路灯控制系统完整版+PROTEUS仿真
- proteus电子音乐闹钟
- proteus-8位数码管显示
- 基于51单片机的LED灯控制Proteus仿真
- 8253 8255接口模拟交通信号灯的实时控
- 数字电子钟proteus仿真
- 8255扫描键盘显示实验
- 直流数控电源Proteus仿真1~10V输出
- 51单片机车轮测速的proteus仿真
- 微机接口经典 8086 Proteus8251_8253_8255_
- 基于51单片机Max7219驱动8×8点阵PROTEU
- 12864液晶屏.zip
- 单片机交通灯设计基于proteus和keil5
- 智能频率计的设计与制作(AVR)prot
- 微机原理课程设计(亲测可用)--吉利
- Proteus数字时钟电路仿真.rar
- 基于89C51的全自动洗衣机控制器Prote
- 实验2 软件中断实验加8259硬件实验
- 实验1 简单IO应用—流水灯控制
- Proteus的电子温度检测仿真系统
- emu8086汉化
- 基于51单片机和Proteus仿真的波形发生
- 51单片机ADC0832_1602 proteus仿真源程序加
评论
共有 条评论