谁能帮我用汇编写一段8255A扩展的程序,要求三个口均为工作方式0输入,并将端口的信号传送至C51单片机

谁能帮我用汇编写一段8255A扩展的程序,要求三个口均为工作方式0输入,并将端口的信号传送至C51单片机,第1张

这是我一片51实现16路抢答器的一个项目中的一段代码。希望对你有用。

ORG 0000H

JMP MAIN

ORG 1000H

MAIN:

MOV SP,#60H

CALL SETLEDS

mainloop:

jmp mainloop

对16组LED置数

SETLEDS:

mov dptr,#0fffeh 第一个8255A控制字地址

mov a,#80h 设置A、B、C口为方式0输出

movx @dptr,a

mov dptr,#0fffdh 第二个8255A控制字地址

mov a,#80h 设神悔桥置A、B、C口为方式0输出

movx @dptr,a

mov dptr,#0fffbh 第三个8255A控制字地址

mov a,#80h 设置A、B、C口为方式0输游猛出

movx @dptr,a

mov dptr,#0fff7h 第四个8255A控制字地址

mov a,#80h 设置A、B、C口为方式0输出

movx @dptr,a

mov dptr,#0ffefh 第五个8255A控制字地址

mov a,#80h 设置A、B、C口为方式0输出

movx @dptr,a

mov dptr,#0ffdfh 第六个8255A控制字地址

mov a,#80h 设置A、B、C口为方式0输出

movx @dptr,a

mov dptr,#0ff3eh 第1组数码管地址

mov a,#0f1h 第1组数码管显示1

movx @dptr,a

mov dptr,#0ff7eh 第2组数码管地址

mov a,#02h 第2组数码管显示2

movx @dptr,a

mov dptr,#0ffbeh 第3组数码管地址

mov a,#03h 第3组数码管显示3

movx @dptr,a

mov dptr,#0ff3dh 第4组数码管地址

mov a,#04h 第4组数码管显示4

movx @dptr,a

mov dptr,#0ff7dh 第5组数码管地址

mov a,#05h 第5组数码管显示5

movx @dptr,a

mov dptr,#0ffbdh 第6组数码管地址

mov a,#06h 第6组数码管显示6

movx @dptr,a

mov dptr,#0ff3bh 第7组数码管地址

mov a,#07h 第7组数码管显示7

movx @dptr,a

mov dptr,#0ff7bh 第8组数码管地址

mov a,#08h 第8组数码管显示8

movx @dptr,a

mov dptr,#0ffbbh 第9组数码管地址

mov a,#09h 第9组数码管显示9

movx @dptr,a

mov dptr,#0ff37h 第10组数码管地址

mov a,#00h 第10组数码管显示0

movx @dptr,a

mov dptr,#0ff77h 第11组数码管地址

mov a,#01h 第11组数码管显示1

movx @dptr,a

mov dptr,#0ffb7h 第12组数码管地址

mov a,#02h 第12组数码管显示2

movx @dptr,a

mov dptr,#0ff2fh 第13组数码管地址

mov a,#03h 第13组数码管显示3

movx @dptr,a

mov dptr,#0ff6fh 第14组数码管地址

mov a,#04h 第14组数前李码管显示4

movx @dptr,a

mov dptr,#0ffafh 答题计时数码管地址

mov a,#05h 答题计时数码管显示5

movx @dptr,a

mov dptr,#0ff1fh 第15组数码管地址

mov a,#06h 第15组数码管显示6

movx @dptr,a

mov dptr,#0ff5fh 第16组数码管地址

mov a,#07h 第16组数码管显示7

movx @dptr,a

mov dptr,#0ff9fh 抢到组数码管地址

mov a,#08h 抢到组数码管显示8

movx @dptr,a

RET

end

程序和仿真图如下,程笑塌序和仿真文件见附件。有问题请追问。

RD_8255 EQU P2.0  8255读引脚 低电平有效

WR_8255 EQU P2.1  8255写引脚 低电平山桥有效

A0_8255 EQU P2.2  

A1_8255 EQU P2.3  

A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。  

当A1=0, A0=0时,PA口被选择;  

当A1=0, A0=1时,PB口被选择;  

当A1=1, A0=0时,PC口被选择;    

当A1=1. A0=1时,控制寄存器被选择。碰唯圆

RESET_8255 EQU P2.48255复位引脚 高电平复位

CS_8255 EQU P2.5 8255 片选 低电平有效

-----------------------------------

-----------------------------------

ORG  0000H

JMP  MAIN

-----------------------------------

MAIN:

MOV  SP,#60H

  CLR CS_8255 低电平有效

  CLR RESET_8255 高电平复位

  MOV   P0, #80H   PA输出 10000000

  CLR   WR_8255    写入控制寄存器

  SETB  WR_8255

  MOV R3,#01H

-----------------------------------

LOOP:

  MOV   P0, R3   输出

  CLR   A1_8255    选定PA

  CLR   A0_8255

  CLR   WR_8255    

  NOP              

  NOP              

  SETB  WR_8255

  CALL DELAY500MS

  MOV A,R3

  RLC A

  MOV R3,A

  SJMP  LOOP

-----------------------------------  

DELAY500MS:   误差 0us

  MOV R7,#0CDH

DL1:

  MOV R6,#74H

DL0:

  MOV R5,#09H

  DJNZ R5,$

  DJNZ R6,DL0

  DJNZ R7,DL1

  RET

END


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

原文地址:https://54852.com/yw/12389283.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存