| airwill 发表于 2014-12-23 21:19  通常, 不设定, 默认是内部振荡器, 所以没有晶体也可以工作, 但内部振荡器的频率精度差一点.  ...
斑竹,麻烦再帮我看个问题,我在练习中断,死活都进不去,搞三天了,救救我吧,代码如下,能帮我看下到底哪里有问题吗?万分感谢
 //#include <eeprom.h>
 #include <iom8v.h>
 #include <macros.h>
 #define  uchar unsigned char
 #define  uint unsigned int
 uchar p=40;
 #pragma data:code
 #pragma interrupt_handler miao:iv_TIMER1_OVF
 uchar u,m;
 flash  table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};
 void delay(uint ms)
 {
 uint k,j;
 for(k=0;k<ms;k++)
 {
 for(j=0;j<11;j++);
 }
 }
 uchar key_scan()
 {
 uchar key;
 delay(5);
 if(key_press())
 {
 key=PINC;
 key&=0x0f;
 switch(key)
 {
 case 0X0e:
 key=3;
 break;
 case 0x0d:
 key=4;
 u=~u;
 
 break;
 case 0x0b:
 key=2;
 break;
 case 0x07:
 key=1;
 break;
 default:
 key=5;
 
 }
 while(key_press());
 delay(10);
 }
 else
 {
 key=5;
 
 }
 return key;
 }
 
 uchar key_press()
 {
 uchar i;
 DDRC|=0X0F;
 PORTC|=0X0F;
 DDRC&=0XF0;
 i=PINC;
 i&=0X0F;
 if(i==0X0F)
 return 0;
 else
 return 1;
 }
 void show(uchar j)
 {
 PORTC&=~BIT(4);
 PORTD=table[j/10];//蔳e 位
 PORTC|=BIT(4);
 delay(100);
 PORTC&=~BIT(5);
 PORTD=table[j%10];//shi位
 PORTC|=BIT(5);
 delay(100);
 }
 
 void miao()
 {
 // if(p==60)
 // {
 p=0;
 // }
 p++;
 PORTD=0X7e;
 delay(100);
 
 TCNT1H=0X40;
 TCNT1L=0Xe0;
 
 }
 
 
 //void show(uint h)
 //{
 //         PORTD=0xff;
 // PORTC&=0xe0;
 // PORTD=table[h];
 // delay(1);
 // PORTC|=0x10;
 // PORTC&=0xd0;
 // PORTD=table[h];
 // delay(1);
 // PORTC|=0x20;
 //}
 void main()
 {
 CLI();
 DDRD=0Xff;
 PORTD=0x8e;
 DDRC=0xf0;
 PORTC=0xff;
 u=0xff;
 TCCR1B=0X40;
 TCNT1H=0X85;
 TCNT1L=0XED;
 TIMSK=0x04;
 SREG=0x80;
 SEI();
 
 while(1)
 {;
 //key_press();
 //key_scan();
 // if(u==0)
 // {
 // show(p);
 // delay(5);
 // }
 // else
 // {
 // PORTD=0X8e;
 // }
 }
 
 }
 |