标题:
求助啊,51单片机的中断实验,一点思路没有,这个汇编程序应该写啥啊。
[打印本页]
作者:
1137876630
时间:
2019-11-28 11:52
标题:
求助啊,51单片机的中断实验,一点思路没有,这个汇编程序应该写啥啊。
利用单脉冲源(KEY8)产生外部中断请求信号/INT1,在中断服务子程序中读入4个
拨码开关(SW1~SW4)设定的数据,输出到4个LED发光二极管(LED1~LED4)
。
根据下面这个电路图,由于刚开始接触单片机,实在写不出来,求各位大神帮忙。
Screenshot_2019-11-28-11-47-59.png
(135.4 KB, 下载次数: 88)
下载附件
2019-11-28 11:51 上传
作者:
bg5skf
时间:
2020-2-12 13:51
首先要设置EX1=1,EA=1,然后0013H处调用中断子程序。
中断子程序中,读入P1口,屏蔽低四位,然后高低字节交换,再送回P1口,然后返回。
这样描述不知道清楚吗?
作者:
czhaii
时间:
2020-2-12 16:06
下载一个STCISP软件,里面有例程。
作者:
csmyldl
时间:
2020-2-12 23:57
ORG 0000H
JMP MAIN
ORG 0013H ;中断入口地址
JMP ZHDU
ORG 0050H
MOV IE,#84H ;设置外部中断1允许
SETB IE1 ;下降沿触发
JMP $
ZHDU: MOV A,P1 ;读P1口开关状态
SWAP A ;交换
MOV P1,A ;根据开关状态点亮LED
RETI
END
作者:
csmyldl
时间:
2020-2-13 00:05
上面程序其思路就是:首先要设置外部中断1能产生中断,还要考虑中断触发方式,然后产生中断时要读出P1口高4位的编码开关状态(接通时状态为0),因LED与开关接在同一端口,所以考虑高4位与低4位交换即可,而且开关导通时状态为0,可直接输出至P1口控制LED
作者:
左眼
时间:
2020-2-13 10:19
#include<reg51.h>
#include<intrins.h>
#define u8 unsigned char
sbit key8=P3^3;
u8 x;
void Delay10ms() //@12.000MHz
{
unsigned char i, j;
i = 20;
j = 113;
do
{
while (--j);
} while (--i);
}
void main()
{
INT1=1;
EX1=1;
EA=1;
while(1);
}
void INT1() interrupt 2 //看自己板子外部中断1的中断向量号
{
Delay10ms();
if(!key8)
{
x=P1; //读取P1端口值,不要直接对端口操作
x>>=4; //将端口值的高四位右移到低四位
x|=0xf0; //将端口数值的高四位置一,为下一次读取做准备
P1=x; //将端口数值赋给端口
}
while(!key8); //如果你要按着按键,灯是不会亮的,解决方法就是将这句程序规定时间退出。
}
刚学,只会用C编写,如果不需要看思路就行了。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1