OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4699|回复: 23

51单片机中断

[复制链接]

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-11-17
在线时间
7 小时
发表于 2017-11-17 09:55:57 | 显示全部楼层 |阅读模式
1金钱
有没有好的方式理解中断,新手卡在中断了

最佳答案

查看完整内容[请看2#楼]

这里有关于单片机中断的解决办法:http://www.superedu.com.cn/xuexi/jdsp/288.html?op321
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

64

主题

233

帖子

0

精华

禁止访问

积分
603
金钱
603
注册时间
2017-11-13
在线时间
71 小时
发表于 2017-11-17 09:55:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-11-17 10:15:32 | 显示全部楼层
没执行一条指令,单片机就检查中断标志位,如果中断发生,先暂停当前任务,去处理中断任务,执行好了,在返回继续执行刚才暂停的任务。
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-11-17
在线时间
4 小时
发表于 2017-11-17 10:18:22 | 显示全部楼层
比如说你正在看电视,突然老妈叫你去帮她拿点东西,这就相当于中断了,你拿完东西后继续回来看电视,这就相当于中断处理完成了。
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-11-17
在线时间
7 小时
 楼主| 发表于 2017-11-17 16:30:07 | 显示全部楼层
如何判断中断从哪里开始,从哪里中断结束
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-11-17
在线时间
7 小时
 楼主| 发表于 2017-11-17 16:34:01 | 显示全部楼层
郭天祥书里讲的断点在程序中怎么实现
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-11-17
在线时间
7 小时
 楼主| 发表于 2017-11-17 16:39:54 | 显示全部楼层
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,shi1,shi0,fen1,fen0,miao1,miao0;
uint temp;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar shi1,shi0,fen1,fen0,miao1,miao0);
void delay(uint z);
void init();
void main()
{       
        init();
        while(1)
        {
                if(aa==20)
                  {
                        aa=0;
                        temp++;
                        if(temp==86400)//ò&#187;ììóD86400&#195;&#235;
                           {
                                        temp=0;
                           }
                        shi1=temp/3600/10;
                        shi0=temp/3600-(shi1*10);
                        fen1=temp%3600/60/10;
                        fen0=temp%3600/60-(fen1*10);
                        miao1=temp%3600%60/10;
                        miao0=temp%3600%60-(miao1*10);
                  }
                display(shi1,shi0,fen1,fen0,miao1,miao0);
        }
}

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void display(uchar shi1,shi0,fen1,fen0,miao1,miao0)
{
              dula=1;
                P0=table[shi1];
                dula=0;

                P0=0xff;
                wela=1;

                P0=0xfe;
                wela=0;
                delay(1);

                dula=1;
                P0=table[shi0];
                dula=0;

                P0=0xff;
               
                wela=1;
                P0=0xfd;
                wela=0;
                delay(1);

                dula=1;
                P0=0x40;//"-"
                dula=0;

                P0=0xff;
               
                wela=1;
                P0=0xfb;
                wela=0;
                delay(1);
               
                dula=1;
                P0=table[fen1];
                dula=0;

                P0=0xff;

                wela=1;
                P0=0xf7;
                wela=0;
                delay(1);

               
                dula=1;
                P0=table[fen0];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xef;
                wela=0;
                delay(1);

                dula=1;
                P0=0x40;//"-"
                dula=0;

                P0=0xff;
               
                wela=1;
                P0=0xdf;
                wela=0;
                delay(1);
                               
                dula=1;
                P0=table[miao1];
                dula=0;

                P0=0xff;

                wela=1;
                P0=0xbf;
                wela=0;
                delay(1);

               
                dula=1;
                P0=table[miao0];
                dula=0;

                P0=0xff;

                wela=1;
                P0=0x7f;
                wela=0;
                delay(1);
}

void init()
{       
//        wela=0;
//        dula=0;
//        temp=41760;
        TMOD=0x01;
        TH0=(65536-9216)/256;
        TL0=(65536-9216)%256;
        EA=1;      
        ET0=1;               
        TCON=0x10;       
         //TR0=1;
}

void timer0() interrupt 1   
{
        TH0=(65536-9216)/256;
        TL0=(65536-9216)%256;
        aa++;
}

这个程序怎么判断断点,从哪里进入中断,是不是当值溢出后就进入中断
回复

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2016-8-3
在线时间
12 小时
发表于 2017-11-17 17:44:20 | 显示全部楼层
你正在打游戏,女朋友喊你出去吃,然后你暂停游戏并存档,吃完饭你重新载入游戏进度玩游戏; 打游戏是主程序,吃饭是中断程序,女朋友喊你是中断触发方式即事件,这个是外部触发;如果你没有女朋友,自己肚子饿了去吃饭,这个就是内部触发;外部触发有电平触发、边沿触发等;内部触发有定时器中断、串口中断等。
回复

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2016-8-3
在线时间
12 小时
发表于 2017-11-17 17:48:05 | 显示全部楼层
三聚氰胺 发表于 2017-11-17 16:30
如何判断中断从哪里开始,从哪里中断结束

