|
大家好,我编了个AD转换的程序,发现进不去中断,请大家帮我看下哈
#include
#include
#include
unsigned char code lcd_code[]={lcd_0,lcd_1,lcd_2,lcd_3,lcd_4,lcd_5,lcd_6,lcd_7,lcd_8,lcd_9};
unsigned char tp_lcd_buf[6];
unsigned long ad_num;
void Delay(int n) { //延迟程序
unsigned int i,j;
for(i=0;i<=n;i++)
for(j=0;j<=25;j++);
}
void init_lcd(void) {
LCDCON=0xe2;
P0CTRL=0xff;
P2CTRL=0xff;
LCD_BUF0=BLANK;tp_lcd_buf[0]=BLANK;
LCD_BUF1=BLANK;tp_lcd_buf[1]=BLANK;
LCD_BUF2=BLANK;tp_lcd_buf[2]=BLANK;
LCD_BUF3=BLANK;tp_lcd_buf[3]=BLANK;
LCD_BUF4=BLANK;tp_lcd_buf[4]=BLANK;
LCD_BUF5=BLANK;tp_lcd_buf[5]=BLANK;
}
void init_AD(void) {
P3CON = 0x20; //设通道1为AD输入通道
ADSCR = 0x14; //单次转换,时钟为Fosc/16,通道1
}
void update_lcd_buf() {
tp_lcd_buf[0]=lcd_code[ ad_num%10]; //把tp_stone个位数的数值给tp_lcd_buf
ad_num/=10;
tp_lcd_buf[1]=lcd_code[ ad_num%10];
ad_num/=10;
tp_lcd_buf[2]=lcd_code[ ad_num%10];
ad_num/=10;
tp_lcd_buf[3]=lcd_code[ ad_num%10];
ad_num/=10;
tp_lcd_buf[4]=lcd_code[ ad_num%10];
ad_num/=10;
tp_lcd_buf[5]=lcd_code[ ad_num%10];
}
void flash_lcd(void) {
LCD_BUF0=tp_lcd_buf[0];//把tp_lcd_buf里的值给LCD_BUF寄存器
LCD_BUF1=tp_lcd_buf[1];
LCD_BUF2=tp_lcd_buf[2];
LCD_BUF3=tp_lcd_buf[3];
LCD_BUF4=tp_lcd_buf[4];
LCD_BUF5=tp_lcd_buf[5];
LCD_BUF6=BLANK;
}
void AD(void) interrupt 9
{
ADCIF = 0;
ad_num = ADCD;
}
void main(){
init_lcd();
init_AD();
EA = 1;
EADC = 1;
PADC = 1;
while(1){
update_lcd_buf();
flash_lcd();
}
}
|
|