我想用mega16自带的AD,且要两个通道不停转换,但不知道程序什么地方出问题了,用protues仿真AD通道只能一个变换,有时候甚至不能变换,求助
用的是icc+protues:
程序如下:
#include <iom16v.h> #include "string.h" #include "lcd1602.h" #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uint flag1=0,flag2=0,ms=0; ulong addata=0,add1=0,add2=0; uint kflag=0,kstate=1; int a=0;
uchar table1[]={"0000 0\0"}; uchar table2[]={"0000 0\0"};
//延时程序:系统时钟:8M static void delay1us(void) //1us延时函数 { asm("nop"); }
static void delaynus(unsigned int n) //n us延时函数 { unsigned int i=0; for(i=0;i<n;i++)delay1us(); }
static void delay1ms(void) //1ms延时函数 { unsigned int i; for (i=0;i<1140;i++); }
static void delaynms(unsigned int n) // n ms延时函数 { unsigned int i=0; for (i=0;i<n;i++) delay1ms(); } /*-------------定时器0定时中断初始化-----------*/ void timer0init(void){ //定时器0定时中断初始化 10m进入中断 TCNT0=178; TCCR0=0x05; TIMSK|=0x01; TIFR|=(1<<TOV0); }
void display1(ulong add){
table1[0]=add1/1000+'0'; table1[1]=add1%1000/100+'0'; table1[2]=add1%100/10+'0'; table1[3]=add1%10+'0'; DisplayListChar(0,0,table1); } void display2(ulong add){ table2[0]=add2/1000+'0'; table2[1]=add2%1000/100+'0'; table2[2]=add2%100/10+'0'; table2[3]=add2%10+'0'; DisplayListChar(0,1,table2); }
void main() { int a=0,b=0; /* //pwm初始化 DDRD|=0x31; //pwm端口初始化+确定键指示灯端口设置为输出 TCCR1A=0x53; //10位快速pwm,比较匹配时清零,N=256 COMA1:0为0时,端口为低电平 TCCR1B=0x19; OCR1A=13; //pwmA匹配值 // OCR1B=13; //pwmB匹配值*/ DDRA&=0xFC; //ad端口初始化 PORTA&=0xFC; ACSR |= 0x80; //禁用模拟比较器
//adc初始化 ADMUX=0xC0; //SFIOR&=0x1F; // SFIOR|=0x80; //选择T0溢出中断作为adc触发源 ADCSRA=0x07; //adc允许、自动触发转换、adc转换中断允许、adclk=62.5khz
LCD_Init();//1602初始化 DisplayListChar(0,0,table1); DisplayListChar(0,1,table2); SREG|=0x80; //开总中断 delaynms(1000); while(1){ ADMUX|=0xC2; ADCSRA=0xC7; while( (ADCSRA&0x40)==0); //delaynms(5); add1=ADCL; add1=add1+ADCH*256; ADCSRA=0x07; display1(add1); delaynms(5000); ADMUX|=0xC1; ADCSRA=0xC7; while( (ADCSRA&0x40)==0); // delaynms(5); add2=ADCL; add2=add2+ADCH*256; ADCSRA=0x07; display2(add2); delaynms(5000);
} }
这是protues仿真的电路:
ceshi3.rar
(15.88 KB, 下载次数: 12)
顺便贴下lcd1602的程序~
lcd.doc
(34 KB, 下载次数: 11)
|