你会知道你女朋友具体什么时候叫你去吃饭,去逛街吗?中断在事件发生时开始,在处理完中断程序后结束
回复

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2016-8-3
在线时间
12 小时
发表于 2017-11-17 17:55:07 | 显示全部楼层
三聚氰胺 发表于 2017-11-17 16:39
#include
#define uint unsigned int
#define uchar unsigned char

定时器中断,当寄存器溢出后,中断标志位置1,产生中断事件,进入中断程序;(前提你配置正确)http://www.openedv.com/home.php? ... p;op=rule&fid=3
回复

使用道具 举报

1

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1459
金钱
1459
注册时间
2011-12-1
在线时间
110 小时
发表于 2017-11-17 18:10:11 | 显示全部楼层
中断就是你在看电视,你妈叫你看家庭剧,同时你女朋友叫你看偶像剧,如果你觉得你妈的优先级比你女朋友高,就先依着你妈,否则依着你女朋友,然后等他们两个人看完,你才能看体育之类。你妈与你女朋友是中断源,有中断请求,然后你根据优先级中断处理,处理完之后中断返回继续你看你的电视。
回复

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2017-5-21
在线时间
340 小时
发表于 2017-11-17 18:38:31 来自手机 | 显示全部楼层
xlong_06 发表于 2017-11-17 18:10
中断就是你在看电视,你妈叫你看家庭剧,同时你女朋友叫你看偶像剧,如果你觉得你妈的优先级比你女朋友高, ...

所以有多个电视很重要(外设),这样你可以让她们各自看电视,你每隔一段时间给她们端茶送水果就行。这就是分时系统。
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-11-17
在线时间
7 小时
 楼主| 发表于 2017-11-17 20:09:06 | 显示全部楼层
谢谢各位大佬,不仅让我学习了中断知识,还让我对女朋友产生了浓厚的兴趣
回复

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2017-5-21
在线时间
340 小时
发表于 2017-11-18 10:05:04 来自手机 | 显示全部楼层
女朋友比中断难搞定
回复

使用道具 举报

3

主题

91

帖子

1

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2016-12-8
在线时间
398 小时
发表于 2017-11-18 10:42:03 来自手机 | 显示全部楼层
三聚氰胺 发表于 2017-11-17 16:39
#include
#define uint unsigned int
#define uchar unsigned char

当定时器0,计数到655535后,再计下一个数就溢出并产生中断,定时器0的中断入口地址是0x000B。。这个写写汇编比较好理解一点。。
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-11-17
在线时间
7 小时
 楼主| 发表于 2017-11-18 20:05:46 | 显示全部楼层
NANADGUT 发表于 2017-11-18 10:42
当定时器0,计数到655535后,再计下一个数就溢出并产生中断,定时器0的中断入口地址是0x000B。。这个写写 ...

谢谢,学到了
回复

使用道具 举报

6

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2017-6-10
在线时间
39 小时
发表于 2017-11-18 20:23:13 | 显示全部楼层
中断和女朋友,这个比喻不错
回复

使用道具 举报

17

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2530
金钱
2530
注册时间
2016-3-6
在线时间
392 小时
发表于 2017-11-18 21:12:31 | 显示全部楼层
举的例子都很有趣
路漫漫其修远兮,吾将上下而求索。
回复

使用道具 举报

30

主题

188

帖子

0

精华

高级会员

Rank: 4

积分
594
金钱
594
注册时间
2014-4-3
在线时间
74 小时
发表于 2017-11-21 12:35:17 | 显示全部楼层
多看单片机资料和视频就理解了,这里有《51单片机轻松入门 基于STC15W4K系列》的所有资料、例程和视频。

https://pan.baidu.com/s/1bURkE6#list/path=%2F
书.jpg
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2017-11-21 14:10:17 | 显示全部楼层
中断可以理解为硬件上的一个程序接口.这个接口上有一个函数.这个函数是硬件调用的.完毕.
回复

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2017-11-21 15:04:25 | 显示全部楼层
你可以试着自己做一个小实验,用按键亮灭LED,搞完基本就就懂了
回复

使用道具 举报

9

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2017-4-1
在线时间
4 小时
发表于 2017-11-22 17:02:36 | 显示全部楼层
WiFi模块购买地址 https://shop67012462.taobao.com
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-11-17
在线时间
7 小时
 楼主| 发表于 2017-11-22 21:13:56 | 显示全部楼层
无量寿经 发表于 2017-11-21 12:35
多看单片机资料和视频就理解了,这里有《51单片机轻松入门 基于STC15W4K系列》的所有资料、例程和视频。

...

谢谢,已下载
回复

使用道具 举报

0

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-11-24
在线时间
10 小时
发表于 2017-11-25 10:36:16 | 显示全部楼层
ysp 发表于 2017-11-17 17:44
你正在打游戏,女朋友喊你出去吃,然后你暂停游戏并存档,吃完饭你重新载入游戏进度玩游戏; 打游戏是主程 ...

神一样的回复
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 22:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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