找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1641|回复: 8
打印 上一主题 下一主题
收起左侧

求助一个比较简单的关于单片机外部中断的问题

[复制链接]
跳转到指定楼层
楼主
单片机P3.2外部中断0接按键,P1.4-P1.7接小灯,0电平点亮,P1.0-P1.3接开关,合上是0电平接地,开关状态反映到二级管上,用C51编程实现每中断一次,发光二极管显示开关状态。
我想的是这样的:
读p1口
然后左移4位
然后赋给p1


但是电路运行
是哪里有问题吗
我应该怎么修改代码呢

$}KLC~6$VJR5YE160N{B%(3.png (69.57 KB, 下载次数: 79)

$}KLC~6$VJR5YE160N{B%(3.png

UL%X[(DQ(O`%GSIEKO3P82L.png (86.59 KB, 下载次数: 68)

UL%X[(DQ(O`%GSIEKO3P82L.png

}LA)RZ1ONRL(_M0}]Z)}{94.png (92.26 KB, 下载次数: 75)

}LA)RZ1ONRL(_M0}]Z)}{94.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:910079 发表于 2021-11-4 23:48 | 只看该作者
这个是电源接地,反过来

1124.png (65.57 KB, 下载次数: 66)

1124.png
回复

使用道具 举报

板凳
ID:910079 发表于 2021-11-5 00:24 | 只看该作者
我根据网上的代码修改好了,但是我有一点没看懂,就是P1=0X0f;,,为什么P1要赋这句话,我尝试改成0x00或者0x01都不能正常运行,这是为什么啊

11.png (65.52 KB, 下载次数: 69)

11.png

22.png (75.61 KB, 下载次数: 76)

22.png
回复

使用道具 举报

地板
ID:213173 发表于 2021-11-5 06:25 | 只看该作者
1843647506 发表于 2021-11-5 00:24
我根据网上的代码修改好了,但是我有一点没看懂,就是P1=0X0f;,,为什么P1要赋这句话,我尝试改成0x00或者 ...
  1. #include<reg51.h>

  2. void main()
  3. {
  4.         IT0 = 1;
  5.         EX0 = 1;
  6.         EA = 1;
  7.         while(1);
  8. }

  9. void INT_0(void) interrupt 0
  10. {
  11.         P1=P1<<4|0x0f;//P1<<4后低4位自动补0,|0x0f是低4位还原1。
  12. }
复制代码
回复

使用道具 举报

5#
ID:910079 发表于 2021-11-5 11:46 | 只看该作者

低四位赋1,是为了检测端口吗?我不太明白为什么低四位要赋1这个原理
回复

使用道具 举报

6#
ID:213173 发表于 2021-11-5 11:53 | 只看该作者
1843647506 发表于 2021-11-5 11:46
低四位赋1,是为了检测端口吗?我不太明白为什么低四位要赋1这个原理

就是为了能够正常检测按键端口
回复

使用道具 举报

7#
ID:624769 发表于 2021-11-5 15:26 | 只看该作者
你网上找的修改,和你原来的其实差不多,你看不明白么?

你原来的代码其实2个地方错,你改完应该就明白了。
首先  i=i<<4   来源不明,
其次,i=i||0x0f  符号错误,改一下应该是这样:

i=P1;
i=i<<4;
i=i|0x0f;
P1=i;

基于你原程序修改,这样你能看懂了么?
回复

使用道具 举报

8#
ID:123289 发表于 2021-11-5 16:56 | 只看该作者
要点:读键值时,要先置1,如果清0,则读到的0是不是按键造成的,就分不清了。
将读到的键值直接送显,是可取的,但不要忘了,下次读键值之前,要重新置1。
回复

使用道具 举报

9#
ID:910079 发表于 2021-11-5 22:28 | 只看该作者
谢谢各位的解答,我明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表