C51程序不能进入中断
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C51程序不能进入中断相关的知识,希望对你有一定的参考价值。
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
void delay();
uchar tmpt;
uint tt=0;
uint num=0;
uchar code table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;
void main()
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
//TH0=0xff;
//TL0=0xff;
EA=1;
ET0=1;
TR0=1;
tmpt=0x80;
while(1)
P0=~tmpt;
tmpt=_cror_(tmpt,1);
delay();
void delay()
uint i,j;
for (i=1000;i>0;i--)
for(j=110;j>0;j--);
void shuma() interrupt 1
tt++;
if(tt==20)
P0=table[num];
num++;
if(num==7)
num=0;
TH0=0x3c;
TL0=0xb0;
你QQ多少
并且2次中断间隔不能超过65.536ms(12MHz),如超过就用t0中断计时。
思路就是上部中断清零TH0、TL0,下部中断统计。
unsigned short time; //时间间隔
unsigned char bUp = 0; //上部到位
static void int_ex0(void) interrupt 0 using 1
if(bUp == 0)
bUp = 1;
TH0 = 0;
TL0 = 0;
else
time = TH0;
time <<= 8;
time |= TL0;
bUp = 0;
参考技术B 可以进中断呀。
void shuma() interrupt 1
tt++;
if(tt==20)
tt=0; //少了这条,tt 到20了还会一直加上。无法=20了。
P0=table[num];
。。。追问
你用KEILC仿真一下看,我试过了,不能进入中断, tt=0; //少了这条,tt 到20了还会一直加上。无法=20了。这个是我忘了加了。
追答我就是用KEIL试的。
本回答被提问者和网友采纳 参考技术C 图发不上?图上我进了3 次中断了。以上是关于C51程序不能进入中断的主要内容,如果未能解决你的问题,请参考以下文章