proteus 仿真時出現錯誤:Invalid opcode 0xFFFF at PC=0x004E,圖片如下
求高手解答,先謝謝了
具體程序如下:
//ICC-AVR application builder : 2012/7/24 11:03:31
// Target : M16
// Crystal: 8.0000Mhz
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
flash uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, //共陽極0~F的段碼
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
uchar cnt;
uint adc_v;
void delay(uint k) //延時約0.1ms
{
uchar m,n;
for(m=0;m<k;m++)
{
for(n=0;n<114;n++)
{;}
}
}
#pragma interrupt_handler timer1_compa_isr:7 //T/C0比較匹配中斷服務
void timer1_compa_isr(void)
{
cnt=0x01;
}
#pragma interrupt_handler adc_isr:15 //ADC轉換完成中斷服務
void adc_isr(void)
{
uint adc_data;
adc_data=ADCH; //讀取ADC轉換結果
adc_v=(ulong)adc_data*5000/1024; //換算成電壓值
}
void display(void)
{
uchar val1,val2,val3,val4;
val1=adc_v/1000;
val2=(adc_v/100)%10;
val3=(adc_v/10)%10;
val4=adc_v%10;
PORTD=0x01;
PORTC=tab[val1];
PORTC&=~BIT(PC7);
delay(10);
PORTD=0x02;
PORTC=tab[val2];
delay(10);
PORTD=0x03;
PORTC=tab[val3];
delay(10);
PORTD=0x08;
PORTC=tab[val4];
delay(10);
}
void main(void)
{
DDRA=0x00; //模擬量由PA0輸入
PORTA=0x00;
DDRC=0xFF;
PORTC=0xFF; //PORTC端口與LED段碼相連
DDRD=0xFF;
PORTD=0xFF;
TCCR0=0x0B; //內部時鐘,64分頻(8M/64=125Hz)
TCNT0=0x00;
OCR0=0xF9; //OCRO=0xF9(即249)
TIMSK=0x02; //允許T/C0比較中斷
ADMUX=0x40; //參考電源AVcc、ADC0單端輸入
SFIOR&=0x1F;
SFIOR|=0x60; //選擇T/C0比較匹配中斷為ADC觸發源
ADCSRA=0xAE;
SEI(); //開放全局中斷
while(1)
{
if(cnt==0x01)
{
display(); //LED掃描顯示
cnt=0x00;
}
}
|