C51单片机外部中断扩展程序设计?

C51单片机外部中断扩展程序设计?,第1张

org 00h

sjmp main

org 03h

ljmp int

org 30h

main:mov sp ,#60h    初始化

mov ie,#10000001b    开中断

mov tcon,#00000000b  设置外部中断触发方式(低电平有效)

mov p1,#00h

mov dptr,#100h

sjmp $               等待中断

int:jb p1.0,loop_0   执行按键1 *** 作

jb p1.1,loop_1   执行按健2 *** 作

jb p1.2,loop_2   执行按健3 *** 作

jb p1.3,loop_3   执行按健4 *** 作

loop_0:push psw

mov r7,#4

mov a,#00h

movc a,@a+dptr

mov p2,a

acall delay

djnz r7,loop_0

pop psw

reti

loop_1:push psw

mov r7,#4

mov a,#04h

movc a,@a+dptr

mov p2,a

acall delay

djnz r7,loop_1

pop psw

reti

loop_2:push psw

mov r7,#4

mov a,#08h

movc a,@a+dptr

mov p2,a

acall delay

djnz r7,loop_2

pop psw

reti

loop_3:push psw

mov r7,#4

mov a,#0ch

movc a,@a+dptr

mov p2,a

acall delay

djnz r7,loop_3

pop psw

reti

delay:mov r5,#10h

delay_0:mov r6,#255

djnz r6,$

djnz r5,delay_0

ret

org 100h

db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h

db 41h,42h,43h,44h,45h,46h

end

希望对你有帮助

51单片机最大寻址空间是64K,超过64K可以用P1口对存储器进行分页,512K 存储器,可用P1.0,P1.1,P1.2接EPROM的A16,A17,A18将其分成8个64K 的存储器页.

在页间跳转必须精确定位,在页间跳转指令后面加入几条NOP空 *** 作,在跳入的页面也加入几条NOP空 *** 作,如果你扩展ROM只是为了扩充数据存储空间,那么你可以在每页开始的一段内都放入(相同的)指令程序。

如从0页换1页,当前PC=FFF0H,ROM地址:00FFF0H

SET P1.0

NOP

NOP

NOP

NOP

SET P1.0切换后:PC=FFF2H,ROM地址:01FFF2H

要特别注意的是,中断子程序必须放在每页相同的位置安排入口,单片机上电时P1.0,P1.1,P1.2都是高电平,所以,你的初始化程序入口应在ROM的070000H处。

这么高难度,您只有5分,哎!!!!

扩展片外存储器,使用的是三总线结构,即AB、DB和CB。

楼主仅仅说出了16位地址线和8位数据线,这只是AB和DB。

另外的控制总线(CB)如下:

扩展程序存储器,使用PSEN引线,来控制对其读出;

扩展数据存储器,使用RD和WR引线,来控制对其读写。

因为控制总线不同,所以不发生冲突。


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

原文地址: http://outofmemory.cn/yw/11161112.html

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

发表评论

登录后才能评论

评论列表(0条)

保存