adc_moni.c

来自「自己写的PWM 模拟比较等 AVR16的子程序 供大家参考」· C语言 代码 · 共 68 行

C
68
字号
#include<iom16v.h>
#define uchar unsigned char
#define LED_BIT_DDR     DDRB   //数码管 位选
#define LED_BIT_PORT   PORTB
#define LED_SEG_DDR     DDRD    //数码管 段选
#define LED_SEG_PORT   PORTD
uchar a=0,b=0,c=0;
uchar LED_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管位码0~9
#pragma interrupt_handler adc:15

void adc()
 { 
uchar addata;
addata=ADCH;
c=addata%10;
b=addata/10%10;
a=addata/100;
ADCSRA&=0xf7;
  }
 void delay_1ms()
 {
 unsigned int i;
 for(i=0;i<570;i++);
 }  
 void LED_display()
  {
  LED_SEG_PORT=LED_code[a];
  LED_BIT_PORT=0xfb;
delay_1ms();
  LED_BIT_PORT=0xff;//

  LED_SEG_PORT=LED_code[b];
  LED_BIT_PORT=0xfd;
delay_1ms();
  LED_BIT_PORT=0xff;//
 
  LED_SEG_PORT=LED_code[c];
  LED_BIT_PORT=0xfe;
 delay_1ms() ;
  LED_BIT_PORT=0xff;//

 
  }
void main()
{
int j;
LED_SEG_DDR=0xff;
LED_SEG_PORT=0xff;
LED_BIT_DDR=0xff; // LED端口初始化 定义输出,关LED显示
LED_BIT_PORT=0xff;
DDRA=0x00;       //通道输入无上拉
PORTA=0x00;
ADMUX=0X60;     //参考AVCC 左对齐 通道0
ADCSRA=0xe6;    //使能 开始转换 64分频 自动触发势使能
SFIOR=0X00;//连续转换模式
SREG=0X80;//开中断
ADCSRA|=0x08;
while(1)
 {
 j=50;
 while(j)
 {
 LED_display();
 j--;
 }
 ADCSRA|=0x08;
 }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?