|
我的mega128的熔丝位全是合理设置的,也没有设置与103兼容,程序是自动生成的,但为什么我的AD不运行啊?更奇怪的是我把#include <mega128.h>改成#include <mega16.>在mega16上就可以运行,可以进行AD转化!?
/****************************************************
Chip type : ATmega128L
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 1024
*****************************************************/
#include <mega128.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>
unsigned char buff_line_ad[10];
unsigned int adc_data,volage,time,adc_data_v;
// Timer 0 比较匹配中断服务,2ms定时
interrupt[TIM0_COMP]void timer0_comp_isr(void)
{
if(time++>200)
{time=0;
PORTB.1=~PORTB.1;//可以闪烁
}
}
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
// Read the AD conversion result
adc_data=ADCW;
PORTB.2=~PORTB.2; //不可以闪烁
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
PORTA=0x00;
DDRA=0x01;
PORTB=0x00;
DDRB=0x06;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
PORTE=0x00;
DDRE=0x00;
PORTF=0x00;
DDRF=0x00;
PORTG=0x01;
DDRG=0xff;
ACSR=0x80;
SFIOR&=0x1F;
SFIOR|=0x60;
// ADC initialization
// ADC Clock frequency: 62.500 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=0x47;
ADCSRA=0xAD;
// T/C0 初始化
TCCR0=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式
TCNT0=0x00;
OCR0=0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms
TIMSK=0x02; // 允许T/C0比较匹配中断
// LCD module initialization
lcd_init(16);
volage=1000; //我都赋初值为1000,上电也理应为1000啊,结果却是“v=0000mv"???????
adc_data_v=110;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
adc_data_v=(unsigned long)adc_data*5140/1024; //换算成电压值
if(adc_data_v!=volage)
{
volage=adc_data_v;
buff_line_ad[0]='v';
buff_line_ad[1]='=';
buff_line_ad[2]=volage/1000+48;
buff_line_ad[3]=(volage/100)%10+48;
buff_line_ad[4]=(volage/10)%10+48;
buff_line_ad[5]=volage%10+48;
buff_line_ad[6]='m';
buff_line_ad[7]='v';
buff_line_ad[8]='\0';
lcd_clear();
lcd_puts(buff_line_ad);
}
};
}
下面是熔丝位设置
熔丝位 (原文件名:熔丝位.GIF) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|