本帖最后由 zhengxinydc 于 2015-10-23 20:05 编辑
问题已经解决,确实是应该把dis()放在while(1)里,前面我把case 0xed:项写成了case0x31:了,而在助手里一直输入ED所以就没有得到正解。在这里首先要感谢millenniumm 和GeekyGeek 朋友,谢谢大家的支持!
#include<pic.h>
#define uint unsigned int
#define uchar unsigned char
__CONFIG(0X3b31);
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar key_num;
void init();
void disp();
void main()
{
init();
while(1)
{
disp();
}
}
void init()
{
TRISD=0;
TRISA=0;
PORTD=0;
PORTA=0XFF;
TXSTA=0x24;
RCSTA=0X90;
SPBRG=25;
GIE=1;
PEIE=1;
RCIE=1;
}
void interrupt com()
{
if(RCIE&&RCIF)
{
key_num=RCREG;
TXREG=key_num;
while(!TRMT);
}
}
void disp()
{
switch(key_num)
{
case 0xee:PORTD=table[0];break;
case 0Xed:PORTD=table[1];break;
case 0xeb:PORTD=table[2];break;
case 0xe7:PORTD=table[3];break;
case 0xde:PORTD=table[4];break;
case 0xdd:PORTD=table[5];break;
case 0xdb:PORTD=table[6];break;
case 0xd7:PORTD=table[7];break;
case 0xbe:PORTD=table[8];break;
case 0xbd:PORTD=table[9];break;
case 0xbb:PORTD=table[10];break;
case 0xb7:PORTD=table[11];break;
case 0x7e:PORTD=table[12];break;
case 0x7d:PORTD=table[13];break;
case 0x7b:PORTD=table[14];break;
case 0x77:PORTD=table[15];break;
}
}
|