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 + -
显示快捷键?