打印

中断问题

[复制链接]
1380|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2013-2-27 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int

sbit led1 = P1^0;
uchar num;

uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

sbit wela = P2^7;
sbit dula = P2^6;       

uchar m;
void delayms(uint);

void main()
{
    TMOD = 0x01;
TH0 = (65536-45872)/256;
TL0 = (65536-45872)%256;
EA = 1;
ET0 = 1;
TR0 = 1;

while(1)
{
wela = 1;
P0 = 0xfe;
wela = 0;         

for(m = 0;m < 16;m++)
{          
dula = 1;
P0 = table[m];
dula = 0;       
delayms(500);       
}       
}
}

void T0_time() interrupt 1
{
TH0 = (65536-45872)/256;
TL0 = (65536-45872)%256;
num++;
if(num == 20)
{
num = 0;
led1 = ~led1;
}
}

void delayms(uint xms)
{
uint i,j;
for(i = xms ;i > 0;i--)
for(j = 110;j > 0;j--);
}       

这是一个中断程序,我想问两个问题
1这个程序的执行顺序是怎么样的?
2怎么中断产生的时候数码管也同时在亮呢 不应该是去执行中断程序么~~~

相关帖子

沙发
无冕之王| | 2013-2-27 20:39 | 只看该作者
如果没有main主程序,单片机从开始到结尾的子程序一个一个执行。
当有了主程序main,不执行子程序,程序直接进入主程序文件,接着看情况调用。中断计数是在后台运行的,你中断程序太短,执行语句的时间也短,在中断子程序里加一个延时,数码管就灭了

使用特权

评论回复
板凳
yybj| | 2013-2-27 20:54 | 只看该作者
这是一个中断程序,我想问两个问题
1这个程序的执行顺序是怎么样的?
2怎么中断产生的时候数码管也同时在亮呢 不应该是去执行中断程序么~~~

如果能仿真单步执行,你的疑惑能更清

使用特权

评论回复
地板
sinadz| | 2013-2-27 21:03 | 只看该作者
主循环里面放一个那么长的延时?

使用特权

评论回复
5
txcy| | 2013-2-27 23:44 | 只看该作者
yybj 发表于 2013-2-27 20:54
这是一个中断程序,我想问两个问题
1这个程序的执行顺序是怎么样的?
2怎么中断产生的时候数码管也同时在亮 ...

同意

使用特权

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

本版积分规则

177

主题

1653

帖子

1

粉丝