Sherratian_Li 2015-07-11 07:47 采纳率: 0%
浏览 2939

51单片机定时器中断问题

代码如下,设置断点后发现,程序不进入定时器中断函数
#include
#include
#define uchar unsigned char
#define uint unsigned int

sbit key=P3^7;
uchar display[8][8];
/*rank:Z,H,B,I,T,I,心,U*/
uchar code table_cha[8][8]={0x7E, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x7E,
0x66, 0x66, 0x66, 0x7E, 0x7E, 0x66, 0x66, 0x66,
0x3E, 0x66, 0x66, 0x7E, 0x7E, 0x66, 0x66, 0x3E,
0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C,
0x7E, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C,
0x00, 0x66, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x18,
0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x3C};

void sinter()
{
IE=0x83; //允许INT0和T0中断
IP=0x01; //设置中断优先级
TCON=0x01; //设置INT0工作方式为边沿触发
TMOD=0x00;
TH0=0xc0;
TL0=0; //假设为方式0,初值为1100/0000/00000B 要求的定时值为1.024ms
TR0=1;

}
void delay5us(void) //误差 -0.026765046296us STC 1T 22.1184Mhz
{
unsigned char b;
for(b=7;b>0;b--);
//for(a=2;a>0;a--);
}

void delay(uint i)

{

     while (i--){
     delay5us();}//12t的mcu 注释这个延时即可

}

//将table_cha中第cha行元素赋给display第y列
void type(uchar cha,uchar y)

{

uchar xx;
for (xx=0;xx<8;xx++)
{
display[xx][y]=table_cha[cha][xx];
}
}

//使display中元素均为le
void clear(char le)

{
uchar i,j;
for (j=0;j<8;j++)
{
for (i=0;i<8;i++)
display[j][i]=le;
}
}

void flash()
{

     clear(0);
     type(0,0);
     delay(60000);
     delay(60000);      //0.6s
     type(1,0);
     delay(60000);
     delay(60000);
     type(2,0);
     delay(60000);
     delay(60000);
     type(3,0);
     delay(60000);
     delay(60000);
     type(4,0);
     delay(60000);
     delay(60000);
     type(5,0);
     delay(60000);
     delay(60000);
     type(6,0);
     delay(60000);
     delay(60000);
     type(7,0);
     delay(60000);
     delay(60000);
     clear(0);

}

void main()
{
while(1)
{

flash();
}

clear(0);
}

void print() interrupt 1
{
uchar i;
static uchar layer=0;
P1=0;
for (i=0;i<8;i++)
{
P2=1<<i; //依次扫描1-8片
delay(3);
P0=display[layer][i];
delay(3);
}
P1=1<<layer;

if (layer<7)
layer++;

     else 
               layer=0;
     TH0=0xc0;
     TL0=0;

}

void pause () interrupt 0
{
while(!key){}
}

  • 写回答

3条回答

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办