打印

毕业设计中代码,一中断问题

[复制链接]
2511|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你猜我是虎|  楼主 | 2014-11-10 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
毕业设计用到一个外部中断,但我的设计是基于模块化的,所以中断和显示部分是分开的,然后我定义了一个全局变量,但是感觉不起作用,这是为什么呢?
我把中断单独用数码管显示是能显示的。但是和LCD1602组合在一起,就老是不显示
这是中断函数的代码:
#include<reg52.h>
#include"Input.h"
unsigned int n;
bit b;
extern void delay(unsigned int z);
/*------------------------------------------------
             中断0初始化函数
------------------------------------------------*/
void Suspend0()
{
   n=0;
   EX0=1;
   IT0=1;
   EA=1;
}

void INT_0() interrupt 0
{
  EX0=0;
  n++;
  delay(2);
  b=1;
  EX0=1;
}
这是LCD1602的显示代码://只贴了一小部分
#include<reg52.h>

#include"LCD_1602.h"          //LCD的DB0~DB7接在单片机的P0口
//#include"STDIO.h"
#include"Input.h"
extern unsigned int n;
/*------------------------------------------------
              动态显示函数
--------------------------------------------------
reentrant LCD_Printd(uint n)
  {   if(n<0)
         n=0;
        if(n/10)
           printd(n/10);
          LCD_Write_Com(0x80+0x40+11);
      LCD_Write_Datat(n%10+'0');
} */
void LCD_Printd()
{
      
      unsigned int i=0,j=15;
          LCD_Write_Com(0x04);
      while(n>0)
          {          
               i=n%10;
                   Gotoxy_P(j,0);
           LCD_Write_Date(0x30+i);
                   n=n/10;
                   j--;
          }
          LCD_Write_Com(0x06);
}       
谁能告诉我一下,为什么这么组合了,那个中断显示老是不出来呀?
同学在这儿万分感谢了

相关帖子

沙发
专注于嵌入式| | 2014-11-11 11:31 | 只看该作者
不知道是你表达问题还是我理解问题、没看懂你想问什么?

使用特权

评论回复
板凳
dirtwillfly| | 2014-11-11 11:39 | 只看该作者
中断是不是把显示部分的时序给打乱了?

使用特权

评论回复
地板
陈杰1993| | 2014-11-11 14:49 | 只看该作者
你需要用中断做什么

使用特权

评论回复
5
ningling_21| | 2014-11-11 14:53 | 只看该作者
显示被中断打乱了

使用特权

评论回复
6
你猜我是虎|  楼主 | 2014-11-11 15:38 | 只看该作者
ningling_21 发表于 2014-11-11 14:53
显示被中断打乱了

能不能具体点呢?

使用特权

评论回复
7
你猜我是虎|  楼主 | 2014-11-11 15:38 | 只看该作者
陈杰1993 发表于 2014-11-11 14:49
你需要用中断做什么

用的外部中断0对外部脉冲进行计数

使用特权

评论回复
8
你猜我是虎|  楼主 | 2014-11-11 15:41 | 只看该作者
dirtwillfly 发表于 2014-11-11 11:39
中断是不是把显示部分的时序给打乱了?

时序打乱了?不懂=-=

使用特权

评论回复
9
你猜我是虎|  楼主 | 2014-11-11 15:41 | 只看该作者
专注于嵌入式 发表于 2014-11-11 11:31
不知道是你表达问题还是我理解问题、没看懂你想问什么?

我也不晓得怎么表达了=-=

使用特权

评论回复
10
dirtwillfly| | 2014-11-11 15:44 | 只看该作者
你猜我是虎 发表于 2014-11-11 15:41
时序打乱了?不懂=-=

1602的显示依赖于对1602的操作时序。
当你在对1602进行操作的过程中,发生了中断,就会改变对1602的操作时序

使用特权

评论回复
11
你猜我是虎|  楼主 | 2014-11-11 15:50 | 只看该作者
dirtwillfly 发表于 2014-11-11 15:44
1602的显示依赖于对1602的操作时序。
当你在对1602进行操作的过程中,发生了中断,就会改变对1602的操作 ...

但是我的时间显示是正常的显示,就是这个外部中断显示有问题,它最多显示到1,然后就没反应了。

使用特权

评论回复
12
dirtwillfly| | 2014-11-11 15:53 | 只看该作者
你猜我是虎 发表于 2014-11-11 15:50
但是我的时间显示是正常的显示,就是这个外部中断显示有问题,它最多显示到1,然后就没反应了。 ...

:L不明白你说的中断显示是什么意思?
没看到中断服务程序里有显示的代码~~~

使用特权

评论回复
13
你猜我是虎|  楼主 | 2014-11-11 16:00 | 只看该作者
dirtwillfly 发表于 2014-11-11 15:53
不明白你说的中断显示是什么意思?
没看到中断服务程序里有显示的代码~~~ ...

那是在另外一个版块里面了,我只贴出了出问题的那部分=-=

使用特权

评论回复
14
ningling_21| | 2014-11-11 16:01 | 只看该作者
你猜我是虎 发表于 2014-11-11 15:50
但是我的时间显示是正常的显示,就是这个外部中断显示有问题,它最多显示到1,然后就没反应了。 ...

外部中断中有显示程序吗?

使用特权

评论回复
15
你猜我是虎|  楼主 | 2014-11-11 16:05 | 只看该作者
ningling_21 发表于 2014-11-11 16:01
外部中断中有显示程序吗?

没有,外部中断只是单纯用来计数的。那个时间是用的内部的计数器

使用特权

评论回复
16
慢慢学| | 2014-11-11 16:05 | 只看该作者
你用extern设置全局变量的时候,在调用的C文件里面也要定义该变量的!

使用特权

评论回复
17
你猜我是虎|  楼主 | 2014-11-11 16:06 | 只看该作者
你猜我是虎 发表于 2014-11-11 16:05
没有,外部中断只是单纯用来计数的。那个时间是用的内部的计数器

但是我没有设定中断的优先级,我觉得应该不会出什么问题吧

使用特权

评论回复
18
你猜我是虎|  楼主 | 2014-11-11 16:12 | 只看该作者
慢慢学 发表于 2014-11-11 16:05
你用extern设置全局变量的时候,在调用的C文件里面也要定义该变量的!

定义了的=-=

使用特权

评论回复
19
车彦锋| | 2014-11-11 16:14 | 只看该作者

使用特权

评论回复
20
ningling_21| | 2014-11-11 16:22 | 只看该作者
你猜我是虎 发表于 2014-11-11 16:06
但是我没有设定中断的优先级,我觉得应该不会出什么问题吧

搞程序时从来不能说:应该或不应该;只有是或不是

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

25

帖子

0

粉丝