资源简介
利用 8255 实现对步进电机的控制,编写程序,用四路 IO 口实现环形脉冲的分配, 控制步进电机按固定方向连续转动。同时,要求按下 A 键时,控制步进电机正转;按下 B 键盘时,控制步进电机反转,最后有一个停止按钮。

代码片段和文件信息
/* Main.c file generated by New Project wizard
*
* Created: 周一 12月 19 2016
* 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 //工作方式
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 main(void)
{
char xiangxu[8]={02H06H04H0CH08H09H01H03H};
char tmpjudge;
int i=0;
//设置工作方式:10010000(特征位=1,A组0方式=00,PA输入=1,PC上半没用到=0,B组0方式=0,PB输出=0,PC下半没用到=0)
outp(COM8255090H);
while (1){
//读PA口
tmp=inp(PA);
judge=(tmp&0FH);
if(judge==0EH){ //顺时针
outp(PBxiangxu[i]);
if(i<7)++i;
else i=0;
}
else if(judge==0DH){ //逆时针
outp(PBxiangxu[i]);
if(i>0)--i;
else i=7;
}
else if(judge==0BH){ //停止
outp(PB00H);
}
delay();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-12-19 19:45 Exp6_motor\
目录 0 2016-12-19 18:47 Exp6_motor\8086\
目录 0 2016-12-19 19:39 Exp6_motor\8086\Debug\
文件 2060 2016-12-19 19:39 Exp6_motor\8086\Debug\Debug.exe
文件 1158 2016-12-19 19:39 Exp6_motor\8086\Debug\main.obj
文件 1296 2016-12-19 19:39 Exp6_motor\8086\Debug\Makefile
文件 190 2016-12-19 19:39 Exp6_motor\8086\Debug\rtl.obj
文件 1446 2016-12-19 19:39 Exp6_motor\8086\main.c
文件 561 2016-12-19 16:09 Exp6_motor\8086\rtl.asm
文件 20428 2016-12-19 18:47 Exp6_motor\Backup Of Exp6_motor.pdsbak
文件 19749 2016-12-19 19:45 Exp6_motor\Exp6_motor.pdsprj
文件 4538 2016-12-30 21:27 Exp6_motor\Exp6_motor.pdsprj.ZALUS.Ben Zalus.workspace
相关资源
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- proteus仿真 AT89C51输出各种波形
- 00
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- DS18B20分布式多点测温的Proteus仿真
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 51多机通信(内附Proteus及.hex文件)
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- 8086电子钟
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 8086微机应用DAC0832控制小直流电机转速
- 单片机驱动4相步进电机proteus仿真
- proteus元件库对照表 (整理清晰)
- 微机原理 十字路口交通灯控制 prot
- 中央空调室内智能温控器设计论文、
- 基于51单片机的交通灯设计
- 基于AT89C51的十字路口交通灯设计pro
- Proteus单片机仿真大全几百个part4
- Proteus升压电路仿真
- keil调试仿真技巧-从入门到精通
- 十字路口交通灯.pdsprj
评论
共有 条评论