|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
M16的ADC怎么不行,幫我看看 |
| 作者:98dian 欄目:單片機(jī) |
程序功能:把AD值在數(shù)碼管上顯示出來(lái)(測(cè)試中只取低8位) 在測(cè)試中發(fā)現(xiàn)數(shù)碼管顯示亂碼。 程序如下: #include <iom16v.h> #include <macros.h> extern const unsigned CHAR ledbuff[]={0x0c,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned int adc_rel; void adc_init(void) { ADCSRA = 0x00; ADMUX = (1<<REFS0)|(1<<MUX1)|(1<<MUX0); ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1); SEI(); delay(); } #pragma interrupt_handler adc_isr:iv_ADC void adc_isr(void) { adc_rel=ADCL; ADMUX = (1<<REFS0)|(1<<MUX1)|(1<<MUX0); ADCSRA |= (1<<ADSC); } void delay(void) { int i; for(i=0;i<200;i++); } void DISPLAY(unsigned int k) { PORTB=ledbuff[k/1000]; PORTD=0xfe; delay(); PORTB=ledbuff[k/100%10]; PORTD=0xfd; delay(); PORTB=ledbuff[k/10%10]; PORTD=0xfb; delay(); PORTB=ledbuff[k%10]; PORTD=0xf7; delay(); } void main(void) { DDRB=0xff; DDRD=0xff; PORTB=0xff; PORTD=0xff; DDRA=0x00; PORTA=0x00; adc_init(); SEI(); while(1) { DISPLAY(adc_rel); } } * - 本貼最后修改時(shí)間:2006-4-18 15:26:28 修改者:98dian |
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |