51单片机 ,为什么num我用unsigned char型就出错,一烧入程序蜂鸣器就响,而用unsigned int 就不会出错

#include <reg52.h>
sbit beep=P2^2;
sbit dula =P2^7;
sbit wela=P2^6;
unsigned char table[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
};

unsigned int num;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for (y=114;y>0;y--);

}
void main ()
{
EA=1;
EX0=1;
wela=1;
P0=0x5;
wela=0;
while(1)
{
for (num=0;num<16;num++)
{ dula=1;
P0=table[num] ;
dula=0;
delay(500);
}
}
}

void timer() interrupt 0
{
beep=0;
}
两个都出错,无论是uint 还是uchar 程序烧入后,单片机就会响,我设置外部中断为低电平有效,为什么没给低电平程序就执行到了外部中断

char是字符型变量,而延时或者是循环里需要的是INT整型变量,unsigned char范围为0~255,估计是超范围了,还是用int保险追问

不是这个问题,别人写的程序,在这个地方就是uchar型的,执行未出错
为什么我的程序一烧入就会出错,进入中断呢

追答

P0=0x5 ?

追问

位选

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-11
在采用unsigned char类型时,检查num值是否存在溢出问题!追问

并没有溢出,无论是uint 还是uchar 程序烧入后,单片机就会响,我设置外部中断为低电平有效,为什么没给低电平程序就执行到了外部中断

相似回答
大家正在搜