求51单片机外部中断的C语言程序

求51单片机外部中断的C语言程序,第1张

方法类似,补写程序如下:

#include

#define

uint

unsigned

int

#define

uchar

unsigned

char

sbit

led=p0^0;

sbit

led1=p0^1;

void

delay1ms

(uint

z)

{

uint

x,y;

for

(x=z;x>0;x--)

for

(y=110;y>0;y--);

}

void

exter()

interrupt

2

{

delay1ms(600);

led=0;

delay1ms(200);

led=1;

}

void

exter0()

interrupt

0

{

delay1ms(600);

led1=1;

delay1ms(200);

led1=0;

}

main()

{

ea=1;

//开总中断

ex1=1;

//开外部中断1

ex0=1;

//开外部中断0

it1=0;

//外部中断边沿触发,下降沿触发

it0=0;

//外部中断0边沿触发,下降沿触发

}

是一边读指令一边执行。

建议偿试:

一、在EEPROM端用示波器查一下PSEN和ALE的时序。

二、在EEPROM内写入75 90 ff 22,如果上电后P1口全是高电平,则正常。

三、在EEPROM内写入75 90 00 22,如果上电后P1口全是低电平,则正常。

四、如果通过了第二、三步的测式,还是不能运行的话,在代码里查找对P0、P2口的 *** 作,把这些 *** 作都停掉。使用外部程序存储器时,最好不要再用P0、P2口做GPIO。

五、第四步这后还没有效果的话,估计硬件还是有问题。

拓展外部存储器,通常都会选择相同容量的芯片,因为这样构建译码电路会比较简单。如果因一些特殊需要,必须使不同容量的器件,那要看扩展的存储空间是否要求连接的地址。若必须是连接地址,地址译码电路比较复杂,适合采用CPLD或FPGA等可编程器件来实现。如果每片扩展存储器之间,并不要求连续地址,也可考虑按最大容量器件的地址范围来设计译码。

单片机外部程序存储器的访问 就是先通过p0、p2口送出要访问的外部程序存储器的地址

P2口送高8位地址 P0口送低8位地址(而不是P1口) 即先要选中单片机要访问的存储器单元

再将该单元中存放的指令读出来,由P0口做8位数据总线(读回单片机去执行)。

结论: 地址是被访问的单片机外部程序存储器的地址

最后要完成的工作是取指令

呵呵 满意就选满意回答

以上就是关于求51单片机外部中断的C语言程序全部的内容,包括:求51单片机外部中断的C语言程序、单片机执行外部EEPROM程序、为单片机拓展外部程序存储器时,多片ROM芯片的容量不同如何拓展等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9508379.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存