试编写初始化程序,设8255A的端口A工作在方式0输入,B口工作在方式0输出,使PC5端

试编写初始化程序,设8255A的端口A工作在方式0输入,B口工作在方式0输出,使PC5端,第1张

编写初始化程序,要先写控制字,所以先假设8255A的端口A、端口B和控制字寄存器的端口地址分别为20H、21H和22H,那么初始化程序为:MOV DX,023H;MOV AL,10010000B;OUT DX,AL······(其中控制字为:10010000B,PC端多为输出端)。

8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。8255A由编程写入的控制字有两个:方式控制字和置位/复位控制字。

其中,方式控制字用于设置端口A,B,C的工作方式和数据传送方向,置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平,两个控制字公用一个端口地址。

扩展资料:

8255A具有3种基本的工作方式,在对8255A进行初始化编程时,应向控制字寄存器 写入方式选择控制字,用来规定8255A各端口的工作方式。

这3种基本工作方式是:

1、方式0——基本输入输出方式:适用于不需要用应答信号的简单输入输出场合,这种方式端口A和B可作为8位的端口,端口C的高4位和低4位可作为两个4位的端口;

2、方式1——选通输入输出方式:端口A和B作为数据口,均可工作于输入或输出方式,端口C的6根线用来产生或接受联络信号。

3、方式2——双向总线I/O方式:只有端口A可以工作于这种方式,端口A工作于方式2 时,端口C的5位(PC3~PC7)作A口的联络控制信号。

参考资料来源:百度百科-8255A芯片

单片机的

C8255 EQU 8406H

D8255C EQU 8404H

D8255A EQU 8400H

SPDTR EQU 20H

STEPPT EQU 21H

DIRLEQU 22H

DIRHEQU 23H

SWITCH EQU 24H

ORG 0000H

LJMPSTART

ORG 000BH

LJMPRUNINT

ORG 0100H

START:

MOV SP,#40H

LCALL INIT

LCALL CHKSWITCH

SJMP$-3

INIT:

CLR EA

MOV DPTR,#C8255

MOV A,#90H

MOVX@DPTR,A

MOV DPTR,#MRSTEP

MOV DIRH,DPH

MOV DIRL,DPL

MOV SPDTR,#00H

MOV SWITCH,#00H

MOV TMOD,#00H

SETBET0

SETBEA

RET

CHKSWITCH:

MOV DPTR,#D8255A

MOVXA,@DPTR

ANL A,#8FH

CJNE A,SWITCH,$+6

LJMPSWITCHRET

MOV SWITCH,A

CLR TR0

RLC A

JC $+7

MOV DPTR,#MLSTEP

SJMP $+5

MOV DPTR,#MRSTEP

MOV DIRL,DPL

MOV DIRH,DPH

RLC A

RLC A

RLC A

RLC A

JC SPD4

RLC A

JC SPD3

RLC A

JC SPD2

RLC A

JC SPD1

SJMP SPD0

SPD4: MOV A,#04H

SJMP CHGSPD

SPD3: MOV A,#03H

SJMP CHGSPD

SPD2:MOV A,#02H

SJMP CHGSPD

SPD1: MOV A,#01H

SJMP CHGSPD

SPD0:MOV A,#00H

CHGSPD:MOV DPTR,#SPD

MOVCA,@A+DPTR

MOV SPDTR,A

JZ $+4

SETBTR0

SWITCHRET:RET

RUNINT:

PUSHPSW

PUSHACC

PUSHDPH

PUSHDPL

CLR TR0

MOV TH0,SPDTR

MOV TL0,#00H

SETBTR0

MOV DPH,DIRH

MOV DPL,DIRL

MOV A,STEPPT

INC A

ANL A,#07H

MOV STEPPT,A

MOVCA,@A+DPTR

MOV DPTR,#D8255C

MOVX@DPTR,A

POP DPL

POP DPH

POP ACC

POP PSW

RETI

SPD: DB 00H,17H,77H,0A7H,0C7H

MRSTEP:DB 01H,03H,02H,06H,04H,0CH,08H,09H

MLSTEP:DB 08H,0CH,04H,06H,02H,03H,01H,09H

END

接线是PA0-PA7接K1-K8

PC0-PC3接SMA-SMD

CS55接8400H

还有另外一种自动实现快速正转反转或慢速正转反转之类的.如果是微机原理课的用8086/8088

ORG 0003H

