• 大小: 30KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: attiny13  pwm  ad  

资源简介

这是我用attiny13做的pwm和ad采样程序,通过改变采样电压来控制占空比大小,调试成功!

资源截图

代码片段和文件信息

//main.c

#include 
#include 
//typedef unsigned char uint8;
//typedef unsigned int uint16;
#define uchar unsigned char 
#define uint unsigned int 
/*typedef enum
{
READ = 0
WRITE
}IIC_RW_TAG;

typedef enum
{
FALSE = 0
TRUE
}BOOLEAN;

typedef enum
{
NON_KEY = 0
KEY1
KEY2
}KEY_VALUE;*/

#define BIT(i) (1 << i)
#define ADC_PORT 2
//#define KEY3_PORT 0
//#define KEY4_PORT 1

#define LOW_ADC_LINE 0x155//0x186//0x01//
#define HIGH_ADC_LINE 0x2BB//0x2AA//0x3FE//

//#define GREEN 3
//#define RED 4

#define VOLUME_ADD 0x5
#define VOLUME_SUB 0xa

//#define RED_ON DDRB |=  (1 << RED) //输出低电平 测试:红灯亮
//#define RED_OFF DDRB &= ~(1 << RED) //输入,外部电阻上拉为高电平 测试:红灯灭
//#define GREEN_ON DDRB |=  (1 << GREEN) //输出低电平 测试:绿灯亮
//#define GREEN_OFF DDRB &= ~(1 << GREEN) //输入,外部电阻上拉为高电平 测试:绿灯灭


void Delay_ms(uint n);
//void Delay_IIC(uint16 n);

void ADC_init(void);
//KEY_VALUE Get_KEY_VALUE(void);

void sys_init(void);
int main(void);

void Delay_ms(uint n) //n = 0时,为最大延时
{
uint m = 250;

while(--n)
{
while(--m);
}
}

/*void Delay_IIC(uint16 n) //n = 0时,为最大延时
{
while(--n);
}*/


void ADC_init(void)
{
ADCSRA=0x00;

/***************************************************
//内部1.1v参考电压0通道

ADMUX ADC多路复其选择寄存器 - ADMUX
7   6     5    4  3  2   1    0
- REFS0 ADLAR  -  -  - MUX1 MUX0
____________________________________________
REFS0 | 参考电压选择
0     | Vcc 作为模拟参考电压
1     | 片内基准电压1.1V
--------------------------------------------
ADLAR = 0 右对齐
MUX1.MUX1:01  - ADC1

*******************************************************/
ADMUX = 0x01; //选择ADC1通道
ACSR = (1 << ACD); //禁用模拟比较器


/********************************************************************
ADCSRA:ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

7 - ADEN: ADC使能
6 - ADSC: ADC开始转换
5 - ADATE: ADC自动触发使能
4 - ADIF: ADC中断标志位
3 - ADIE: ADC中断允许
2..0 - ADPS2..0: ADC预分频选择
000 - 2 ; 001 - 2;010 - 4; 011 - 8;
100 - 16;101 - 32;110 - 64;111 - 128

*********************************************************************/

//使能ADC,终端允许自由模式时钟CLK/8
//0x86允许转换ADEN,ADSC,时钟128分频 75KHz@9.6MHz system clock
ADCSRA = (1 << ADEN) | 0x07;//| ( 1 << ADATE )
}

/*KEY_VALUE Get_KEY_VALUE(void)
{
KEY_VALUE  key_ret = NON_KEY;
uint16 adc_value1;
uint16 adc_value2;

ADC = 0;

ADCSRA  |=  (1 << ADSC); //启动AD转换
Delay_IIC(8);
loop_until_bit_is_set(ADCSRA ADIF); //方法1 等待AD转换结束
////loop_until_bit_is_clear(ADCSRA ADSC); //方法2 检测ADSC=0也行
ADCSRA |= (1 << ADIF); //写1清除标志位*/

/*******计算公式******************************************
ADC(ADCH+ADCL) = (Vin * 1024)/Vref
Vin :选定的输入因交上的电压,Vref选定的参考电源的电压,现为Vcc
********************************************************/
/*adc_value1 = ADC;

Delay_ms(20); //去抖动延时

ADCSRA  |=  (1 << ADSC); //启动AD转换
Delay_IIC(8);
loop_until_bit_is_set(ADCSRA ADIF); //方法1 等待AD转换结束
////loop_until_

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1119  2012-03-22 17:01  322attiny13 pass\armok01128594\.dep\main.o.d

     文件        110  2012-03-22 13:46  322attiny13 pass\armok01128594\1.pnproj

     文件         54  2012-03-22 13:46  322attiny13 pass\armok01128594\1.pnps

     文件       7620  2006-09-11 11:28  322attiny13 pass\armok01128594\ADC做的双按键_SCH.gif

     文件       5324  2012-03-22 17:01  322attiny13 pass\armok01128594\main.c

     文件         13  2012-03-22 17:01  322attiny13 pass\armok01128594\main.eep

     文件       5792  2012-03-22 17:01  322attiny13 pass\armok01128594\main.elf

     文件       1175  2012-03-22 17:01  322attiny13 pass\armok01128594\main.hex

     文件       9783  2012-03-22 17:01  322attiny13 pass\armok01128594\main.lss

     文件      12745  2012-03-22 17:01  322attiny13 pass\armok01128594\main.lst

     文件      15223  2012-03-22 17:01  322attiny13 pass\armok01128594\main.map

     文件       5504  2012-03-22 17:01  322attiny13 pass\armok01128594\main.o

     文件       1280  2012-03-22 17:01  322attiny13 pass\armok01128594\main.sym

     文件      14821  2006-08-31 08:41  322attiny13 pass\armok01128594\Makefile

     文件        782  2012-03-22 16:10  322attiny13 pass\armok01128594\pwm.h

     目录          0  2012-03-22 17:04  322attiny13 pass\armok01128594\.dep

     目录          0  2012-03-22 17:04  322attiny13 pass\armok01128594

     目录          0  2012-03-22 18:10  322attiny13 pass

----------- ---------  ---------- -----  ----

                81345                    18


评论

共有 条评论