LJMP KEY

ORG 001BH

LJMP TINT

ORG 4000H

LJMP REST

ORG 4200H

REST: MOV SP,#70H

ANL TMOD,#0F0H

ORL TMOD,#02H

MOV TH0,#05H

MOV TL0,#05H

MOVX @DPTR,A

MOV DPTR,#1B31H

MOV A,#0D3H

MOVX @DPTR,A

MOV A,#2AH

MOVX @DPTR,A

MOV A,#00H

MOVX @DPTR,A

MOV A,#40H

MOVX @DPTR,A

MOV A,#90H

MOVX @DPTR,A

MOV 20H,#00H

MOV 21H,#00H

MOV 22H,#00H

MOV 23H,#00H

MOV 24H,#0FFH

MOV 25H,#00H

MOV R0,#21H

MOV R2,#02H

MOV R7,#33H

SETB EX0

SETB ET1

SETB EA

MAIN: LCALL MANI

LJMP MAIN

MANI: MOV DPTR,#1B31H

MOV A,#90H

MOVX @DPTR,A

MOV DPL,#30H

MANI1: MOV A,@R0

LCALL TABLE

MOVX @DPTR,A

INC R0

DJNZ R2,MANI1

MOV R0,#21H

MOV R2,#02H

RET

TABLE: INC A

MOVC A,@A+PC

RET

DB 3FH,06H,5BH,4FH

DB 66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH

DB 39H,5EH,79H,71H

DB 73H

KEY: PUSH ACC

PUSH PSW

PUSH DPL

MOV DPL,#30H

MOVX A,@DPTR

ANL A,#3FH

ACCEL: CJNE A,#02H,DECEL

CLR TR1

MOV 25H,#01H

MOV 21H,#0AH

MOV 23H,#00H

SETB TR1

LJMP OUTK

DECEL: CJNE A,#06H,BACK

CLR TR1

MOV 25H,#02H

MOV 21H,#0EH

MOV 23H,#0C0H

SETB TR1

LJMP OUTK

BACK: CJNE A,#03H,FRONT

MOV 20H,#01H

MOV 22H,#0BH

LJMP OUTK

FRONT: CJNE A,#07H,STOP

MOV 20H,#00H

MOV 22H,#0FH

LJMP OUTK

STOP: MOV 25H,#00H

CJNE A,#08H,STEP1

CLR TR1

MOV 21H,#00H

LJMP OUTK

STEP1: CJNE A,#09H,STEP2

CLR TR1

MOV 21H,#01H

MOV 23H,#00H

SETB TR1

LJMP OUTK

STEP2: CJNE A,#0AH,STEP3

CLR TR1

MOV 21H,#02H

MOV 23H,#3FH

SETB TR1

LJMP OUTK

STEP3: CJNE A,#0BH,STEP4

CLR TR1

MOV 21H,#03H

MOV 23H,#66H

SETB TR1

LJMP OUTK

STEP4: CJNE A,#0CH,STEP5

CLR TR1

MOV 21H,#04H

MOV 23H,#7FH

SETB TR1

LJMP OUTK

SREP5: CJNE A,#0DH,POINT

CLR TR1

MOV 21H,#05H

MOV 23H,#0C0H

SETB TR1

LJMP OUTK

POINT: CJNE A,#05H,OUTK

CLR TR1

MOV 21H,#0DH

LCALL DIREC

OUTK: POP DPL

POP PSW

POP ACC

RETI

TINT: PUSH ACC

PUSH PSW

PUSH DPL

LCALL DIREC

LCALL REL

OUTT: POP DPL

POP PSW

POP ACC

RETI

DIREC: MOV DPL,#08H

MOV R1,20H

MOV A,R7

CJNE R1,#00H,BACKD

FRONTD: RR A

LJMP OUTD

BACKD: CJNE R1,#01H,OUTD

RL A

OUTD: MOVX @DPTR,A

MOV R7,A

RET

REL: MOV R1,25H

CJNE R1,#01H,REL2

MOV A,23H

CJNE A,#0C0H,REL1

MOV TH1,A

RET

REL1: MOV TH1,A

INC A

MOV 23H,A

RET

REL2: CJNE R1,#02H,REL0

MOV A,23H

JNZ REL3

MOV TH1,A

RET

REL3: MOV TH1,A

DEC A

MOV 23H,A

RET

REL0: MOV TH1,23H

RET

END


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11366414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存